2010-05-23 15 views
7

Myślałem o używaniu memcached do przechowywania sesji zamiast mySQL, co na początku wydawało mi się dobrym pomysłem.Podejście do sesji memcached

Jeśli chodzi o część awaryjną wykorzystywania memcached serwerów, to jest trochę niepokojące, że moje sesje przestaną działać, jeśli memcached będzie w trybie offline. Z pewnością wpłynie to na moich użytkowników.

Istnieje kilka technik, które już wykorzystujemy, aby zredukować przełączanie awaryjne, w tym dysponowanie pulą serwerów, które można zrekompensować w przypadku przestoju, wykorzystując shardowanie/spójne mieszanie w puli serwerów i tak dalej. Dokonalibyśmy również pewnego rodzaju zgrabnej degradacji, która mówi użytkownikom, że coś poszło nie tak i mogą ponownie zalogować się, w przypadku ich wyrzucenia z powodu awaryjnego przełączania serwerów.

W jaki sposób ludzie zazwyczaj radzą sobie z tymi problemami podczas przechowywania sesji na memcached serwerach?

Odpowiedz

3

Można utworzyć bezpieczną metodę, korzystając zarówno z db, jak i memcached. Sprawdź, czy twój memcached obiekt znajduje się w pamięci innego sesja przechowywania w db, a następnie utworzyć instancji memcache. Wystarczy upewnić się, gdy wylogować/wylogować, to wypłukuje/usuwa memcached ...

więc sprawdź memcached pierwsze, jeśli nie powiedzie się, należy sprawdzić db ... :)

+0

Smart! Trochę więcej kodu, ale lepsza wydajność. Ja lubię! – Industrial

9

Po pierwsze, jeśli umieścisz coś tylko w memcache, powinieneś go zgubić. Na wszystko inne jest trwałe przechowywanie.

Po drugie, memcached po prostu nie zawodzi bardzo często. Nie ma żadnych ruchomych części, takich jak talerze dysku. Jedyne przypadki, w których straciłem sesje, były spowodowane ponownymi uruchomieniami aktualizacji jądra. Ale utrata tych sesji nie była wielką sprawą z powodu pierwszego punktu.

Aby odpowiedzieć bezpośrednio na twoje pytanie, jeśli dane zerowe można zgubić, zapisanie go w sesji memcache jest tylko w porządku. Jeśli nie można go zgubić, przechowuj go w pamięci trwałej, a może buforuj go w pamięci memcache, aby uzyskać szybkość.

3

Każdy, kto rozważa to, powinien przeczytać Dormando's session post. Ma wszystkie szczegóły, które możesz chcieć.

+0

Hi! Świetny link! – Industrial

+0

404 na razie, proszę, jeśli masz jakieś aktualizacje – Sekai

Powiązane problemy