建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

大脸猫爱吃...

发帖: 15粉丝: 1

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-7-13 17:05:25 5355 2 楼主 显示全部楼层
[介绍/入门] 【CSE机制】CSE微服务注册/注销机制解析

作者:任颖新

消费者云使用CSE时的常见问题及解答


关键术语解释

SC:注册中心

Consumer:调用方

Provider:被调用方

心跳:微服务实例定期向注册中心发送心跳,向SC确认自己是健康的

pullpull模式,Consumer定期从注册中心拉取Provider的实例列表

watchwatch模式,Consumer不会定期拉取,仅在Provider的实例列表发生变更时,由SC通知Consumer去拉取Provider实例列表


心跳机制

微服务实例注册到注册中心之后,实例定期向注册中心,SC根据心跳确认实例的健康情况,如果实例不可用,则从SCetcd中移除对应的微服务实例。


Q:多久发送一次心跳?

A

通过配置项cse.service.registry.instance.healthCheck.interval配置,默认为30s。(目前我们没有开放配置)


QSC多久会把实例从注册中心移除?

A

配置也是上面截图中的配置项cse.service.registry.instance.healthCheck.intervalcse.service.registry.instance.healthCheck.times(默认为3)共同决定。

微服务实例注册的这两个信息也保存在注册中心,(默认情况下)注册中心判断的时候:如果连续3个周期没有收到心跳,也就是一分半钟之后,注册中心会从etcd中把该实例删除。

 

ConsumerProvider实例的注册、注销流程

上面只是单个实例和SC之间的机制,下面详细介绍现网实际运行过程中ConsumerProvider的注册注销机制。


QCSEConsumer端的Provider实例发现,当前有Pull模式和watch模式两种,通过什么方式开启?他们有什么区别吗?

A

通过配置项cse.service.registry.instance.watch来设置,默认是true表示watch模式,配置成false则表示是pull模式。

pull模式Consumer定期从注册中心拉取Provider的最新的实例列表,默认30s,由配置项cse.service.registry.instance.pull.interval控制。

watch模式: Consumer不会定期拉取,仅在Provider的实例列表发生变更时,由SC通知Consumer去拉取Provider实例列表。这种模式下SCConsumer之间会建立一个双向的WebSocket链接,SC实例变更时自动通知Consumer

两种模式有优劣吗?实际是没有的,和开发确认过只要现网稳定使用即可。


优点

缺点

watch模式

SCProvider实例列表变更后立刻通知Consumer,触发拉取。

ConsumerSC之间需要一条额外的WebSocket链接

pull模式

ConsumerSC之间不需要额外的链接

SCProvider实例列表变更后到Consumer感知需要一定的延时


Q:  Provider实例启动/停止时,Consumer端的Provider实例列表是何时发生变化的?

A

(1)       实例启动时,Provider会发起到SC的实例注册,SCetcd中保存Provider的实例列表。

2)那Consumer什么时候能发现SC中的这个新实例呢?两种模式是不一样的

pull模式)最多30s(配置项控制)后,Consumer会主动去SC拉取最新的Provider实例列表。

watch模式SCProvider实例列表更新后,立即通知Consumer发起拉取流程。(因此发现比上面快)

3Provider停止后,需要多久能从SCETCD删除?

 实际是需要3*30s=1分半钟,具体参见上面的心跳章节。

4)那Consumer什么时候能发现SC中的这个实例不可用了呢?

pull模式)最多30s(配置项控制)后,Consumer会主动去SC拉取最新的Provider实例列表。

watch模式SCProvider实例列表更新后,立即通知Consumer发起拉取流程。


Q:  Provider实例停止后,Consumer端会有1分半到两分钟的时间还会调用到老的Provider实例,现网功能是否受影响?

A

我们有实例级的故障隔离,连续100个请求失败,就会触发实例隔离,因此影响很小。(现网实际验证)

举报
分享

分享文章到朋友圈

分享文章到微博

weixing

发帖: 4粉丝: 0

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-7-29 20:18:00 沙发 显示全部楼层

有些图片没有加载到,可能要单独上传才行!

评论
微服务小学生 2019-8-6 15:51 评论

找个版主操作一下吧

... 查看全部
微服务小学生 2019-8-12 17:21 评论

评论 微服务小学生:test

... 查看全部
微服务小学生 2019-8-12 17:21 评论

test

... 查看全部
点赞 引用 举报

微服务小学...

发帖: 15粉丝: 1

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-8-12 17:23:10 板凳 显示全部楼层
weixing 发表于 2019-7-29 20:18 有些图片没有加载到,可能要单独上传才行!

test

点赞 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册