2013-03-17 19 views
39

Nie mam pojęcia o rozproszonej pamięci podręcznej. Wiem co to jest z wyszukiwarki Google. Rozproszona pamięć podręczna może obejmować wiele serwerów, dzięki czemu może się zwiększyć rozmiar i wydajność transakcyjną. Jednak tak naprawdę nie rozumiem, jak to działa i jak rozpowszechnia dane.Czym jest rozproszona pamięć podręczna?

Załóżmy, że mamy danych 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 i dwa serwery z pamięcią podręczną A i B. Jeśli stosujemy rozproszonej pamięci podręcznej, po czym jedno z możliwych rozwiązań jest to, że danych 1, 3, 5, 7, 9 są przechowywane w pamięci podręcznej serwera A, 2, 4, 6, 8, 10 są przechowywane w pamięci podręcznej serwera B.

Czy to prawda, czy też źle to zrozumiałem?

Drugie pytanie jest takie, że zwykle słyszałem słowo węzeł serwera. Co to jest? W powyższym przykładzie Serwer A jest węzłem serwera, prawda?

trzecie pytanie, czy serwer (powiedzmy Serwer A) idzie w dół, co możemy z tym zrobić? Mam na myśli, jeśli mój powyższy przykład jest poprawny, nie możemy uzyskać danych 1, 3, 5, 7, 9 z pamięci podręcznej, gdy serwer A jest wyłączony, to co może w tym przypadku zrobić serwer Cache?

Odpowiedz

28
  1. Tak, połowa danych na serwerze a, a połowa na serwerze b byłaby rozproszoną pamięcią podręczną. Istnieje wiele metod dystrybucji danych, choć jakaś mieszanka kluczy wydaje się być najbardziej popularna.

  2. Warunki serwer i węzeł są zasadniczo wymienne. Węzeł jest zwykle pojedynczą jednostką jakiejś kolekcji, często nazywaną klastrem. Serwer to zazwyczaj pojedynczy element sprzętowy. W erlangu można uruchamiać wiele instancji środowiska wykonawczego erlang na pojedynczym serwerze, a zatem użytkownik będzie miał wiele węzłów erlang ... ale generalnie chciałby mieć jeden węzeł na serwer, aby uzyskać bardziej optymalne planowanie. (W przypadku języków i platform, które nie są rozproszone, musisz zarządzać swoimi procesami w zależności od potrzeb.)

  3. Jeśli serwer ulegnie awarii, a jest to serwer pamięci podręcznej, dane będą musiały pochodzić z oryginalnego źródła. EG: Pamięć podręczna to zazwyczaj pamięćowa baza danych zaprojektowana do szybkiego pobierania. Dane w pamięci podręcznej przechowują się tylko wtedy, gdy są regularnie używane i ostatecznie zostaną usunięte. Ale w przypadku systemów rozproszonych, w których potrzebna jest trwałość, powszechną techniką jest posiadanie wielu kopii. EG: masz serwery A, B, C, D, E i F. Dla danych 1, umieścisz go na A, a następnie kopię na B i C. Couchbase i Riak to zrobią. Dla danych 2 może być na B, a następnie na kopiach C i D. W ten sposób, jeśli jeden serwer przejdzie w dół, nadal masz dwie kopie.

+3

Po pierwsze, dziękuję za szybkie odpowiedzi i jest to bardzo jasne. Naprawdę to doceniłem. O punkcie 3, czy mogę tworzyć serwery A, B, do buforowania w czasie rzeczywistym, a serwery C, D, E, F tylko dla kopii zapasowych? to znaczy. Dla danych 1 umieściłem go na serwerze A, a następnie na kopiach C i D. Dla danych 2, umieściłem go na serwerze B, a następnie kopie na E i F. Tak więc C D E F są używane tylko wtedy, gdy A lub B są wyłączone. Ta metoda wygląda bardziej strukturalnie. Czy to masz na myśli w punkcie 3? – Joey

+0

Aby było wyraźniej, różnica polega na tym, że dane i ich kopie są miksowane na wszystkich serwerach. Na przykład, powiedziałeś umieścić dane 1 na serwerze A i kopie na B i C, dane 2 na serwerze B i kopie na C i D. Następnie serwer B ma zarówno "oryginalne dane" danych 2 i kopię danych 1. Czy czy lepiej oddzielić wszystkie "oryginalne dane" od kopii i umieścić je na różnych serwerach? – Joey

+0

Wygląda na to, że piszesz własne oprogramowanie, dzięki czemu możesz robić, co tylko chcesz. Jednak przy projektowaniu tego rodzaju systemów trzeba mieć świadomość trybów awarii i kosztów zarządzania serwerami, szczególnie w przypadku systemów złożonych z wieloma serwerami. – nirvana

Powiązane problemy