820 likes | 970 Views
Komponentowe i rozproszone. Systemy rozproszone. System ≠ aplikacja. Aplikacja : jeden proces , jeden system op., jeden komputer System: wiele procesow , ( zwykle ) wiele systemów op. i wiele komputerów System = N* aplikacja => połączenia. Połączenia nie są bez znaczenia ….
E N D
Komponentowe i rozproszone Systemyrozproszone
System ≠ aplikacja • Aplikacja: jedenproces, jeden system op., jedenkomputer • System: wieleprocesow, (zwykle) wielesystemów op. iwielekomputerów • System = N*aplikacja => połączenia
Połączenianiesąbezznaczenia … Typowezałożeniadeweloperów (iarchitektów) dlasystemówrozproszonych: • Sieć jest niezawodna • Opóźnienianiesąproblemem • Pasmonie jest problemem • Sieć jest bezpieczna • Topologiasięniezmienia • Administrator zawszewie co robić • Kosztytransportudanychniesąproblemem • Sieć jest jednorodna Deutsch 94 Gosling 97
Połączenianiesąbezznaczenia … Typowezałożeniadeweloperów (I architektów) dlasystemówrozproszonych: • … • System jest atomowy/monolityczny • System jest skończony • Logikabiznesowamoże (ipowinna) byćscentralizowana Neward 06
3 wymiarysystemu • Scalability • Availiability • Reliability
Przykładowysklep Marketing Sklep Księgowość Spedycja Magazyn ObsługaKlientów
Marketing Sklep Księgowość Spedycja Magazyn ObsługaKlientów
Marketing Sklep Księgowość Spedycja Magazyn ObsługaKlientów
Możebyćgorzej? Towary Transakcje Marketing Sklep Spedycja Klienci Księgowość Magazyn ObsługaKlientów
To byłatylkojednaakcja … • Sąiinne: • Raporty • Przeceny • Przyjecienowychtowarów • Wysyłka • Zwrotyireklamacje * Liczbaużytkowników
Podejściesynchroniczne – powoli, ale przynajmniejdziała • Procesygłównieczekająnawyniki/zasoby/potwierdzenie • Deadlock/problemy w jednympodsystemiemożezdegradowaćcały system • Lepszysprzętczęstooznacza, żepoświęcamywięcejcykli (szybszego) procesoranaczekanie • Timeout – powodujeponowienieżądania (a stare możebyćjeszczeprzetważane) • System działa w developmencie a w produkcji (odrazulubnie) całośćpada
Podejściesynchroniczne - czasemniedziała … • Maintenance/awariajednegoserweramożespowodowaćzatrzymaniecałegosystemu • Przenosimyserwer - Jaknp. zmienićadresację w sieci? • Skalujemy system – jakdodaćdrugąinstancjęserwisumagazyn? • Co z utrzymywaniemstarychwersji ?
Zależności • Utrudniają development • Utrudniająwdrażanie • Ograniczająstabilność • Utrudniajązarządzanieiutrzymanie • Niemożnaichwyeliminować ale trzeba je ograniczać ...
Zależności (coupling) w kodzie • Powiązaniewynika z zalezności • Wywołaniefunkcjizalęzyodsygnaturyczylikodwywołujacyzależyoddefinicjifunkcji • Miaryzależności w kodzie • Ca – liczbaklas (funkcji), którezależąoddanejklasy (funkcji) • Ce - liczbaklas (funkcji), odktórychzależydanaklasa (funkcja)
Zależności (coupling) w systemach • Platformowe (protokół, format – interoperability) • Czasowe (żądanie - odpowiedź) • Przestrzenne (adresy – identyfikacja)
Kilkascenariuszy • Zmianaszczegółówimplementacyjnychserwisu • Zmiana (deplyment) komponentuodktóregozależywieleserwisów • Upadekbazy = timeout + utratadanych • Deadlock = rollback transakcji • Upadekserwisu = bladprzywywołaniu
Redukcjapowiązań ... jest złożona Platformowe Czasowe Przestrzenne Afferent Efferent
Jak ? • Ca, Ce – zależności w kodzie, SOA – opieramysięnakontraktach • Platformowe – użycie XML • Przestrzenny – wirtualneendpointy, routowanie (np. potypiekomunikatu) • Czasowe – asynchronicznekomunikaty
Wołaniesynchroniczne • Tradycyjne WS, RPC, COM, WCF (?) SerwisA SerwisB Wołaniesynchroniczne czekanie praca zwrot
Wołanieasynchroniczne • Typowaimplementacjatworzynowywątek, któryczekasynchronicznieiwykonuje callback (w swoimkontekście) • Wątekgłównyitakczekanawyniki (ale możeew. uruchomićkilkazapytań)
Wołaniajednokierunkowe • ASP.NET: oneway • WCF: IsOneWay=True • Kolejki
Wołaniajednokierunkowe • ASP.NET: oneway • WCF: IsOneWay=True • Kolejki Serwis Klient Wysyłaipracujedalej Id • Odpowiedź: • ekspozycja interfejsu przez klienta • pooling w oczekiwaniu na odpowiedź
Podejście request response (synch lubasynch) • Możliweproblemy
Upadekserwera DB App Tx [HTTP] $$ Order Call 1 of 3 Call 2 of 3 Krytyczny update dla Windows Rollback Co siedzieje z zamówieniem ?
Baza jest wyłączona DB App Tx Exception Down Zapis do logu [HTTP] $$ Order Call 1 of 3 Co siedzieje z zamówieniem?
Gdyprzydarzysie deadlock DB App Tx Exception A B Zapis do logu [HTTP] $$ Order Call 1 of 3 Call 2 of 3 Deadlock Co siedzieje z zamówieniem ?
Co zmiania messaging? Tx Q Receive App DB $$ Order Call 1 of 3 Call 2 of 3 Rollback Rollback Zamówieniewraca do kolejki
Wołaniausług vs. messaging A B C D $$ Order Niemożnawycofać [HTTP] Invoke DB WS Rollback Deadlock
Wołaniausług vs. messaging A B C D $$ Order [HTTP] Invoke DB Msg Messaging Gateway WS Przybłędziekomunikatniezostaniewysłany
Wzorzec: Adreszwrotny Oddzielnykanałdlaodpowiedzi Serwis B Serwis A Addreszwrotny Addreszwrotny Kiedyś w przyszłości
Adreszwrotny jest ważny PozwalanarównoważenieobciążeniaIubutworzeniepotokuobsługujacegozlecenia Service B Server 2 Service A Server 1 Service A Server 3 Request 0 Request 1 Response 1
Skorelowane Request/Response W bardziejskomplikowanychprzypadkach id umożliwiaskojarzenie req. i resp. Serwis B Serwis A Ticket (guid) Kiedyś w przyszłości Ticket (guid)
Publish / Subscribe • Zdarzenianapoziomiesystemowym • Wystąpieniezdarzeniaoznaczawysłaniekomunikatu • Obsługazdarzeniaodpowiadaobsłużeniukomunikatu • Zdarzeniapowinnybyćrozpatrywanenapoziomibiznesowym (zmieniłsiestanzamówienia, ktoś ma innyadres, rabtitd.)
Kolejnośćzdarzeń Zaakceptowane Rachunkowosc Sprzedaz Zaakceptowane Opłacone CzekanaOpłacone (którejużbyło) Nie ma zamówienia w DB Komunikatzostaje odrzucony Spedycja
Kolejnośćzdarzeń • Nienależyzakładaćkonkretnejkolejnościnadchodzeniakomunikatów • W przypadkuproblemówmoznazałożyćpróbęponownegoprzetworzeniakomunikatu w przyszłości • Zyski to m.in. Lepszaskalowalność Większaodpornośćnabłędy
Własnośćkomunikatu • Co oznaczawłasność ? • W ReqRespniezabardzowiadomokto jest wlaścicielemformatu/protokolu • W PubSubwłaścicielem jest publikujący
Subscribe • Abyzredukowaćpowiazaniaprzestrzenne (spatial coupling) niezbędne jest mapowaniemiędzytypemkomunikatuiadresemsewisu • Subskrypcjaoznaczagotowość do obsługidanegotypukomunikatów • rejestracjahandleraoznaczawłaśniesubbskrypcje • (możeprzekładaćsięnawysłaniewewnętrznychkomunikatów w obrębieinfrastruktury) • W takimwypadkuzapamietywany jest adreshandlera.
Subscriber Publisher Subscribe Subscriber Subscriber Subscriber Subscriber
Subscriber Publisher abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh Subscriber Subscriber Subscriber Subscriber
Stylarchitektoniczny An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style. Fielding 2000 • Zbiórwskazówek nt. tego co jest a co nie jest dozwolone.
SOA jest stylemarchitektonicznym • SOA opierasięnakomunikatach • Soazakładaautonomięserwisów • … • Dwanajczestszepodejscia Bus vs. Broker służąredukcjipowiązańprzstrzennych
Stylarchitektoniczny Broker Inicjatorżądausługiodbrokera Broker obsługujepokoleiżądaniaiprzekazuje je dalej Service B Service C Service A Broker Service D
Cechy Broker-a • Broker jest fizycznieodseparowany • Całakomunikacjaodbywasięprzezniego • Broker musiobsłużyćupadkiserwisówiprzekazywaniewiadomości • Broker stanowi “single point of failure” – musibyćwydajnyiniezwyklestabilny • Technologie: BizTalk, CORBA, UDDI
Zalety Broker-a • Dziekiskoncentrowaniukomunikacji w jednymmiejscułatwozarządzaćcentralniekonfiguracją • Łatwe jest uzyskanieinteligentnegoprzekazywaniadanych, tramsformacje, orkiestracjeitd. • Niewymagawieluzmian w serwisach
Wady Broker-a • Naruszaautonomięserwisów • Stanowi “single point of failure” i b. często jest wąskimgardłem
StylarchitektonicznySzyna • Źródłaiujściazdarzeńkomunikująsięzapośrednictwemkanałów w szynie • Źródłoumieszczakomunikaty (zdarzenia) w kanale a ujscie jest notyfikowaneodostępnościkomunikatu Source Sink Bus Sink Source
TopologiaSzyny App App App App Bus.dll Bus.dll Bus.dll Bus.dll App App App App Bus.dll Bus.dll Bus.dll Bus.dll