2008-11-06 9 views
6

Actualmente estaba buscando en memcached como forma de coordinar un grupo de servidores, pero me encontré con Apache's ZooKeeper en el camino. Parece interesante, y Yahoo lo usa, por lo que no debería ser malo, pero nunca había oído hablar de él antes, así que soy un poco escéptico. ¿Alguien más lo ha probado? ¿Algún comentario o idea?¿Alguien ha intentado usar ZooKeeper?

Respuesta

10

ZooKeeper y Memcached tienen diferentes propósitos. Puedes usar memcached para coordinar el servidor, pero tendrás que hacer la mayor parte del trabajo tú mismo. Memcached solo permite la coordinación, ya que almacena en caché las búsquedas de datos comunes para ser utilizadas por múltiples clientes. Al leer la documentación de ZooKeeper, tiene un enfoque mucho más amplio que este. ZooKeeper parece proporcionar soporte para clustering de servidores, que no es lo mismo que el clúster de caché que proporciona Memcached.

Eche un vistazo a Linux Journal de Brad Fitzpatrick article en memcached para obtener una mejor idea de lo que quiero decir.

5

Para tener una idea general de lo que Zookeper es capaz de hacer, mire la siguiente presentación de sus creadores. Es capaz de mucho más (crear colas, elegir procesos maestros entre un grupo de pares, configuraciones de tiempo de ejecución distribuidas de alto rendimiento, puntos de encuentro para procesos desconectados, determinar si los procesos aún se están ejecutando, etc.).

http://zookeeper.sourceforge.net/index.sf.shtml

Para responder a su pregunta, si la "coordinación" es lo que busca Zookeeper es mucho mejor que la que dirige a memcached.

1

Zookeeper es ideal para coordinar los datos entre los servidores. Hace un buen trabajo ordenando cada transacción y garantizando que las transacciones se realicen en orden. Sin embargo, cuando ingresas por primera vez, la documentación apesta; es muy 'alto nivel' sin suficientes ejemplos concretos o explicaciones sobre cómo manejar adecuadamente ciertos eventos. Uno de los ejemplos incluidos (a partir de la versión 3.3.3) tenía sus propios errores.

Su código también deberá conocer las interacciones impulsadas por eventos y las interacciones de sondeo. Con la arquitectura de distribución masiva, cuando actúas sobre 'eventos' puedes crear inadvertidamente una estampida que no podría ser deseable para tu entorno (efecto de pastoreo).

Cuestiones relacionadas