java架构师指南:Dubbo 能为架构选型和迁移等提供哪些帮助

    Dubbo协议本身及其与服务治理相关的功能的详细信息不是本文的重点。今天,我们将从更高的层次看待在公司内部构建微服务系统的挑战,以及Dubbo如何选择和迁移体系结构,等等。     公司的...

    Dubbo协议本身及其与服务治理相关的功能的详细信息不是本文的重点。今天,我们将从更高的层次看待在公司内部构建微服务系统的挑战,以及Dubbo如何选择和迁移体系结构,等等。

attachments-2020-09-ioepcbtI5f7468f76faa4.jpg

    公司的内部微服务可能基于相同的服务框架(例如Dubbo)进行开发。对于这种架构,我们称其为同类微服务系统。一些公司的微服务可能会得到更多使用,我们称其为由不同服务框架构建的异构微服务系统。在大型组织中,具有不同技术堆栈的多个微服务系统并存仍然非常普遍。这种情况可能有很多原因。例如,它可能是由遗留系统带来的,或者公司可能正在迁移其技术堆栈,或者它可能是独立选择不同业务部门以满足他们自己的特殊需要的(这也意味着异构微服务的长期共存)。

    1.异构微服务体系共存

    我们很容易想到的一个挑战是:不同的系统通常使用不同的RPC通信协议并部署独立的注册表群集。面对这种多协议,多注册表的集群方案,如何实现相互透明的地址发现和透明的RPC调用?如果我们什么也不做,那么每个微服务系统只能在自己的系统中感知服务状态,并且流量在自己的系统中也是封闭的。为了从系统A平稳地迁移到系统B,或者长时间保持公司内多个系统的共存,解决不同系统之间的互连和互通以及实现流量的透明调度将是非常重要的环节。

    2.Dubbo体系内部

    多协议、多注册中心集群的问题在同构的微服务体系中也可能存在,尤其是当一个组织内部的微服务规模增长到一定量级的时候。

    我们可能要在不同的服务之间采用不同的通信协议,因为不同的服务面临不同的业务场景,而这也进一步导致了数据传输特点的不同,我们需要分别采用更适合各类业务特点的协议。比如典型的场景:我们可能对于普通的业务服务采用Dubbo协议,对于和FrontEnd交互的服务需要HTTP协议,而对于需要流式数据传输的业务则采用gRPC协议等等。

    Dubbo体系内部另一个常出现的问题是,在大规模分布式部署的场景下,微服务系统会做跨区域、跨注册中心的部署,这个时候就会出现多集群间地址同步和流量调度的问题。

    总结起来,不论是同构体系还是异构体系,都面临对多协议通信、多注册中心集群地址发现的问题。Dubbo目前是支持多协议、多注册中心的,可以说就是为解决我们上面分析的Dubbo同构体系内的场景而设计的,因此下面我们从同构体系的多协议、多注册中心场景讲起,先了解Dubbo多协议、多注册中心的基本支持情况以及它们是如何工作的。而在后面的一章再进一步探索怎么扩展这个能力来支持异构微服务体系的互联互通。

推荐阅读:java架构师指南之架构师的工作流程

  • 发表于 2020-09-30 19:18
  • 阅读 ( 193 )
  • 分类:技术干货

0 条评论

请先 登录 后评论
JAVA Q&A
JAVA Q&A

173 篇文章

作家榜 »

  1. JAVA Q&A 173 文章
  2. 江南 1 文章
  3. 伯乐 0 文章
  4. 孤存 0 文章
  5. q21164340 0 文章
  6. 赫敏12 0 文章
  7. 子牙 0 文章
  8. 赫敏 0 文章