2009-08-09 7 views
8

Na memcached stronie mówi, że memcached jest rozproszoną pamięcią podręczną. Oznacza to, że może on działać na wielu serwerach i utrzymywać pewną spójność. Kiedy składam żądanie w silniku aplikacji Google, istnieje duże prawdopodobieństwo, że żądanie w tej samej grupie encji będzie obsługiwane przez ten sam serwer.Czy memcached współużytkuje wszystkie serwery w wyszukiwarce Google?

Moje pytanie brzmi, powiedzmy, że były dwa serwery obsługujące moją prośbę, czy widok memcached z tych dwóch serwerów jest taki sam? To znaczy, czy rzeczy, które umieszczam w memcached na jednym serwerze odzwierciedlone w memcached instance dla drugiego serwera, czy te dwie całkowicie oddzielne instancje memcached (po jednym dla każdego serwera)?

W szczególności chcę, aby każdy serwer rzeczywiście uruchamiał własne wystąpienie memcached (bez replikacji w innych memcached instances). Jeśli jest tak, że te dwie memcached instancje aktualizują się nawzajem dotyczące zmian w nich dokonanych, czy istnieje sposób, aby to wyłączyć?

Przepraszam, jeśli te pytania są głupie, ponieważ właśnie zacząłem o tym czytać, ale są to początkowe pytania, na które natknąłem się. Dzięki.

Odpowiedz

12

App Engine naprawdę nie używa memcached, ale raczej reimplementacji zgodnej z API (głównie przez same guy, jak sądzę - w jego "20% czasu" ;-).

Wartości w pamięci podręcznej mogą znikać w dowolnym momencie (przez jednoznaczne wygaśnięcie, awarię na jednym serwerze lub z powodu niedoboru pamięci, w którym to przypadku są one eksmitowane w najmniej ostatnio używanym zamówieniu itp.), Ale jeśli nie t znikają, są spójne, gdy są oglądane przez różne serwery.

2

Zwykle memcached nie współdzieli danych między serwerami. Serwer aplikacji przydziela klucz do wybrania serwera z memcached, a następnie komunikuje się z tym serwerem, aby uzyskać lub ustawić dane.

4

Wybrany serwer memcached nie jest zależny od grupy encji, której używasz (grupa encji jest konceptem z magazynu danych, innej bestii).

Każdy serwer uruchamia własną instancję memcached, a każdy serwer przechowuje procent obiektów przechowywanych w memcache. Sposób działania polega na tym, że kiedy używasz memcached API do przechowywania czegoś pod danym kluczem, wybierany jest serwer z pamięcią (na podstawie klucza).

Nie ma replikacji między memcached wystąpień, jeśli jedno z tych pól jest w dół, tracisz 1/N swoich memcached "danych (N to liczba memcached wystąpień uruchomionych w AppEngine).

0

siedzibą w co wiem, istnieje tylko jedna instancja z Memcache z was całej aplikacji, może istnieć wiele instancji kodzie systemem każdy z ich pamięci, a wiele magazyn danych na całym świecie, ale jest tylko jeden serwer Memcache na raz, i pamiętaj, że ta usługa jest podatna na awarię, nawet nie ma dla niej SLA.

Powiązane problemy