news 2026/7/27 16:32:15

Dubbo学习(四):深入 Registry Config

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dubbo学习(四):深入 Registry Config

深入 Registry & Config:服务的“户籍管理”与“宪法中心”

*请关注公众号【碳硅化合物AI】

摘要

微服务的核心在于“动态”。服务实例今天在机器 A,明天可能就漂到了机器 B。Registry(注册中心)负责记录这些动态地址,而 Config Center(配置中心)则负责统管所有的治理规则(超时时间、路由规则等)。本篇将揭秘 Dubbo 如何利用 ZooKeeper、Nacos 等中间件实现服务发现,以及RegistryDirectory如何像变魔术一样把注册中心的字符串变成可调用的Invoker

1. 核心角色:动态世界的基石

Registry (注册中心)

负责服务地址的注册与发现。

  • Provider: 启动时 Register(写数据)。
  • Consumer: 启动时 Subscribe(订数据)。
publicinterfaceRegistryextendsNode,RegistryService{voidregister(URLurl);voidunregister(URLurl);voidsubscribe(URLurl,NotifyListenerlistener);voidunsubscribe(URLurl,NotifyListenerlistener);}

Config Center (配置中心)

负责存储全局配置和治理规则。

  • DynamicConfiguration: 抽象接口,支持 Nacos, Apollo, ZK 等。
  • 作用: 动态调整超时时间、权重、路由规则,无需重启应用。

2. 注册中心架构:FailbackRegistry 的智慧

Dubbo 的注册中心实现通常继承自FailbackRegistry。为什么叫 Failback(失败自动恢复)?因为网络是不可靠的。

容错机制

  1. 内存缓存:AbstractRegistry维护了一份properties缓存。即使注册中心挂了,应用重启时也能从本地文件加载上次的地址,保证服务可用。
  2. 失败重试:FailbackRegistry内部有一个HashedWheelTimer(时间轮定时器)。
    • 如果register()失败,不会抛异常让应用崩掉,而是把任务丢进failedRegistered队列,后台定时重试。
    • 同理,subscribe()失败也有failedSubscribed队列。

核心类关系图 (PlantUML)

3. 皇冠上的明珠:RegistryDirectory

RegistryDirectory是连接RegistryCluster的桥梁。它实现了NotifyListener接口。

魔法流程:

  1. 订阅:RegistryDirectory向注册中心订阅providersconfiguratorsrouters等目录。
  2. 通知: 当 Provider 上线/下线时,注册中心触发notify(List<URL> urls)
  3. 转换:RegistryDirectory将收到的 URL 字符串列表,通过Protocol.refer()转换成一个个活生生的Invoker对象。
  4. 持有: 最终,RegistryDirectory持有一个List<Invoker>,供 Cluster 层进行负载均衡。
// 简化逻辑publicvoidnotify(List<URL>urls){List<Invoker>newInvokers=newArrayList<>();for(URL url:urls){Invokerinvoker=protocol.refer(serviceType,url);// 关键点!newInvokers.add(invoker);}this.invokers=newInvokers;}

4. 多注册中心支持

Dubbo 支持同一个服务注册到多个注册中心,或者从多个注册中心订阅。

场景:

  • 双注册: 此时正在从 ZK 迁移到 Nacos,服务需要同时注册到两边,保证平滑迁移。
  • 多订阅: 依赖的服务有的在 ZK,有的在 Nacos。

配置:

<dubbo:registryid="zk"address="zookeeper://127.0.0.1:2181"/><dubbo:registryid="nacos"address="nacos://127.0.0.1:8848"/><dubbo:serviceregistry="zk,nacos"ref="demoService"/>

5. 配置中心:治理规则的下发

配置中心与注册中心在逻辑上是分离的(虽然物理上可能都用 Nacos)。

  • 应用级配置:dubbo.properties里的内容,如dubbo.protocol.port=20880
  • 治理规则:
    • Configurator: 动态修改 URL 参数(如改 timeout)。
    • Router: 路由规则(如灰度发布,让 10% 流量去新版本)。

RegistryDirectory不仅监听 Provider 列表,还监听 Configurator 列表。一旦规则变化,它会重新生成 Invoker,应用新的参数。

总结

Registry 是服务的通讯录,Config Center 是服务的法律法规。FailbackRegistry保证了通讯录丢失时的容灾能力,而RegistryDirectory则是那个勤勤恳恳的秘书,时刻根据通讯录和法规的变化,动态调整手里的Invoker列表。下一篇,我们将进入Cluster 层,看看有了这堆Invoker之后,如何进行负载均衡和容错处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 17:32:37

iOS UI框架革命:DCFrame如何用数据驱动让开发效率提升300%

iOS UI框架革命&#xff1a;DCFrame如何用数据驱动让开发效率提升300% 【免费下载链接】DCFrame DCFrame is a Swift UI collection framework, which can easily create complex UI. 项目地址: https://gitcode.com/gh_mirrors/dc/DCFrame 还在为复杂的iOS界面布局而头…

作者头像 李华
网站建设 2026/7/25 23:38:04

Zephyr编译优化终极指南:5个技巧提升嵌入式系统性能

Zephyr编译优化终极指南&#xff1a;5个技巧提升嵌入式系统性能 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/7/25 15:27:51

创业者低成本获客渠道推荐系统,核心功能,输入项目,人群与预算,推荐同城引流等低成本渠道,提供操作指南与获客效果统计,应用场景,助力创业者解决资金,获客难的问题。

创业者低成本获客渠道推荐系统下面是一个基于JavaScript的创业者低成本获客渠道推荐系统&#xff0c;帮助创业者解决资金有限情况下的获客难题。<!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"…

作者头像 李华
网站建设 2026/7/26 4:11:08

7B参数撬动企业AI革命:IBM Granite-4.0-H-Tiny深度解析

7B参数撬动企业AI革命&#xff1a;IBM Granite-4.0-H-Tiny深度解析 【免费下载链接】granite-4.0-h-tiny 项目地址: https://ai.gitcode.com/hf_mirrors/ibm-granite/granite-4.0-h-tiny 导语 IBM最新发布的Granite-4.0-H-Tiny&#xff08;GHT&#xff09;以7B参数实现…

作者头像 李华
网站建设 2026/7/25 16:55:53

Spring AI 接入 MCP 协议的实战案例

引言 在现代软件开发中&#xff0c;接入不同协议以实现数据交换和通信是非常普遍的需求。MCP&#xff08;Message Communication Protocol&#xff09;协议在软件架构中扮演了重要的角色&#xff0c;尤其是在微服务架构中。本文将通过一个实际案例&#xff0c;探讨如何将Spring…

作者头像 李华
网站建设 2026/7/26 16:04:23

120亿参数改写效率标杆:GLM-4.5-Air开启智能体部署新纪元

120亿参数改写效率标杆&#xff1a;GLM-4.5-Air开启智能体部署新纪元 【免费下载链接】GLM-4.5-Air 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/GLM-4.5-Air 导语 当企业还在为GPT-4的高昂调用成本&#xff08;0.06美元/千tokens&#xff09;和开源模型的性…

作者头像 李华