ZooKeeper i RabbitMQ/Qpid razem-przesada czy dobre połączenie?

Pozdrawiam,

Oceniam niektóre komponenty dla systemu rozproszonego w wielu centrach danych. Będziemy używać kolejek wiadomości (za pośrednictwem RabbitMQ lub Qpid), aby agenci mogli wysyłać asynchroniczne żądania do innych agentów bez martwienia się o adresowanie, routing, równoważenie obciążenia lub retransmisję.

W wielu przypadkach agenci będą wchodzić w interakcję z komponentami, które nie zostały zaprojektowane do współbieżnego dostępu, więc blokowanie i koordynacja między agentami będzie być potrzebne, aby uniknąć warunków wyścigu. Chcemy również, aby system automatycznie reagował na awarie agentów lub centrów danych.

Mając na uwadze powyższe przypadki użycia, ZooKeeper wydawało się, że może to być dobre dopasowanie. Ale zastanawiam się, czy próba użycia zarówno ZK, jak i kolejkowania wiadomości jest przesadą. Wydaje się, że to, co robi Zookeeper , może być realizowane przez mojego własnego menedżera klastrów przy użyciu wiadomości AMQP, ale trudno byłoby to naprawdę dobrze zrobić. Z drugiej strony, widziałem kilka przykłady, gdzie ZooKeeper został użyty do implementacji kolejkowania wiadomości, ale myślę, że RabbitMQ / Qpid są do tego bardziej naturalne.

Czy ktoś tam używał takiej kombinacji?

Z góry dzięki,

-Chris

Author: Chris Sears, 2010-04-19

2 answers

Przychodzi tak późno, ale może się przyda. Podstawową kwestią powinna być charakterystyka wydajności systemu. ZooKeeper, jak powiedziałeś, jest bardziej niż zdolny do wdrożenia systemu dystrybucji zadań za pomocą rozproszonej kolejki, ale obecnie zk jest bardziej zoptymalizowany do odczytu niż do zapisu(to wchodzi w grę tylko w zakresie 1000 ops na sekundę). Jeśli twoje potrzeby przepustowości są mniejsze niż to, to użycie tylko zk do wdrożenia systemu zmniejsz liczbę komponentów wykonawczych i uprość je. Oczywiście przed podjęciem decyzji należy zawsze przeprowadzić testy wydajności.

Rozproszona koordynacja jest naprawdę trudna do uzyskania, więc zdecydowanie polecam do tego używać zookeepera, a nie kręcić własnego.

 6
Author: manku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-25 06:21:23

Nie do końca wiem, czym dokładnie jest ZooKeeper, ale myślę, że korzystanie z komponentu z Apache (jeśli dobrze pasuje do Twoich potrzeb) jest preferowane przed zarządzaniem takimi rzeczami, jak synchronizacja rozproszona i usługi grupowe we własnym zakresie. Możesz oczywiście zatrudnić zespół programistów specjalnie do tego celu, ale to nie gwarantuje lepszej implementacji.

Wydaje mi się, że i tak byłby zaimplementowany jako osobny komponent, ponieważ inny sposób mógłby przynieść wiele złożoności i zwolnij przepływ pracy, więc preferencja Zookeepera lub czegoś podobnego jest dla mnie dość oczywista.

I na pewno, jeśli nie jesteś w fazie globalnej optymalizacji przepływu pracy nad projektem, myślę, że lepiej byłoby użyć RabbitMQ lub czegoś takiego (chciałbym nawet podkreślić, że implementacje (zwłaszcza komercyjne) AMQP byłyby bardziej niezawodne niż wszystko, co byś wymyślił).

Więc wybrałbym oba, starannie dobierając odpowiednie produkty, ale używając tyle, ile potrzeba. A to tylko moja opinia; dzięki za przeczytanie :)

 0
Author: Bubba88,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 05:48:25