首页/ 学科题库/ zookeeper/ ZooKeeper服务注册发现机制
zookeeper 实战教程

ZooKeeper服务注册发现机制

2026-05-24 约 10 分钟 juanwangdev

ZooKeeper服务注册发现机制

服务注册发现是微服务架构基础组件。

服务注册发现模型

模型设计:

Java
/services                    <- 服务根目录
/services/order-service      <- 订单服务目录
/services/order-service/instance-0001 <- 服务实例(临时节点)
/services/user-service       <- 用户服务目录

节点数据存储:

text
服务地址存储在节点数据中:
192.168.1.100:8080

或完整元数据:
{
  "host": "192.168.1.100",
  "port": 8080,
  "weight": 1,
  "status": "up"
}

工作流程:

角色操作
提供者创建临时节点注册地址
消费者获取子节点列表发现服务
消费者监听子节点变化实时更新

服务发现流程:

text
1. 服务启动,创建临时节点注册
2. 消费者获取/services/order子节点
3. 解析子节点数据获取地址列表
4. 从列表中选择一个地址调用
5. 监听子节点变化,实时更新

提示:临时节点自动清理是服务注册的核心优势。

临时节点服务注册

注册代码:

text
// 服务启动时注册
String path = zk.create(
    "/services/order-service/instance-",
    "192.168.1.100:8080".getBytes(),
    ZooDefs.Ids.OPEN_ACL_UNSAFE,
    CreateMode.EPHEMERAL_SEQUENTIAL
);
// 结果:/services/order-service/instance-0000000001

注册参数:

参数说明
path节点路径前缀
data服务地址数据
acl访问权限
modeEPHEMERAL_SEQUENTIAL

临时节点特性:

特性说明
会话绑定创建会话存活期间存在
自动删除会话结束自动删除
无需清理服务宕机自动注销

服务注销场景:

场景处理
服务正常停止删除临时节点
服务宕机会话超时自动删除
网络断开会话失效自动删除

健康检查:

text
临时节点 = 存活状态
节点存在 → 服务存活
节点删除 → 服务不可用
无需额外健康检查

注册注意事项:

注意点说明
会话超时设置合理的超时时间
重连处理重连后重新注册
数据更新地址变化需更新节点数据

注意:服务重连后需重新创建临时节点注册。

要点总结

  • 服务目录按服务名称组织
  • 临时节点存储服务实例地址
  • 临时节点绑定会话,自动注销
  • 服务宕机自动从注册表移除
  • 消费者获取子节点列表发现服务
  • EPHEMERAL_SEQUENTIAL模式注册
  • 无需额外健康检查机制
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 ZooKeeper配置版本与环境隔离 下一篇 → ZooKeeper服务缓存与唯一ID