美文网首页分布式服务开发
分布式服务开发(3) Zookeeper

分布式服务开发(3) Zookeeper

作者: 架构路上的一亩三分地 | 来源:发表于2017-03-12 16:46 被阅读124次

    Zookeeper配置

    复制C:\app\zookeeper-3.4.9\conf\zoo_sample.cfg为zoo.cfg。配置如下:

    # The number of milliseconds of each tick
    # 这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    # 顾名思义就是 Zookeeper保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    dataDir=c:/data/zookeeper
    # dataLogDir:顾名思义就是Zookeeper 保存日志文件的目录
    # the port at which the clients will connect
    # 这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    

    在启动前还需要设置JAVA_HOME环境变量。设置完成后,运行bin目录下的zkServer.cmd启动Zookeeper服务。

    启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat –ano 命令查看是否有你配置的 clientPort 端口号在监听服务。

    启动成功后,可以看到command窗口中显示了监听的端口数。

    2017-03-11 10:30:33,937 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding
     to port 0.0.0.0/0.0.0.0:2181
    

    使用zookeeper作为dubbo的注册中心,部署起来并不麻烦。为了保持注册中心的高可用性,在生产环境下我们需要配置多个zookeeper协同运行。在集群模式下,zookeeper会基于Paxos算法从集群中选择一台作为leader,其他机器作为follower,注册中心的数据都以leader为准。一台zk机器成为leader的条件是超过这台机器是可用的,且被超过半数的机器选举为leader。基于这种实现方式,我们选择zk集群的数量时最好为奇数个,最少为3个,这样只要有超过半数的zk机器存活那注册中心就是可用的。

    进行zookeeper集群配置的话,额外再zoo.cfg增加如下配置:

    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888
    

    server.A=B:C:D
    A为数字,标识这条配置为第几个zk服务器,即机器id
    B为host名,标识这个服务器的主机地址
    C和D为zk集群的成员用于选举leader时的通讯端口

    zookeeper可以作为dubbo服务的注册中心,两者结合起来可以实现微服务中的 服务注册、发现、负载均衡和健康检查,容错,动态配置管理的功能。

    由于涉及dubbo配置和module划分较为复杂,在下章单独讲解。

    相关文章

      网友评论

        本文标题:分布式服务开发(3) Zookeeper

        本文链接:https://www.haomeiwen.com/subject/fstxnttx.html