Farma serwisów WCF - jak sobie z tym radzić?

0

Witam

W ramach mojej ciekawości zbudowałem sobie serwis Windows Communication Foundation (załóżmy, że chodzi o serwis z użytkownikami - rejestracji, dane, usuwanie, logowanie, zmiana danych itd.)

Serwis działa świetnie z pełnym rynsztunkiem (odczyt/zapis z bazy danych, cache, walidacja, autentykacja, autoryzacja i tak dalej).

Załóżmy, że celem jest postawienie kilku takich serwisów (w razie gdyby klientów było tak dużo, że jeden by sobie nie radził z przepustowością / wydajnością).

Ponieważ nigdy tego nie robiłem, widzę tutaj całą masę! problemów

  • rozumiem, że dobór serwisu przez klienta będzie przydzielany na podstawie obciążeń poszczególnych serwisów - to jest do zrealizowania

  • jak sobie radzić z cache'em (wiele instancji serwisów = wiele cache), jak zabezpieczyć się przed konfliktami.

  • jak sobie radzić z danymi? (zakładamy, że każdy serwis ma swoją osobną bazę). Jeśli wybór serwisu jest dokonywany na podstawie obciążenia - co z danymi?

  • czy serwisy muszą się komunikować między sobą? Jeśli tak, w jaki sposób?

Czy ktoś mógłby mi polecić jakiś artykuł dot. tematu (moje szukanie zdało się nieskuteczne).

Jedyny pomysł, jaki znalazłem, który wydaje się dość ciekawy to kolejka zadań. Jeden główny serwis (nazwijmy go Master) buduje całą kolejkę zadań, a poszczególny serwisy "Slave" pobierają zadania. W ten sposób można poradzić sobie z obciążeniem. Co o tym myślicie?

Za wszelką pomoc - z góry dzięki.

0
Deti napisał(a)

Ponieważ nigdy tego nie robiłem, widzę tutaj całą masę! problemów

oj taak, zwlaszcza jak chcesz to zrobic recznie a nie jakims przewidzianym mevhanizmem - np. stawiajac serwer proxy z oficjalnym microsoft load balancig service for iis, czy jakos tak:)

Deti napisał(a)
  • rozumiem, że dobór serwisu przez klienta będzie przydzielany na podstawie obciążeń poszczególnych serwisów - to jest do zrealizowania

nie calkiem. ciezko jest zmierzyc faktyczne obciazenie maszyny. taki MLB (patrz wyzej) na przyklad calkowicie leje na to i przydziela wg. obciazenia ruchu sieciowego (ilosc pakietow/requestow) co jak sie latwo domyslic nijak sie ma do obciazenia samej maszyny. ale jesli znajdziesz dobry sposob na raportowanie obciazenia, tak ze nawet przy bliskim 0% czy 100% caly czas masz na biezaco i poprawnie raportowany stan - no to bomba!

Deti napisał(a)
  • jak sobie radzić z danymi? (zakładamy, że każdy serwis ma swoją osobną bazę). Jeśli wybór serwisu jest dokonywany na podstawie obciążenia - co z danymi?

zwykle wszystkie serwisy korzystaja z osobneog serwera na ktorym stoi baza danych (talk about bottleneck btw) albo kazdy z nich ma swoja slave-kopie bazy, okresowo lub na żądanie updateowana z master-db

Deti napisał(a)
  • czy serwisy muszą się komunikować między sobą? Jeśli tak, w jaki sposób?

zwykle - nie. a jeli juz naprawde musza, to w zwykle sposoby - albo wywoluja swoje metody na krzyz, albo pprzez dane na DB, albo wrecz otwieraja miedzy soba zwykle IPC jak tcp czy shmem jak na tej samej maszynie. pamietaj ze wciaz to sa po prostu zwykle programy

co do cache, loadbalancing i komunikacji -- wez pod uwage ze loadbalancing moze dzialac w kilku trybach - moze byc bardziej/mniej inteligentny. to zalezy z jakiego silnika korzystach i jaki jest cykl uzycia Twoich uslug. jelsi masz uslugi bez-sesyjne, to wlasciwie wystarczy Ci byle jakie rozpraszanie zadan na instancje uslugi. jesli masz sesyjne - to uwaga. tutaj albo loadbalancing musi byc swiadom sesji i strumien wywolan uslug z klienta A wysylac zawsze na instancje X i zadna inna, albo tez.... instacje uslug beda musialy zachowywac stan sesji i sobie przekazywac miedzy soba dane sesyjne w momencie gdy n-ty z rzedu request od klienta A nagle trafi do instancji Y zamiast X..

Deti napisał(a)

Jedyny pomysł, jaki znalazłem, (..)

a to dotyka problemu, ze loadbalancing moze dzialac na wielu warstwach.. wymysliles wlasnie zupelnie inny niz ten o ktorym pisalem wyzej - dzialajacym tylko i wylacznie w warstwie sieci, odbijajacy jedynie ruch zapytan http-request w te lub inna strone:) do opisanego powyzej nie jest potrzebne nic ale jest hm sredni. ten opisany przez Ciebie wymaga zmian w architekturze uslug, duuuzych struktur tylko na samo decydowanie kto-co-ma-robic-i-komu-zwrocic-wynik

1 użytkowników online, w tym zalogowanych: 0, gości: 1