1. Pré-lancement
1. Unified QuorumPeerMain comme classe de démarrage. Quelle que soit la machine ou le cluster, QuorumPeerMain est configuré comme classe d'entrée de démarrage dans zkServer.cmd et zkServer.sh.
2. Analysez le fichier de configuration zoo.cfg. zoo.cfg configure les paramètres de base lors de l'exécution, tels que tickTime, dataDir, clientPort et d'autres paramètres.
3. Créez et démarrez le nettoyeur de fichiers historiques DatadirCleanupManager. Nettoyez régulièrement les journaux de transactions et les fichiers de données d'instantanés.
4. Déterminez s'il est actuellement en mode cluster ou en mode autonome. S'il est en mode autonome, il est confié à ZooKeeperServerMain pour démarrer.
5. Analysez à nouveau le fichier de configuration zoo.cfg.
6. Créez une instance de serveur ZooKeeperServer. Le serveur Zookeeper crée d'abord une instance de serveur, puis initialise l'instance de serveur, y compris l'initialisation des composants tels que les connecteurs, les bases de données mémoire et les processeurs de demande.
2. Initialisation
1. Créez ServerStats. ServerStats est une statistique lorsque le serveur Zookeeper est en cours d'exécution.
2. Créez le gestionnaire de données Zookeeper FileTxnSnapLog. FileTxnSnapLog est la couche d'ancrage entre le serveur supérieur de Zookeeper et le stockage de données sous-jacent, et fournit une série d'interfaces pour l'exploitation des fichiers de données, tels que les fichiers journaux de transactions et les fichiers de données d'instantanés. Zookeeper crée un FileTxnSnapLog basé sur le répertoire de données de cliché dataDir et le répertoire de journal de transactions dataLogDir résolus dans le fichier zoo.cfg.
3. Définissez le tickTime du serveur et le délai d'expiration de la session.
4. Créez ServerCnxnFactory. En configurant la propriété système zooperper.serverCnxnFactory pour spécifier s'il faut utiliser le propre NIO de Zookeeper ou utiliser le framework Netty comme fabrique de connexions réseau du serveur Zookeeper.
5. Initialisez ServerCnxnFactory. Zookeeper initialisera Thread en tant que thread principal de ServerCnxnFactory, puis initialisera le serveur NIO.
6. Démarrez le thread principal de ServerCnxnFactory. Entrez la méthode d'exécution du thread, à ce stade, le serveur ne peut pas gérer la demande du client.
7. Restaurez les données locales. Au démarrage, la récupération des données à partir des fichiers de données instantanés locaux et des fichiers journaux des transactions est requise.
8. Créez et démarrez un gestionnaire de sessions. Zookeeper créera un gestionnaire de sessions SessionTracker pour la gestion des sessions.
9. Initialisez la chaîne de traitement des demandes de Zookeeper. La méthode de traitement des requêtes Zookeeper est l'implémentation du mode chaîne de responsabilité. Il y aura plusieurs processeurs de demande pour traiter une demande client dans l'ordre, et ces serveurs seront concaténés dans une chaîne de traitement des demandes lorsque le serveur sera démarré.
10. Inscrivez-vous au service JMX. Zookeeper exposera certaines informations sur l'exécution du serveur au monde extérieur sous la forme de JMX.
11. Enregistrez l'instance de serveur Zookeeper. Enregistrez l'instance de serveur Zookeeper auprès de ServerCnxnFactory, puis Zookeeper peut fournir des services externes.
À ce stade, la version autonome du serveur Zookeeper a été démarrée.