Dubbo注册中心(ZooKeeper)

1. 注册中心概述

在Dubbo微服务体系中,注册中心是其核心组件之一。Dubbo通过注册中心实现了分布式环境中各服务之间的注册与发现,是各个分布式节点之间的纽带。其主要作用如下:

  • 动态加入(服务注册/暴露):一个服务提供者通过注册中心可以动态地把自己暴露给其他消费者,无须消费者逐个去更新配置文件;
  • 动态发现(服务发现):一个消费者可以动态地感知新的配置、路由规则和新的服务提供者,无须重启服务使之生效。
  • 动态调整:注册中心支持参数的动态调整,新参数自动更新到所有相关服务节点;
  • 统一配置:避免了本地配置导致每个服务的配置不一致问题。

Dubbo的注册中心源码在dubbo-registry中,里面包含了很多模块(不同版本里面包含的模块不一样多):

模块名称模块介绍
dubbo-registry-api包含了注册中心的所有API和抽象实现类
dubbo-registry-zookeeper使用ZooKeeper作为注册中心的实现
dubbo-registry-redis使用Redis作为注册中心的实现
dubbo-registry-defaultDubbo基于内存的默认实现
dubbo-registry-multicastmulticast模式的服务注册与发现
dubbo-registry-consul。。。。。。
dubbo-registry-eureka。。。。。。
dubbo-registry-nacos。。。。。。
其他待扩充…

在这些注册中心的实现方案当中,ZooKeeper是官方推荐的注册中心,在生产环境中有过实际使用。

Dubbo拥有良好的扩展性,用户可以基于RegistryFactoryRegistry 自行扩展。

2. 注册中心的工作流程

注册中心的总体流程比较简单,Dubbo官方也有比较详细的说明,总体流程如下:

  • 服务提供者Provider在启动时,会向注册中心写入自己的元数据信息,同时会订阅配置元数据信息;
  • 服务消费者Consumer在启动时,也会向注册中心写入自己的元数据信息,并订阅服务提供者、路由和配置元数据信息。
  • 服务治理中心dubbo-admin时,会同时订阅所有消费者、服务提供者、路由和配置信息。
  • 当有服务提供者离开或有新的服务提供者加入时,注册中心服务提供者目录会发生变化,变化信息会动态通知给消费者、服务治理中心。
  • 当消费方发起服务调用时,会异步将调用、统计信息等上报给监控中心(dubbo-monitor-simple)

3. 注册中心的原理

3.1 ZooKeeper做注册中心的原理

ZooKeeper是树形结构的注册中心,每个节点的类型分为持久节点、持久顺序节点、临时节点、临时顺序节点。

  • 持久节点:服务注册后保证节点不会丢失,注册中心重启也会存在。
  • 持久顺序节点:在持久节点特性的基础上增加了节点先后顺序的能力。
  • 临时节点:服务注册后连接丢失或session超时,注册的节点会自动被移除。
  • 临时顺序节点:在临时节点特性的基础上增加了节点先后顺序的能力。

Dubbo使用ZooKeeper作为注册中心时,只会创建持久节点临时节点两种,对创建的顺序并没有要求。

具体的Dubbo服务的URL是树形结构的,如下:

  • /dubbo
    • service
      • providers:服务提供者目录(/dubbo/service/providers),下面包含的接口有多个服务提供者URL元数据信息;
      • consumers:服务消费者目录,下面包含的接口有多个服务消费者URL元数据信息;
      • routers:路由配置目录,下面包含多个用于消费者路由策略URL元数据信息;
      • configurators :动态配置目录,下面包含多个用于服务者动态配置的URL信息。

Dubbo使用ZooKeeper作为注册中心的配置方式如下:

<!-- 指定注册中心的位置,以下两种写法任选其一 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值