Spring Cloud Zookeeper源码解析-----服务注册原理

本文深入解析Spring Cloud Zookeeper的服务注册原理。从`application.yml`配置开始,探讨`ZookeeperDiscoveryProperties`,`ZookeeperAutoServiceRegistrationAutoConfiguration`中的`ServiceInstanceRegistration`生成,以及`ZookeeperAutoServiceRegistration`如何实现服务注册。最终,通过`ZookeeperServiceRegistry`和`ServiceDiscoveryImpl`在Zookeeper中创建节点,完成服务注册。
摘要由CSDN通过智能技术生成

zookeeper作为一个分布式文件系统,可用于注册中心,配置中心(很少),分布式锁,命名服务等场景。同时已经集成到springcloud项目中----spring cloud zookeeper;接下来通过读spring cloud zookeeper的源码来了解它的服务注册原理

1、application.yml配置文件配置

server:
  port: 9000
spring:
  application:
    name: lh-zookeeper-registry
  cloud:
    zookeeper:
      connect-string: localhost:2181
      discovery:
        register: true
        enabled: true
        root: lh-registry
        instance-host: 172.20.249.247

spring cloud zookeeper discovery属性全部都来自于ZookeeperDiscoveryProperties类

1.1、ZookeeperDiscoveryProperties

@ConfigurationProperties("spring.cloud.zookeeper.discovery")
public class ZookeeperDiscoveryProperties {
    public static final String DEFAULT_URI_SPEC = "{scheme}://{address}:{port}";
    private HostInfo hostInfo;
    private boolean enabled = true;
    private String root = "/services";
    private String uriSpec = "{scheme}://{address}:{port}";
    private String instanceId;
    private String instanceHost;
    private String instanceIpAddress;
    private boolean preferIpAddress = false;
    private Integer instancePort;
    private Integer instanceSslPort;
    private boolean register = true;
    private Map<String, String> metadata = new HashMap();
    private String initialStatus = "UP";
    private int order = 0;
}

 该类中就包括了服务的一些基本信息以及后面创建zk节点的默认根节点("/services")

2、ZookeeperAutoServiceRegistrationAutoConfiguration

zookeeper服务自动注册自动配置类

@Bean
    public ZookeeperAutoServiceRegistration zookeeperAutoServiceRegistration(ZookeeperServiceRegistry registry, ZookeeperRegistration registration, ZookeeperDiscoveryProperties properties) {
        return new ZookeeperAutoServiceRegistration(registry, registration, properties);
    }

    @Bean
    @ConditionalOnMissingBean({ZookeeperRegistration.class})
    public ServiceInstanceRegistration serviceInstanceRegistration(ApplicationContext context, ZookeeperDiscoveryProperties properties) {
        String appName = context.getEnvironment().getProperty("spring.application.name", "application");
        String host = properties.getInstanceHost();
        if (!StringUtils.hasText(host)) {
            throw new IllegalStateException("insta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值