2008-11-06 10 views
6

Je cherchais actuellement dans memcached pour coordonner un groupe de serveurs, mais je suis tombé sur Apache's ZooKeeper en cours de route. Cela semble intéressant, et Yahoo l'utilise, donc ça ne devrait pas être mauvais, mais je n'en avais jamais entendu parler auparavant, donc je suis un peu sceptique. Quelqu'un d'autre a-t-il essayé? Des commentaires ou des idées? ZooKeeper et Memcached ont des objectifs différents:Est-ce que quelqu'un a essayé d'utiliser ZooKeeper?

Répondre

10

Vous pouvez utiliser memcached pour effectuer la coordination du serveur, mais vous devrez effectuer la majeure partie de ce travail vous-même. Memcached ne permet que la coordination en ce qu'il met en cache les recherches de données communes à utiliser par plusieurs clients. De la lecture de la documentation de ZooKeeper, elle a un objectif beaucoup plus large que celui-ci. ZooKeeper semble prendre en charge le clustering de serveurs, ce qui n'est pas la même chose que le clustering de cache fourni par memcached. Jetez un coup d'œil au Linux Journal article de Brad Fitzpatrick sur memcached pour avoir une meilleure idée de ce que je veux dire.

5

Pour avoir un aperçu de ce dont Zookeper est capable, regardez la présentation suivante de ses créateurs. Il est capable de bien plus encore (création de files d'attente, élection de processus maîtres parmi un groupe de pairs, configurations d'exécution haute performance réparties, points de rendez-vous pour les processus dissociés, détermination si les processus sont encore en cours, etc.).

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

Pour répondre à votre question, si la « coordination » est ce que vous cherchez Zookeeper est beaucoup mieux ciblée à ce que memcached. Zookeeper est idéal pour la coordination des données sur les serveurs.

1

Il fait du bon travail en commandant chaque transaction et en garantissant que les transactions se déroulent dans l'ordre. Cependant, au moment de l'introduction, la documentation est nulle; C'est très «haut niveau» sans suffisamment d'exemples concrets ou d'explications pour gérer correctement certains événements. L'un des exemples inclus (à partir de la version 3.3.3) contenait ses propres bogues.

Votre code devra également prendre en compte les interactions pilotées par les événements et les interactions d'interrogation. Avec une architecture massivement distribuée, lorsque vous agissez sur des «événements», vous pouvez créer par inadvertance une bousculade qui ne serait pas souhaitable pour votre environnement (effet de troupeau).