Redis vs Zookeeper

25

Il semble stupide de comparer ces deux serveurs étant donné qu'ils sont destinés à des choses très différentes. Mais si vous y réfléchissez, ils peuvent faire beaucoup de choses similaires: stocker les données de configuration, le verrouillage distribué, la mise en file d'attente, etc.

J'ai une instance de Redis que j'utilise pour certaines choses liées à la production, mais je voudrais faire une synchronisation simple entre les serveurs (principalement des changements de configuration qui ne nécessitent pas de pousser le code et un simple verrouillage entre les serveurs). Que me donne Zookeeper que Redis ne donnerait pas?

Jason Baker
la source
Redis n'est pas (spécifiquement) pour la configuration. Ce sont des produits assez différents.
Rein Henrichs
4
Pourquoi? Nous utilisons PostgreSQL pour la configuration. Qu'est-ce qui rend la configuration si différente de la logique métier?
Dmitry Negoda

Réponses:

26

Nous utilisons à la fois Redis et Zookeeper au travail, c'est donc une expérience de première main

Redis est rapide; vraiment, vraiment rapide. Il est également immédiatement cohérent, il convient donc aux ensembles de données à déplacement rapide. L'inconvénient est que, en cours d'exécution sur un serveur, s'il échoue, vous perdez l'accès en écriture jusqu'à ce qu'un autre serveur prenne sa place. Le remplacement du serveur est une opération manuelle, sauf si vous l'automatisez vous-même. (Vous pouvez toujours obtenir un accès en lecture à vos données si vous configurez une instance esclave).

Zookeeper offre également une cohérence immédiate. Ce n'est pas à moitié aussi rapide, mais il se rétablira automatiquement (si possible) en cas d'échec, donc si vous avez besoin d'un accès en écriture continu, même lorsque vos serveurs tombent en panne, vous voudrez utiliser Zookeeper.

Mon conseil est d'utiliser zookeeper pour la coordination: suivre quels nœuds sont actifs, élection de leaders parmi un groupe, etc. Utilisez redis pour les jeux de données qui nécessitent des écritures rapides mais où la panne occasionnelle n'est pas un désastre. Frappez les compteurs pour les pages Web par exemple.

dan_waterworth
la source
Je travaille actuellement sur un projet et je pensais que zookeeper allait être la voie à suivre. Si vous avez plus d'informations que vous pouvez partager quelque part, ce serait merveilleux. Nous traitons de multiples échanges d'annonces et suivons environ 4 milliards + d'événements par jour. Nous cherchons à repenser nos serveurs frontaux et examinions zookeeper pour stocker des informations sur les comptages de suivi, la pondération minimale, etc. Je peux attester de la vitesse de redis mais mon expérience manque d'une structure hiérarchique que nous cherchions à utiliser avec zookeeper. Votre position a-t-elle changé depuis 3 ans depuis 2012?
Chris Hinshaw
@ChrisHinshaw Je suis confronté au même problème. Considérant à la fois Redis et Zookeeper pour un gestionnaire de ressources distribué qui nécessite à la fois des verrous distribués et des performances. Avez-vous des commentaires?
Rafael Saraiva
Je termine une réécriture de ceci maintenant. Je suis allé avec redis à cause de la vitesse. Il y a eu quelques problèmes de performances avec zookeeper mais je ne m'en souviens pas. Nous stockons des données de série temporelle basées sur des métriques et des comptages. J'utilise des scripts lua pour mettre à jour les décomptes pour chacune des périodes afin de limiter le nombre d'appels. Un exemple est que nous avons une clé de hachage pour les demandes d'enchères sous la forme br: 1: 2: 3: 4 où les chiffres représentent une hiérarchie de métrique: agence: annonceur: campagne: annonce. Dans le hachage, les valeurs sont année: mois: jour: heure: minute. Dans mon script lua, je mettrais à jour les chiffres pour chacun
Chris Hinshaw
des tranches de temps. Donc mon script divise le y: m: d: h par deux points et met à jour les totaux pour chaque tranche. De cette façon, je peux utiliser un hscan ou récupérer une liste de clés pour n'importe quelle tranche de temps. La chose la plus importante dans redis est de proposer un modèle hiérarchique pour les clés. À un moment donné dans le futur, je voudrais déplacer tout cela pour déclencher des RDD avec un magasin de cassandra. Si j'avais le temps, j'implémenterais le streaming d'étincelles pour comparer cela. Je pense que ce serait à égalité avec redis et donne la flexibilité de faire des analyses.
Chris Hinshaw