zoukankan      html  css  js  c++  java
  • 服务注册中心之Zookeeper使用

    一、什么是Zookeeper?

      Zookeeper是一个分布式协调工具,可以实现注册中心功能,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等,它可以替代Eureka组件实现注册中心功能。

    二、ZooKeeper安装

      zookeeper有单机、集群部署方式。

      1、单机模式下的zookeeper安装,此处以安装到Centos系统为例,需要先安装JDK。

        首先需要去https://zookeeper.apache.org/releases.html下载稳定版tar.gz包,下载后解压到想要的安装路径,进入conf目录复制zoo_sample.cfg样例改名为zoo.cfg作为基础配置文件,进行个性化配置,cd到zookeeper安装路径,运行启动命令./bin/zkServer.sh start即可启动zookerper。zookeeper配置文件说明如下

    # The number of milliseconds of each tick# tickTime:CS通信心跳数
    # Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
    tickTime=2000
    
    # The number of ticks that the initial
    # synchronization phase can take
    # initLimit:LF初始通信时限
    # 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
    initLimit=5
    
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    # syncLimit:LF同步通信时限
    # 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
    syncLimit=2
    
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    # dataDir:数据文件目录
    # Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
    dataDir=/data/soft/zookeeper-3.4.12/data
    
    
    # dataLogDir:日志文件目录
    # Zookeeper保存日志文件的目录。
    dataLogDir=/data/soft/zookeeper-3.4.12/logs
    
    # the port at which the clients will connect
    # clientPort:客户端连接端口
    # 客户端连接 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 保留数量3
    autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature 清理时间间隔1小时
    autopurge.purgeInterval=1
    
    # 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口),这个配置项的书写格式比较特殊,规则如下:
    # server.N=YYY:A:B
    # 其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时
    # 服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。 # 一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只是A端口和B端口不一样。

      2、集群zookeeper安装,安装方式与单机模式一样,只不过分布在多个主机上,安装完成后需要对这些zookeeper节点进行配置,具体如下,server.n为不同zookeeper的访问地址,这些地址组形成zookeeper集群

    tickTime=2000
    initLimit=5
    syncLimit=2
    dataDir=/tmp/zookeeper/data
    dataLogDir=/tmp/zookeeper/logs 
    clientPort
    =12181
    # 服务器名称与地址:集群信息
    server.1=127.0.0.1:12888:13888 
    server.
    2=127.0.0.1:14888:15888
    server.
    3=127.0.0.1:16888:17888

        配置myid文件:这个文件存放的路径由zoo.cfg配置文件中的dataDir来指定,在这三台服务器上的/tmp/zookeeper/data目录下创建myid文件,里面填入相应的id号,这是zookeeper节点的编号。

    三、将服务提供者注册到Zookeeper服务器

      使用方式与Eureka组件类似,要将一个服务模块作为提供者注册到Zookeeper注册中心,需要修改Pom引入spring-cloud-starter-zookeeper-discoveryr包、编写application.yml配置文件,如下所示

        1、引入jar包

    < ! -- SpringBoot整合zookeeper客户端-->
    <dependency>
       <groupId>org-springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    </dependency>

        2、修改application.yml配置文件

    #8008表示注册到zookeeper服务器的服务提供者端口号
    server:
      port: 8008
    spring:
      application:
          name: cloud-provider-name    #服务别名
      cloud:
          zookeeper:
              connect-string: ip:port  #zookeeper服务器注册中心地址

        3、主启动类增加@EnableDiscoveryClient注解,该注解用于向consul或者zookeeper注册中心注册该服务。

        4、Controller类写业务接口,该控制器通常需要使用@RestController注解。

     四、服务提供者集群

      与Eureka注册中心负载均衡集群一样,服务提供者如需要集群,也需要在配置文件ApplicationContextConfig配置文件的getRestTemplet()下增加@LoadBalanced注解,来赋予RestTemplate负载均衡能力(参考服务注册中心之Eureka使用)。

      

  • 相关阅读:
    NC外部统一流程管理平台方案
    Activiti 多个并发子流程的应用
    基于Activiti的流程应用开发平台JSAAS-WF V5.3
    整合Acitiviti在线流程设计器(Activiti-Modeler 5.18.0)
    基于Spring Security 的JSaaS应用的权限管理
    微信分享功能开发
    ORACLE schedule job设置
    存储过程清理N天前数据
    oracle函数trunc的使用
    往前往后推时间(排除工作日和节假日)
  • 原文地址:https://www.cnblogs.com/zqhIndex/p/15393864.html
Copyright © 2011-2022 走看看