服务发现之跨机房高可用(一)

基本原则是:

1 每个机房负责自己的服务注册
2 拉取其他机房的服务注册信息

7835103-2908921a30e1e766.png
image.png

sync具体怎么同步数据呢:

7835103-406180986e27b1fe.png
image.png

1 全量同步:
每隔半个小时,全量同步一次对方机房数据
2 增量同步:
每个机房的数据都有个机房标示,都有最大的版本号,每秒请求对方机房,看同步的最大版本号是否一样,如果不一样,获取差异的版本号,同步这些版本号对应的数据。
3 如果一段时间sync和对应机房连不通的时候,删除这个机房的所有数据

注意点:

1 获取服务实例列表的时候,从discovery和sync合并数据返回

方案优点:

1 简单通用,不管你的单机房的实现是redis还是raft,都是透明的。

为什么用拉的方式,而不是用推的方式?

拉的方式更加可控,也可以保证数据的一致性。
推的方式,在失败或者超时的情况下,很难做重试策略。
机房连不通的情况下,要去掉机房所有的数据,这个逻辑和拉方式是比较友好的。

猜你喜欢

转载自blog.csdn.net/weixin_34261739/article/details/87387299
今日推荐