【ServiceComb服务注册/注销机制】
心跳:微服务实例定期向注册中心发送心跳,向SC确认自己是健康的
pull:pull模式,Consumer定期从注册中心拉取Provider的实例列表
watch:watch模式,Consumer不会定期拉取,仅在Provider的实例列表发生变更时,由SC通知Consumer去拉取Provider实例列表
心跳机制:
微服务实例注册到注册中心之后,实例定期向注册中心,SC根据心跳确认实例的健康情况,如果实例不可用,则从SC的etcd中移除对应的微服务实例。
SC多久会把实例从注册中心移除?
(单个实例和SC之间的机制)
配置也是截图中的配置项

cse.service.registry.instance.healthCheck.interval和cse.service.registry.instance.healthCheck.times(默认为3)共同决定。
微服务实例注册的这两个信息也保存在注册中心,(默认情况下)注册中心判断的时候:如果连续3个周期没有收到心跳,也就是一分半钟之后,注册中心会从etcd中把该实例删除。
Consumer和Provider实例的注册、注销流程
(现网实际运行过程中Consumer、Provider的注册注销机制)
当前有Pull模式和watch模式两种,通过什么方式开启?他们有什么区别吗?
服务中心支持使用 PULL 和 PUSH 两种模式通知实例变化
通过配置项cse.service.registry.instance.watch来设置,默认是true表示watch模式,配置成false则表示是pull模式。
pull模式:Consumer定期从注册中心拉取Provider的最新的实例列表,默认30s,由配置项cse.service.registry.instance.pull.interval控制。
(优点)Consumer和SC之间不需要额外的链接
(缺点)SC的Provider实例列表变更后到Consumer感知需要一定的延时
watch模式: Consumer不会定期拉取,仅在Provider的实例列表发生变更时,由SC通知Consumer去拉取Provider实例列表。这种模式下SC和Consumer之间会建立一个双向的WebSocket链接,SC实例变更时自动通知Consumer,
(优点)SC的Provider实例列表变更后立刻通知Consumer,触发拉取。
(缺点)Consumer和SC之间需要一条额外的WebSocket链接
Provider实例启动/停止时,Consumer端的Provider实例列表是何时发生变化的?
(1)实例启动时,Provider会发起到SC的实例注册,SC在etcd中保存Provider的实例列表。

(2)那Consumer什么时候能发现SC中的这个新实例呢?
两种模式是不一样的
(pull模式)最多30s(配置项控制)后,Consumer会主动去SC拉取最新的Provider实例列表。
(watch模式)SC中Provider实例列表更新后,立即通知Consumer发起拉取流程。(因此发现比上面快)
(3)Provider停止后,需要多久能从SC的ETCD删除?
实际是需要3*30s=1分半钟,具体参见上面的心跳章节。
(4)那Consumer什么时候能发现SC中的这个实例不可用了呢?
(pull模式)最多30s(配置项控制)后,Consumer会主动去SC拉取最新的Provider实例列表。
(watch模式)SC中Provider实例列表更新后,立即通知Consumer发起拉取流程。

浙公网安备 33010602011771号