Spring Cloud 使用zookeeper为注册中心

现在主流的注册中心都是eureka,很多教程基本上都是eureka的,但是对于一些大厂而言,eureka还是比较新的东西,并且他只能在Spring cloud里使用,广泛性不是很好,也很难说服运维做 eurake做全球化部署以及维护。但是zookeeper是一个比较广泛的组件,大厂一般都有现成的,并且非常成熟。笔者也遇到相似的问题,借此机会把自己踩得坑记录下来,分享给大家。

Spring Cloud 版本和zookeeper版本

Spring Cloud 版本

Greenwich.SR1

------------------------------------------


    org.springframework.boot
    spring-boot-starter-parent
    2.1.3.RELEASE
     

注:在集成zookeeper的时候,一定要问清楚运维zookeeper的版本,因为不同版本,对依赖的选取完全不一样。否则就会报错。下面分两个版本,分别讲下。

zookeeper3.5.x 版本

依赖如下:


    org.springframework.cloud
    spring-cloud-starter-zookeeper-discovery

注: 要去掉 netflix 所有相关组件依赖,否则可能导致失败。

配置如下:

spring:
  cloud:
    zookeeper:
      connect-string: localhost:2181  # zookeeper 地址
      discovery:
        enabled: true
        root: /services

注: 去掉 eureka.client 和 netflix 所有相关配置,否则可能导致失败。

zookeeper3.4.x 版本

依赖如下:


    org.apache.zookeeper
    zookeeper
    3.4.10
    
        
            org.slf4j
            slf4j-log4j12
        
    


    org.springframework.cloud
    spring-cloud-starter-zookeeper-discovery
    
    

配置如下:

spring:
  cloud:
    zookeeper:
      connect-string: localhost:2181  # zookeeper 地址
      discovery:
        enabled: true
        root: /services

FAQ

  1. 为什么要区分zookeeper版本?答案参考 http://curator.apache.org/zk-compatibility.html

  2. UnimplementedException: KeeperErrorCode = Unimplemented 这样的异常怎么解决?基本上可以判断,还是zookeeper client与服务端的版本没有匹配上,可以打印依赖树,看看自己配置的依赖是否起作用了。

你可能感兴趣的:(Spring Cloud 使用zookeeper为注册中心)