Zookeeper服务注册与发现实战

目录

设计思路

Zookeeper注册中心的优缺点

SpringCloudZookeeper实现微服务注册中心 

第一步:在父pom文件中指定Spring Cloud版本

第二步:微服务pom文件中引入Spring Cloud Zookeeper注册中心依赖

第三步: 微服务配置文件application.yml中配置zookeeper注册中心地址

第四步:整合feign进行服务调用


设计思路

Zookeeper服务注册与发现实战_第1张图片

Zookeeper注册中心的优缺点

优点:

1. 高可用性:ZooKeeper是一个高可用的分布式系统,可以通过配置多个服务器实例来提供容错能力。如果其中一个实例出现故障,其他实例仍然可以继续提供服务。

2. 强一致性:ZooKeeper保证了数据的强一致性。当一个更新操作完成时,所有的服务器都将具有相同的数据视图。这使得ZooKeeper非常适合作为服务注册中心,因为可以确保所有客户端看到的服务状态是一致的。

3. 实时性:ZooKeeper的监视器(Watcher)机制允许客户端监听节点的变化。当服务提供者的状态发生变化时(例如,上线或下线),客户端会实时收到通知。这使得服务消费者能够快速响应服务的变化,从而实现动态服务发现。

缺点:

性能限制:ZooKeeper的性能可能不如一些专为服务注册中心设计的解决方案,如nacos或Consul。尤其是在大量的读写操作或大规模集群的情况下,ZooKeeper可能会遇到性能瓶颈。


SpringCloudZookeeper实现微服务注册中心 

第一步:在父pom文件中指定Spring Cloud版本

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


    1.8
    Hoxton.SR8


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
    

注意: springboot和springcloud的版本兼容问题。

第二步:微服务pom文件中引入Spring Cloud Zookeeper注册中心依赖


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




    org.apache.zookeeper
    zookeeper
    3.8.0

注意: zookeeper客户端依赖和zookeeper sever的版本兼容问题。

第三步: 微服务配置文件application.yml中配置zookeeper注册中心地址
spring:
  cloud:
    zookeeper:    
      connect-string: localhost:2181
      discovery:
        instance-host: 127.0.0.1

注册到zookeeper的服务实例元数据信息如下:

注意:如果address有问题,会出现找不到服务的情况,可以通过instance-host配置指定。

第四步:整合feign进行服务调用
@RequestMapping(value = "/findOrderByUserId/{id}")
public R  findOrderByUserId(@PathVariable("id") Integer id) {
    log.info("根据userId:"+id+"查询订单信息");
    //feign调用   
    R result = orderFeignService.findOrderByUserId(id);
    return result;
}

你可能感兴趣的:(分布式中间件,zookeeper,分布式,spring,后端,java)