2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper est un service de coordination distribué hautement disponible qui est largement utilisé dans les systèmes distribués pour résoudre le problème de cohérence des systèmes distribués. Ce qui suit présentera en détail les principes sous-jacents de ZooKeeper, y compris son architecture, son modèle de données, son mécanisme de base et son protocole de cohérence.
ZooKeeper adopte une architecture maître-esclave, qui se compose généralement d'un leader et de plusieurs suiveurs. Il existe également des nœuds observateurs en tant que nœuds sans droit de vote pour partager la pression des demandes de lecture.
ZooKeeper stocke les données dans une structure arborescente similaire à un système de fichiers, et chaque nœud est appelé un znode.
Une session est établie entre chaque client et le cluster ZooKeeper pour maintenir l'état de connexion et gérer les nœuds temporaires. ZooKeeper détecte l'état de connexion du client via le mécanisme de battement de cœur. Si aucun battement de cœur n'est reçu dans un certain laps de temps, la session est considérée comme déconnectée.
Afin d'assurer la cohérence des données de chaque nœud, ZooKeeper adopte un mécanisme de synchronisation des données. Lorsque le nœud Leader traite une demande d'écriture, il enverra l'opération de changement à tous les nœuds Follower confirmera après avoir accepté l'opération de changement, et le nœud Leader décidera finalement si l'opération de changement est réussie.
ZooKeeper prend en charge le mécanisme Watch. Le client peut enregistrer Watch sur le znode spécifié. Lorsque les données ou les nœuds enfants du znode changent, ZooKeeper en informe le client.
ZooKeeper utilise un protocole de cohérence appelé ZAB (Zookeeper Atomic Broadcast) pour garantir la cohérence des données. ZAB se compose de deux phases : la phase électorale et la phase de diffusion.
Lorsque le cluster ZooKeeper démarre ou que le nœud Leader échoue, une élection est nécessaire pour déterminer un nouveau leader. La phase électorale est principalement divisée en les étapes suivantes :
Une fois le leader déterminé, la phase de diffusion est entrée. Le leader est responsable du traitement de la demande d'écriture du client et de la diffusion de l'opération de modification à tous les nœuds suiveurs. Les étapes spécifiques sont les suivantes :
Ce qui suit est un exemple simple utilisant ZooKeeper, montrant comment créer des nœuds, lire les données des nœuds et enregistrer Watch.
exister pom.xml
Introduisez la dépendance du client ZooKeeper.
xmlCopier le code