Redis vs Zookeeper

25

Głupio wydaje się porównywanie tych dwóch serwerów, biorąc pod uwagę, że są one przeznaczone do bardzo różnych rzeczy. Ale jeśli się nad tym zastanowić, mogą zrobić wiele podobnych rzeczy: przechowywać dane konfiguracyjne, blokowanie rozproszone, kolejkowanie itp.

Mam instancję Redis , której używam do niektórych rzeczy związanych z produkcją, ale chciałbym przeprowadzić prostą synchronizację między serwerami (głównie zmiany konfiguracji, które nie wymagają wypychania kodu i prostego blokowania między serwerami). Co daje mi Zookeeper , czego nie zrobiłby Redis?

Jason Baker
źródło
Redis nie jest (specjalnie) do konfiguracji. To zupełnie inne produkty.
Rein Henrichs,
4
Czemu? Do konfiguracji używamy PostgreSQL. Co różni konfigurację od logiki biznesowej?
Dmitry Negoda

Odpowiedzi:

26

W pracy używamy zarówno Redis, jak i Zookeeper, więc jest to doświadczenie z pierwszej ręki

Redis jest szybki; naprawdę, bardzo szybko. Jest również natychmiast spójny, więc jest dobry dla szybko zmieniających się zestawów danych. Minusem jest to, że jeśli działa na jednym serwerze, jeśli zawiedzie, tracisz dostęp do zapisu, dopóki inny serwer nie zajmie swojego miejsca. Wymiana serwera jest operacją ręczną, chyba że sam go zautomatyzujesz. (Nadal możesz uzyskać dostęp do odczytu swoich danych, jeśli skonfigurujesz instancję slave).

Zookeeper cechuje również natychmiastowa spójność. Nie jest w połowie tak szybki, ale odzyska się automatycznie (jeśli to możliwe) w przypadku awarii, więc jeśli potrzebujesz ciągłego dostępu do zapisu, nawet jeśli twoje serwery zawiodą na tobie, będziesz chciał użyć Zookeeper.

Moja rada jest taka, że ​​do koordynacji używaj Zookeepera: śledzenie, które węzły są aktywne, wyborów lidera w grupie itp. Użyj redis do zestawów danych, które wymagają szybkiego zapisu, ale gdzie okazjonalne przestoje nie są katastrofą. Na przykład liczniki trafień dla stron internetowych.

dan_waterworth
źródło
Obecnie pracuję nad projektem i myślałem, że będzie to droga zookeeper. Jeśli masz więcej informacji, którymi możesz się gdzieś podzielić, byłoby wspaniale. Mamy do czynienia z wieloma wymianami reklam i śledzeniem około 4 miliardów wydarzeń dziennie. Chcemy przeprojektować nasze serwery front-end i patrzyliśmy na zookeepera, aby przechowywał informacje o liczbie śledzenia, minimalnej wadze itp. Mogę poświadczyć szybkość redis, ale moje doświadczenie nie ma hierarchicznej struktury, której chcieliśmy używać z zookeeperem. Czy Twoje stanowisko zmieniło się w ciągu 3 lat od 2012 roku?
Chris Hinshaw
@ChrisHinshaw Mam do czynienia z tym samym problemem. Biorąc pod uwagę zarówno Redisa, jak i Zookeepera dla rozproszonego menedżera zasobów, który wymaga zarówno rozproszonych blokad, jak i wydajności. Czy masz jakieś uwagi?
Rafael Saraiva
Kończę teraz przepisywanie tego. Poszedłem z Redis ze względu na prędkość. Wystąpiły pewne problemy z wydajnością zookeeper, ale nie pamiętam problemów. Przechowujemy dane szeregów czasowych w oparciu o metryki i liczby. Używam skryptów lua do aktualizacji zliczeń dla każdego z przedziałów czasowych w celu ograniczenia liczby połączeń. Przykładem jest klucz skrótu dla zapytań ofertowych w postaci br: 1: 2: 3: 4, gdzie liczby reprezentują hierarchię danych: agencja: reklamodawca: kampania: reklama. W haszu wartości są następujące: rok: miesiąc: dzień: godzina: minuta. W moim skrypcie lua zaktualizowałbym liczby dla każdego
Chris Hinshaw
przedziałów czasu. Więc mój skrypt dzieli y: m: d: h na dwukropek i aktualizuje sumy dla każdego plasterka. W ten sposób mogę użyć hscan lub pobrać listę kluczy dla dowolnej szczeliny czasowej. Najważniejszą rzeczą w redis jest wymyślenie modelu hierachicznego dla kluczy. W pewnym momencie w przyszłości chciałbym przenieść to wszystko na iskierki w sklepie Cassandra. Gdybym miał czas, wdrożyłbym strumieniowanie iskier, aby to sprawdzić. Myślę, że byłoby to na równi z redis i daje elastyczność wykonywania analiz.
Chris Hinshaw