350 likes | 461 Views
Enterprise Corba. Prezentacja seminaryjna T. Pieciukiewicz R. Hryniów . Wydajność. Prędkość działania konkretnej operacji zależy od: Ilości RMI niezbędnych do jej zrealizowania, Ilości danych przekazywanych w każdym wywołaniu, Kosztach marshallingu danych. Przykład.
E N D
Enterprise Corba Prezentacja seminaryjna T. Pieciukiewicz R. Hryniów
Wydajność • Prędkość działania konkretnej operacji zależy od: • Ilości RMI niezbędnych do jej zrealizowania, • Ilości danych przekazywanych w każdym wywołaniu, • Kosztach marshallingu danych.
Przykład • Pobieramy z serwera tablicę obiektów w celu wyświetlenia. • Wariant pierwszy: • Pobieramy sekwencje referencji do obiektów • Dla każdego obiektu pobieramy interesujące nas dane. • ZALETY: • Wszystkie działania wykonywane są tylko na obiektach • Zawsze mamy aktualne dane
Przykład cd. • WADY: • Duży koszt operacji w RMI – mamy 1 + n*m wywołań (n- liczba obiektów, m-liczba atrybutów). • Referencje do obiektów mają najwyższy koszt marshallingu (porównanie kosztów marshallingu dalej)
Przykład cd. • Wariant drugi: • Pobieramy sekwencję struktur zawierających interesujące nas dane. • Jeżeli potrzebujemy referencję do jednego z obiektów pobieramy ją na podstawie struktury. • ZALETY: • Mała liczba wywołań – dokładnie jedno – w celu pobrania danych • Mniejsza liczba utworzonych obiektów (poważna zaleta w niektórych ORBach) • Mniejsze koszty marshallingu • WADY: • Potrzeba wykonania dodatkowej operacji w celu pobrania obiektu. Nie wszystkim musi się to podobać.
Przesyłanie dużej ilości danych • Użycie iteratorów:
Przesyłanie dużej ilości danych • Metoda przydatna przy przesyłaniu obrazów (lub innych danych binarnych). • Zalecana również przy przesyłaniu większej ilości struktur.
Messaging service – po co? • Przydatna jest możliwość przekazywania informacji z serwera do klienta (klientów) bez żądania ze strony klienta. • Np. aby informować klienta o aktualizacji danych. Jest to lepsze od odpytywania serwera przez klienta co ustalony okres czasu – zmniejsza obciążenie serwera i ruch w sieci.
Messaging service - kanały • Klienci zapisują się do kanałów informacyjnych, deklarując swoje zainteresowanie wiadomościami różnych kategorii. • Otrzymują tylko potencjalnie interesujące ich wiadomości. • Możliwość filtrowania wiadomości z określonego kanału.
Store and Forward • Zapewnia dotarcie wiadomości do klienta nawet jeśli ten nie był aktywny w momencie rozsyłania wiadomości (po rejestracji w systemie otrzymuje wszystkie oczekujące na niego wiadomości).
Messaging service - implementacje • VisiBroker • Orbix • Niektóre darmowe (np. JavaOrb)
Bezpieczeństwo • Security Service • Level 1: • Autentykacja użytkownika, • Bezpieczne wywoływanie metod (działające na poziomie interfejsów – tzn. deklarujemy bezpieczeństwo dla wszystkich obiektów implementujących dany interfejs), • Audyt.
Bezpieczeństwo cd. • Level 2 (brak pełnej implementacji): • Dynamiczna kontrola siły zabezpieczeń, • Dokładniejsza kontrola uprawnień • Możliwość zdobycia przez aplikację informacji o aktualnie obowiązujących zasadach bezpieczeństwa. • SecIOP – IIOP uzupełnione o bezpieczeństwo • Corba/Firewall Specification
Bezpieczeństwo cd. • ORB-SSL (może funkcjonować bez pozostałych serwisów bezpieczeństwa) • Autentykacja, • Szyfrowanie danych, • Integralność danych (zabezpieczenie przed zmianami w czasie transportu),
Transakcje • Sterowane przez klienta lub przez serwer. • Transakcje sterowane przez serwer – niewidoczne dla klienta. • Transakcje sterowane przez klienta – wywołania konkretnych metod sterujących transakcjami.
Transakcje rozproszone • Object Transaction Monitor – integruje CORBA z monitorem transakcji. • Wymagania: • Wsparcie dla bezpieczeństwa • Wsparcie dla równoważenia obciążenia • Kontrola przepływu wywołań (wielotransakcje!)
Zarządzanie pamięcią – zwalnianie obiektów • Możliwe polityki zwalniania obiektów: • Explicite zwalnianie obiektów przez klienta • Zamknięcie połączenia przez klienta • Okresowe przeglądanie obiektów w celu wyłonienia kandydatów do usunięcia • Przekroczenie progu ilości aktywnych obiektów • Podczas tworzenia nowego obiektu • Zewnętrzne
Wybór obiektów do zwolnienia • Najdłużej nieużywany • Po zakończeniu czasu wymaganej aktywności • Najstarszy obiekt
Skalowalność – limity połączeń • ORBy mają limit jednoczesnych połączeń (zależny od implementacji, np. 1000). • Co zrobić jeśli limit może zostać przekroczony? • Zamykanie połączeń – ze strony klienta (np. nie będzie na dłuższy czas potrzebne) lub serwera (długa nieaktywność klienta). • Koncentratory.
Wielowątkowe serwery • Wielowątkowość może uratować nas przed zakleszczeniem w pewnych wypadkach. • Potencjalnie większa wydajność przy wieloprocesorowych maszynach. • Polityki podziału na wątki: • Thread-per-Request • Thread-per-Client (Connection) • Thread-per-Object • Thread Pool
Równoważenie obciążenia • Zrównoważenie obciążenia wszystkich serwerów danej aplikacji. • Zmniejszenie strat w wypadku awarii jednego z serwerów. • Ominięcie ograniczeń sprzętowych i programowych (np. limitu połączeń). • Związane z podziałem (poziomym lub pionowym) aplikacji lub replikacją.
Polityki migracji klienta • Na operację • Na transakcję • Na jednostkę pracy • Na sesję
Równoważenie nie jest darmowe • Koszt wyszukania najmniej obciążonego serwera (czas) • Koszt synchronizacji serwerów (czas) • Koszt uruchomienia nowych serwerów (czas, pieniądze!) • Koszt testowania procedur równoważących (czas, pieniądze!) • Inne koszty (czas?, pieniądze?)
CORBA a równoważenie obciążenia • Partycjonowanie poziome – realizacja przy pomocy Naming Service (lub podobnych). • Pionowe – na poziomie BD i aplikacji. • Replikacja – na poziomie ORB (brak specyfikacji) • Każdy dostawca komercyjny proponuje własne rozwiązania.
Odporność na awarie • Odporność na awarie -> odporność systemu na awarie spowodowane czynnikami takimi jak: • Awaria sprzętu lub systemu • Awaria sieci • Błędy w aplikacji • Sabotaż, klęski żywiołowe itd...
Środki pozwalające uzyskać odporność • Replikacja serwerów i BD • Cold Backup (czekamy na awarię, po wystąpieniu startujemy nowy serwer) • Warm Standby (serwer zapasowy działa cały czas i synchronizuje się z głównym) • Hot Standby (grupa serwerów realizuje równolegle zlecenia klienta).
CORBA i odporność • Brak specyfikacji usług, protokołów itp. • Odporność na poziomie transportu (ORB) zależy od konkretnego produktu, • Odporność na wyższym poziomie zależy od rozwiązań organizacyjnych i konkretnych aplikacji.
Bibliografia • Dirk Slama, Jason Garbis, Perry Russel „Enterprise Corba” • Odrobina własnego doświadczenia