dubbo-servicecomb: 实现 dubbo 技术向 spring cloud 平滑演进

举报
liubao68 发表于 2020/10/16 11:29:04 2020/10/16
【摘要】 本文提供一个参考技术方案,实现 dubbo 技术向 spring cloud 平滑演进。

本文提供一个参考技术方案,实现 dubbo 技术向 spring cloud 平滑演进。支持平滑演进的核心问题是要解决老微服务和新微服务之间的互通问题,并且在很长的一个开发周期内,老微服务和新微服务能够被统一管理。 技术架构方案还需要具备足够的弹性,能够支持业务持续迭代的进行功能开发,能够支持未来的服务合并和拆分。


该方案使用 dubbo-servicecomb。dubbo-servicecomb 帮助实现 dubbo 应用、spring cloud 应用统一注册和发现,并通过 dubbo REST 沟通 spring cloud 应用和 dubbo 应用,同时我们引入了 spring cloud gateway网关,网关在持续迭代演进的过程中扮演非常重要的角色,可以我的博客单体应用微服务改造实践中有详细的介绍。遗留系统还有很多前端的服务,该方案中假设前端应用采用spring boot+struts开发,不过没关系,采用tomcat、spring mvc等技术开发的前端应用依然适用于这个方案。前端应用的部署形态是非常灵活的,可以采用CDN的方式部署到其他region,有可以按照下面方案展示的那样,和所有微服务统一注册和管理。下图展示了该方案微服务的调用关系。




该方案的代码示例可以从github下载,项目由5个微服务组成:


  1. price-provider: dubbo微服务,监听 dubbo 协议

  2. order-consumer: dubbo微服务,监听 rest 协议

  3. portal-consumer: spring cloud 微服务, 监听 rest 协议

  4. spring-cloud-gateway: 应用网关

  5. stucts-website: 前端服务,采用 spring boot+struct开发。 


下图展示了部分微服务在开源注册中心里面注册的服务信息:



平滑演进的思路:


(1) 老版本的 dubbo 微服务 2.6.x、2.7.x 不再提供修改和重构。新服务使用 spring cloud 应用开发。dubbo 微服务的能力通过新增 dubbo rest 微服务对外开放。

(2) 如果新版本spring cloud微服务需要访问老版本的 dubbo 微服务,在 dubbo REST 里面增加一个 REST 接口,REST 接口调用老版本的 dubbo 微服务实现, spring cloud 应用调用 REST 接口来访问老版本的 dubbo 微服务。由于老版本的 dubbo 微服务不再提供修改和重构, 因此不需要考虑老版本的 dubbo 微服务访问 spring cloud 应用的场景, 能够减少重构的风险。

(3)老版本的 dubbo 微服务功能,可以循序渐进的采用spring cloud微服务重新实现,比如按照迭代计划一次实现几个接口。 





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。