Zookeeper服务启动过程与服务器角色

最近在看Zookeeper,想把学习Zookeeper的过程记录下来,这篇博客主要是为了对Zookeeper做一个宏观的记录。

一、什么是Zookeeper:

ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。它可以在分布式系统中协作多个任务,在分布式系统中,开发面临的困难主要有:消息延迟、处理器性能和时钟偏移,后面两个会间接引起第一个问题,当我们面临一个网络错误时,很难确定是网络超时还是系统崩溃,Zookeeper提供了一套功能强大的API去解决这些问题,这些功能主要包括:

  • 保障强一致性、有序性和持久性。
  • 实现通用的同步原语的能力。
  • 简单的并发处理机制。

在Zookeeper Server侧主要包括四个个部分:

  • ZKDatabase:类似文件系统的数据结构,Zookeeper用该对象模型存储数据
  • ServerCnxn:代表客户端连接的服务器,用于接收客户端的请求,并转发到具体的服务器上
  • ZookeeperServer:ZK角色服务器,主要有三种角色,Leader、Follower和Observer。Zookeeper处于不同的角色时会把请求交给对应角色服务器处理
  • RequestProcessor:请求处理器,用于处理每一个请求。

二、Zookeeper服务启动过程:

1、初始化Config

  • 根据入参中提供的zoo.cfg文件,解析该文件并生成配置信息对象
public void runFromConfig(QuorumPeerConfig config) throws IOException {
      try {
          ManagedUtil.registerLog4jMBeans();
      } catch (JMException e) {
          LOG.warn("Unable to register log4j JMX control", e);
      }
  
      LOG.info("Starting quorum peer");
      try {
          ServerCnxnFactory cnxnFactory = ServerCnxnFactory.createFactory();
          cnxnFactory.configure(config.getClientPortAddress(),
                                config.getMaxClientCnxns());
          
          //创建仲裁成员
          quorumPeer = new QuorumPeer();
          //设置客户端连接地址
          quorumPeer.setClientPortAddress(config.getClientPortAddress());
          //设置快照文件路径和事务日志文件路径
          quorumPeer.setTxnFactory(new FileTxnSnapLog(
                      new File(config.getDataLogDir()),
                      new File(config.getDataDir())));
          //设置集群服务器信息
          quorumPeer.setQuorumPeers(config.getServers());
          //设置选举算法
          quorumPeer.setElectionType(config.getElectionAlg());
          //设置服务器Id
          quorumPeer.setMyid(config.getServerId());
          //设置时间单位
          quorumPeer.setTickTime(config.getTickTime());
          //设置最小回话超时时间
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值