2010-06-10 9 views
9

Pytanie o to, jak można wykorzystać funkcję pamięci podręcznej AppFabric.Pytanie o to, jak można wykorzystać funkcję pamięci podręcznej AppFabric

Przepraszam, że zadałem pytanie, na które powinienem móc odpowiedzieć z dokumentacji, ale przeczytałem, przeczytałem i przeszukałem i nie mogę odpowiedzieć na to pytanie, co prowadzi mnie do przekonania, że ​​mam fundamentalne błędne zrozumienie tego, co AppFabric funkcje buforowania są przeznaczone dla.

Pracuję dla geograficznie rozproszonej firmy. Mamy konkretną aplikację, która została oryginalnie napisana jako aplikacja klient/serwer. Jest tak ogromny i krytyczny z punktu widzenia biznesu, że chcemy zrobić krok dla dziecka, przekształcając go w lepiej zaprojektowane rozwiązanie.

Jednym z pomysłów było przekonwertowanie aplikacji, aby odczytała jej dane, używając wywołań WCF do współdziałającego serwera WWW, który buforowałby komunikację z bazą danych w Stanach Zjednoczonych. Charakter aplikacji jest taki, że wszyscy będą mieli tendencję do oglądania tych samych 2000 rekordów z jedynie sporadycznymi aktualizacjami, a aktualizacje będą dokonywane przez ograniczoną grupę użytkowników.

Miałem nadzieję, że mechanizm pamięci podręcznej AppFabric pozwoli mi ustawić jedną globalną pamięć podręczną, a gdy użytkownik w Azji, na przykład, zażąda danych, które nie były w pamięci podręcznej lub były nieaktualne, które serwer WWW odczytałby z bazy danych w USA, przekaż dane użytkownikowi, a następnie zaktualizuj pamięć podręczną, która będzie propagować te dane na inne serwery internetowe, aby wiedziały, że same nie będą mogły wrócić do bazy danych.

Czy AppFabric może działać w ten sposób, czy powinienem po prostu poprosić serwery o odzyskanie własnych danych z bazy danych?

Odpowiedz

11

Więc jeśli dobrze rozumiem cię, masz:

  • serwer bazy danych w USA
  • serwerów internetowych na całym świecie?
  • (potencjalnie) AppFabric cache w USA

AppFabric daje potencjalnie dwa sposoby rozwiązania tego scenariusza.

  1. lokalny cache
    W AppFabric konfiguracji, klienci mają możliwość posiadania lokalnej pamięci podręcznej obiektów, gdzie pierwsze wezwanie do pamięci podręcznej dla obiektu umieszcza obiekt w lokalnej pamięci podręcznej oraz kolejnych wniosków o które obiekt jest spełniony z lokalnej pamięci podręcznej. Obiekty są usuwane z lokalnej pamięci podręcznej albo z powodu limitu czasu, albo dlatego, że główna pamięć podręczna powiadamia lokalną pamięć podręczną, że obiekt jest nieaktualny. Skonfiguruj to w swoim web.config:

    <dataCacheClient> 
        <localCache isEnabled="true" sync="NotificationBased" ttlValue="300" /> 
    </dataCacheClient> 
    

    W twoim przypadku twoje serwery internetowe są klientami; gdy jeden z użytkowników azjatyckich zażąda obiektu, lokalna pamięć podręczna serwera WWW Asia będzie wówczas przechowywać kopię tego obiektu. Aktualizacje tego obiektu byłyby propagowane do głównej pamięci podręcznej, a w konfiguracji opartej na powiadomieniu kopie tego obiektu w lokalnych pamięciach podręcznych na innych serwerach sieci Web byłyby unieważniane, tak aby następne żądanie zostało spełnione z głównej pamięci podręcznej, a następnie lokalna pamięć podręczna zostanie odświeżona wraz z zaktualizowanym obiektem.

  2. Kolokacja pamięci podręcznej AppFabric na serwerach WWW
    Nic nie stoi na przeszkodzie, aby serwery internetowe były również serwerami pamięci podręcznej AppFabric! W tej konfiguracji nie używałbyś lokalnej pamięci podręcznej, ponieważ nie ma to sensu, kiedy główna pamięć podręczna jest już lokalna dla twojego klienta.Zapewniłoby to jednak, że twój klient zawsze pobiera najnowszą wersję buforowanego obiektu z pamięci podręcznej.
    Musisz jednak uważać na obciążenia sieciowe, ponieważ ta konfiguracja może oznaczać, że twój serwer internetowy USA zawsze czyta obiekty z pamięci podręcznej z (powiedzmy) twojego europejskiego serwera internetowego, co może spowolnić oba serwery, gdy próbują one służyć żądania pamięci podręcznej, a także ruch internetowy.

W obu przypadkach należy pamiętać, że podczas gdy klienci otrzymają najnowszą wersję pamięci podręcznej obiektu, nie ma wytrwałość w AppFabric i musisz napisać swoje zmiany w bazie danych w tym samym czasie, jak zaktualizować obiekt buforowany, w przeciwnym razie istnieje ryzyko odczytu nieaktualnych danych do pamięci podręcznej.

+0

Phil, dziękuję bardzo za twoją (bardzo szczegółową) odpowiedź. To pomaga zestalić się tak bardzo. –

+3

Firma Microsoft nie zaleca używania nie dedykowanych hostów dla węzłów Cache AppFabric, szczególnie dla hostów usług IIS, z powodu problemów z rywalizacją podczas ładowania. – andrewbadera

+1

"Obiekty są usuwane z lokalnej pamięci podręcznej z powodu przekroczenia limitu czasu lub ponieważ główna pamięć podręczna powiadamia lokalną pamięć podręczną, że obiekt jest nieaktualny." - Jednak lokalne pamięci podręczne kontaktują się z głównymi pamięciami podręcznymi w oparciu o interwał sondowania (domyślnie 300 sekund). Jakiekolwiek zmiany obiektu w głównej pamięci podręcznej między komunikatami o wykryciu nie będą pobierane przez lokalne pamięci podręczne, w związku z tym będą wydawać kopie wstrzymania przez krótki czas po aktualizacji głównej pamięci podręcznej. – redcalx

Powiązane problemy