Skip to main content

Laboratorium 5

Zadania do wykonania

Zadanie 1: Stwórz w języku Python prosty serwer WWW, który będzie równoważył obciążenie między kilkoma serwerami backendowymi za pomocą metody Weighted Round Robin. Utwórz trzy serwery backendowe o różnych "wagach" (np. 5, 3, 2), symulując różne moce obliczeniowe. Zaimplementuj load balancer, który przydziela żądania do serwerów zgodnie z przypisanymi wagami. Umożliw zmianę wag serwerów w trakcie działania aplikacji (np. poprzez plik konfiguracyjny lub interfejs użytkownika). Implementuj prosty mechanizm monitorujący liczbę obsłużonych żądań przez każdy serwer. Przeprowadź testy, wysyłając do serwera dużą liczbę żądań i sprawdź, czy obciążenie jest rozkładane zgodnie z wagami.

Zadanie 2: Napisz w języku Python prosty load balancer, który kieruje żądania do serwerów backendowych na podstawie metody IP Hash. Utwórz dwa lub więcej serwerów backendowych. Zaimplementuj funkcję haszującą adres IP klienta i na jej podstawie przydzielaj żądania do serwerów. Upewnij się, że żądania od tego samego klienta (adresu IP) zawsze trafiają do tego samego serwera, o ile serwer jest dostępny. W przypadku awarii serwera, load balancer powinien przekierować żądania klientów do innych dostępnych serwerów. Symuluj żądania z różnych adresów IP (możesz zmieniać adresy w kodzie klienta) i sprawdź, czy load balancer przydziela je poprawnie.

Zadanie 3: Napisz program w języku Python, który symuluje działanie metody Least Connections w równoważeniu obciążenia. Symuluj trzy serwery, każdy z własnym licznikiem aktywnych połączeń. Implementuj funkcję, która przydziela nowe zadanie do serwera z najmniejszą liczbą aktywnych połączeń. Generuj losowe zadania, które mają różny czas przetwarzania (np. losowy czas od 1 do 5 sekund). Wyświetlaj aktualny stan serwerów (liczbę aktywnych połączeń) po przydzieleniu każdego zadania. Uruchom symulację z kilkunastoma zadaniami i obserwuj, jak zadania są przydzielane do serwerów.

Zadanie 4: Napisz prosty skrypt w języku Python, który przydziela zadania do serwerów metodą Round Robin. Załóż, że masz trzy serwery (możesz reprezentować je jako elementy listy). Implementuj funkcję, która przydziela kolejne zadania do serwerów w sposób cykliczny. Stwórz listę zadań (np. liczby od 1 do 10). Przeiteruj przez listę zadań i przypisz każde zadanie do serwera zgodnie z metodą Round Robin. Po przydzieleniu zadań wyświetl, które zadania trafiły do których serwerów.

Materiały

📄 Pobierz PDF LAB-5