服务注册发现

服务注册发现的作用

感知服务端的变化,获取最新服务节点的连接信息。

服务注册发现的处理流程


**服务注册:**服务提供方将对外暴露的接口发布到注册中心内,注册中心为了检测服务的有效状态,一般会建 立双向心跳机制。
**服务订阅:**服务调用方去注册中心查找并订阅服务提供方的 IP,并缓存到本地用于后续调用。

如何实现服务的注册发现

基于 ZooKeeper 的服务发现方式:

  1. 在 ZooKeeper 中创建一个服务根路径,可以根据接口名命名(例
    如:/micro/service/com.test.orderService),在这个路径再创建服务提供方与调用方目录(server、client),分别用来存储服务提供方和调用方的节点信息。
  2. 服务端发起注册时,会在服务提供方目录中创建一个临时节点,节点中存储注册信息。
  3. 客户端发起订阅时,会在服务调用方目录中创建一个临时节点,节点中存储调用方的信息,同时watch 服务提供方的目录(/micro/service/com.test.orderService/server)中所有的服务节点数据。当服务端产生变化时ZK就会通知给订阅的客户端。

ZooKeeper方案的特点:
强一致性,ZooKeeper 集群的每个节点的数据每次发生更新操作,都会通知其它 ZooKeeper 节点同时执行更新。

健康监测

为什么需要健康监测

比如网络中的波动,硬件设施的老化等等。可能造成集群当中的某个节点存在问题,无法正常调用。

健康监测实现分析

心跳检测的过程总共包含以下状态:

  • 健康状态
  • 波动状态
  • 失败状态

完善的解决方案

  • 阈值: 健康监测增加失败阈值记录。
  • 成功率: 可以再追加调用成功率的记录(成功次数/总次数)。
  • 探针:对服务节点有一个主动的存活检测机制。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐