本文转载自微信公众号「程序猿DD」,作者翟永超。转载本文请联系程序猿DD公众号。
创新互联公司专业提供南充服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买南充服务器托管服务,并享受7*24小时金牌售后服务。
这几天在不同的微信群和社区里连续碰到了一类问题:
比如spring4all的帖子:http://bbs.spring4all.com/thread/21
又比如昨天在秦总的群里也进行了类似的讨论。
虽然描述不同,但核心都围绕着一个问题:多个不同注册中心下的服务治理问题!下面就针对这个问题,展开说说我的思考、实践与建议吧。
先来说说背景问题,有的群友在看到这类问题的时候,第一反应就是怎么用多个注册中心,是不是蛋疼了瞎搞的?
显然有点脑子的人都不会这样做!那么为什么会存在这样的场景呢,通常都是这样演变而来的:
于是,这就有了文首大家讨论的这种场景。所以,这是一个架构演进的过程产物,并不是因为设计不好,才出来的怪胎架构。
方案一:在业务服务端,实现多注册中心的注册与发现
这种方式就是文首,大家所提问题的方案,实现这种方案涉及几点核心问题的解决:
同时,这里需要注意的几个点:
通过这样一顿操作,每个业务服务与所有注册中心都建立了联系,原本处于不同系统的各种服务也都能互相发现并实现互相调用了。
方案二:在各个注册中心之间,实现服务数据的同步
这种方法是新建一个注册中心同步的服务,它的任务很简单,就是把每个注册中心上的服务信息同步到其他注册中心上,同时监听每个注册中心的变化以保持所有不同注册中间都包含了所有系统下的服务。
在这种情况下,只要是Spring Cloud构建的业务服务,那么就只需要逐步的更换注册中心的依赖,就能轻松的把原本处于不同注册中心下的服务,转移到同一注册中心下的服务了。
上面所述两种方案的大致优缺点如下:
方案一 | 方案二 | |
---|---|---|
优点 | 不需增加部署成本 | 业务服务侵入性小 |
缺点 | 业务服务侵入性大 | 需要增加部署成本 |
当然,对于方案二也会有一些复杂情况,如果对注册过程有一些特殊定制的,会需要做一些扩展兼容。但比起方案一的改造程度来说,在业务应用侧的逻辑复杂度植入是非常小的。
同时,因为要统一服务治理,那么事后最终状态往往就是只保留最后想要集中维护的注册中心的。这个时候。如果采用第一种方案,那么势必还要去重新调整注册与发现机制,将要淘汰的注册与发现逻辑去除,又是一件比较复杂的事情。
所以,综合比较这两种方法方法来说。个人认为采用方案二,同步注册中心的数据来完成统一服务治理的任务,要比方案一更加稳妥,对于业务开发的影响面最小。虽然会引入一些部署成本,但这些成本对于一个多系统的基础下,那是微乎其微的。
网站栏目:存在多个不同注册中心的时候,如何平滑的统一注册中心?
路径分享:http://www.csdahua.cn/qtweb/news27/521427.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网