2012-05-26 14 views
32

Jestem początkujący w uczeniu się memcached. Memcached serwer zdezorientował mnie najbardziej. Czy mogę zobaczyć go jako pojedynczy serwer, tak jak serwer WWW? Jestem również zdezorientowany relacją między memcached server i client, czy znajdują się one na różnych komputerach?Co to jest memcached server

Odpowiedz

49

Zgadzam się z większością rzeczy, na które @phihag odpowiedział, ale muszę wyjaśnić pewne kwestie.

Memcached przechowuje dane według klucza (phihag nazwał go id, nie mylić z idami bazy danych). Dane mogą mieć różne rozmiary, więc możesz przechowywać małe bity (np. 1 rekord wyciągnięty z bazy danych) lub możesz przechowywać ogromne porcje danych (np. Setki rekordów lub całe gotowe strony html).

Memcached to nie jest zwykle używany na tym samym komputerze co serwer aplikacji, ponieważ jest przeznaczony do użycia przez TCP (byłby dostępny przez gniazda, gdyby był zaprojektowany do pracy na tym samym serwer) i został zaprojektowany jako serwer łączący.

Część z puli jest interesująca - możesz mieć 10 maszyn z systemem Memcached, przydzielając w ten sposób maksymalnie 10 GB pamięci RAM. 10 * 10 = 100 GB pamięci RAM.

Po zapisaniu wartości w Memcached tylko jeden (losowo lub za pomocą niektórych algorytmów) serwerów przechowuje ją. Gdy spróbujesz odczytać wartość z Memcached, serwer, który ją zapisał, wyśle ​​ci ją.

Rzeczywiście,można umieścić wszystkie bazy danych/memcached/application/fileserver na tym samym komputerze, i zazwyczaj robisz to dla ciebie piaskownicy rozwoju. Ale Ty też możesz można umieścić na osobnej maszynie i każdej innej kombinacji tych dwóch.

Jeśli potrzebujesz tylko jednego serwera Memcached, prawdopodobnie wszystko będzie w porządku z hostowaniem go na tym samym komputerze co kod aplikacji.

Jeśli zaczniesz korzystać z serwera pamięci podręcznej frontonu, takiego jak lakier lub skonfigurujesz NginX jako serwer pamięci podręcznej frontonu, będziesz musiał skonfigurować niektóre serwery Memcached do przechowywania danych, które są buforowane przez frontowe pamięci podręczne serwerów. .

Jeśli rozpowszechniasz bazę danych na wielu serwerach i serwerach plików w sieci CDN, oznacza to, że aplikacja obsługuje wiele danych w krótkim czasie, więc potrzebujesz dużo pamięci RAM, której nie można dostępne na jednym serwerze aplikacji.

A ponieważ rozszerzenie puli pamięci dla serwera Memcached jest tak proste, jak dodanie adresu IP nowego serwera do listy, będziesz skalować w poziomie, tak jak w wielu serwerach (co jest prawdziwym typowym zastosowaniem Memcached).

+2

Niesamowita odpowiedź. To bardzo mi pomaga. Dziękuję i również @phihag. –

+0

@AllenJee możesz zaznaczyć odpowiedź jako zaakceptowaną? –

+0

w jaki sposób serwer Memcached tworzy kopie zapasowe swoich danych? – trillions

22

Serwer memcached jest Program który zarządza dane memcached sklepach (nie mylić z maszynie, które mogą być również zwanym serwerem). Teoretycznie może działać na dowolnym komputerze. Jednak zazwyczaj działa na tym samym komputerze, na którym działa główna aplikacja.

Aplikacja następnie używa swojego memcached klienta, aby porozmawiać z memcached serwera i poprosić o zawartość buforowaną. Jest to szybciej niż odpytywanie danych z tradycyjnej bazy danych, ponieważ

  1. Serwer memcached tylko mapuje identyfikatory na wartości i nigdy nie musi skanować całą tabelę
  2. memcached protokół jest prostsze. Serwer nie musi analizować kodu SQL, a klient nie musi go tworzyć.
  3. Ponieważ memcached nie wymaga niezawodności bazy danych (należy pamiętać o tworzeniu kopii zapasowych, izolowaniu błędów, klastrach, zabezpieczeniach itp.), Można go uruchomić na tym samym komputerze, na którym działa aplikacja. Chociaż można uruchomić bazę danych na tym samym komputerze, na którym działają aplikacje, z tego powodu jest ona niezadowolona.
+2

Dziękuję bardzo! Aplikacja komunikuje się z klientem memcached, a następnie klient żąda od memcached serwera uzyskania danych. Zazwyczaj aplikacja, memcached client i memcached server znajdują się na tym samym komputerze. I różni klienci memcached mogą komunikować się z innymi serwerami memcached, które działają na różnych komputerach zgodnie z ich protokołem. Czy powyższe jest prawidłowe? –

+1

Tak, właśnie to. – phihag

+1

Czy mogę podzielić je na dwie części? Jednym z nich jest serwer WWW, który zawiera aplikację, memcached klienta i memcached serwera. Drugim jest serwer bazy danych. –