📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。
📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。
🏆 2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人
🏆 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家
🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~
🍅 文末获取联系 🍅 👇🏻 精彩专栏推荐订阅收藏 👇🏻
专栏系列(点击解锁)
学习路线(点击解锁)
知识定位
🔥Redis从入门到精通与实战🔥
Redis从入门到精通与实战
围绕原理源码讲解Redis面试知识点与实战
🔥MySQL从入门到精通🔥
MySQL从入门到精通
全面讲解MySQL知识与企业级MySQL实战 🔥计算机底层原理🔥
深入理解计算机系统CSAPP
以深入理解计算机系统为基石,构件计算机体系和计算机思维
Linux内核源码解析
围绕Linux内核讲解计算机底层原理与并发
🔥数据结构与企业题库精讲🔥
数据结构与企业题库精讲
结合工作经验深入浅出,适合各层次,笔试面试算法题精讲
🔥互联网架构分析与实战🔥
企业系统架构分析实践与落地
行业最前沿视角,专注于技术架构升级路线、架构实践
互联网企业防资损实践
互联网金融公司的防资损方法论、代码与实践
🔥Java全栈白宝书🔥
精通Java8与函数式编程
本专栏以实战为基础,逐步深入Java8以及未来的编程模式
深入理解JVM
详细介绍内存区域、字节码、方法底层,类加载和GC等知识
深入理解高并发编程
深入Liunx内核、汇编、C++全方位理解并发编程
Spring源码分析
Spring核心七IOC/AOP等源码分析
MyBatis源码分析
MyBatis核心源码分析
Java核心技术
只讲Java核心技术
本文目录
本文目录
本文导读
一、Dubbo架构的演进-Dubbo 1.x
二、Dubbo架构的演进-Dubbo 2.x
1、服务注册
2、服务发现
3、服务调用
三、Dubbo架构的演进-Dubbo 3.x
1、Dubbo微服务集群架构
2、Dubbo数据面架构
2.1、Dubbo服务开发框架
2.2、Dubbo通信协议
3、Dubbo 服务治理
3.1、服务治理抽象
3.2、服务网格
总结
本文导读
本文讲了Dubbo架构的演进的Dubbo1.x的RMI体系结构,到Dubbo2.x服务注册、发现和调用,最后Dubbo架构的演进到Dubbo3.x丰富了,Dubbo微服务集群架构、数据面架构(服务开发框架、Dubbo通信协议)、Dubbo服务治理(服务治理抽象、服务网格)。文章来源地址https://www.toymoban.com/news/detail-469653.html
一、Dubbo架构的演进-Dubbo 1.x
Dubbo 1.x 是Dubbo的第一版,采用传统的RPC服务架构,包括三个角色:服务提供者、服务使用者和注册中心,Dubbo 1.x 支持多种协议和序列化方法,包括dubbo、hessian、http等,但不支持服务治理和容错机制。
Dubbo 1.x是RMI体系结构,RMI架构有三个角色:注册中心(Registry)、客户端(Client)、服务端(Server)。在整个 RMI 中Stub(存根) 和 Skeleton(骨架)。随后的RPC框架基本上遵循了这一概念,客户端Stub和服务器Skeleton是Service的代理对象,专门用于屏蔽网络通信。
二、Dubbo架构的演进-Dubbo 2.x
Dubbo 2.x 是 Dubbo 的第二个版本,支持了服务治理和容错机制的面向服务的体系结构模式。
Dubbo1.x到Dubbo2.x 主要包括以下几个方面:
一、支持更多的协议和序列化方法,包括rest、thrift、protobuf等;二、支持多种服务注册和多种发现方法,包括zookeeper、redis、consult等;三、支持多种负载均衡和容错机制,包括随机、轮询、一致性哈希、快速失败等;四、支持服务治理功能,包括监控、路由、限流、熔断等。
所有与网络通信相关的内容都封装在Stub和Skeleton中。相对而言,服务器端Skeleton的概念实际上有点模糊,因为RMI中没有明确的对象,而客户端Stub是接口Service的代理对象。整个服务注册、发现和调用过程如下:
1、服务注册
(对应图1-2)首先在服务器上创建远程对象,一种是创建一个ServiceImpl远程对象、注册ServiceImpl服务,ServiceImpl继承自UnicastRemoteObject,并在创建时随机绑定到端口,启动套接字以侦听客户端请求,再向注册表注册服务。
2、服务发现
(对应图3-4)当客户端访问注册中心时,服务器生成的Stub将被序列化并传递给客户端。在客户端反序列化之后,客户端将生成相应的实例,此时可以使用此Stub与服务器进行通信,Stub由服务器生成,并在使用过程中通过网络传输到客户端。
3、服务调用
(对应图5-9)客户端Stub和服务器Skeleton通信并返回结果,有一个关键问题,Stub在调用时要找到调用的方法,对远程方法的Java RPC调用需要四个信息:接口名称、方法名称、参数类型和参数。在服务器端注册服务时,每个服务都会生成一个ObjID并将其封装在Stub中。同时,Java类中的每个方法都对应一个唯一的数字opum,Stub在每次通信期间向服务提供商发送ObjId和opum。
三、Dubbo架构的演进-Dubbo 3.x
Dubbo 3.x 是Dubbo的第三个版本,采用云原生架构模式,支持更多微服务场景。Dubbo 3的改进主要包括以下几个方面:支持更多的协议和编解码方法,包括http2、GRPC、AVRO等。;支持更多的注册和配置中心,包括ETCD、CONSUL、NACOS、APOLLO等;支持更多的服务治理和微服务能力,包括微服务网关、服务注册和发现、配置中心、服务跟踪等。
1、Dubbo微服务集群架构
根据抽象架构,它分为两层:服务治理抽象控制面和Dubbo数据面。
服务治理控制表面:服务治理控制表面并不是专门指注册中心等单个特定组件,而是Dubbo治理系统的抽象表达。控制包括协调服务发现的注册表、流量控制策略、Dubbo管理控制台等。如果采用service Mesh架构,它还包括Istio等服务网格控制表面。
Dubbo数据面:数据平面表示集群中部署的所有Dubbo进程,进程之间通过RPC协议实现数据交换。Dubbo定义了微服务应用程序开发和调用规范,并负责完成数据传输编码和解码工作。服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程;服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程。
2、Dubbo数据面架构
从数据面视角,Dubbo 帮助解决了微服务实践中的以下问题:Dubbo 作为 服务开发框架 约束了微服务定义、开发与调用的规范,定义了服务治理流程及适配模式Dubbo 作为 RPC 通信协议实现 解决服务间数据传输的编解码问题。
2.1、Dubbo服务开发框架
Dubbo作为一个服务开发框架,包括以下具体内容:RPC服务定义和开发范式。例如,Dubbo支持通过IDL定义服务,还支持特定于编程语言的服务开发和定义方法,例如通过Java Interface定义服务。RPC服务发布和调用API。Dubbo支持调用服务的编程模式,如同步、异步和反应流,以及请求上下文API和设置超时时间。服务治理战略、流程和适应方法。作为服务框架的一个数据方面,Dubbo定义了服务治理抽象,如服务地址发现、负载平衡策略、基于规则的流量路由和度量指标收集,并将其适应于特定的产品实现。
2.2、Dubbo通信协议
Dubbo 从设计上不绑定任何一款特定通信协议,HTTP/2、REST、gRPC、JsonRPC、Thrift、Hessian2 等几乎所有主流的通信协议,Dubbo 框架都可以提供支持。 这样的 Protocol 设计模式给构建微服务带来了最大的灵活性,开发者可以根据需要如性能、通用型等选择不同的通信协议,不再需要任何的代理来实现协议转换,甚至你还可以通过 Dubbo 实现不同协议间的迁移。
3、Dubbo 服务治理
服务开发框架解决了开发和通信问题,但在微服务集群环境中,我们仍然需要解决一系列问题,如无状态服务节点的动态变化、外挂配置、日志跟踪、可观察性、流量管理、高可用性和数据一致性。我们将这些问题统称为服务治理。
3.1、服务治理抽象
地址发现:Dubbo服务发现具有高性能、支持大规模集群、服务级元数据配置等优势。默认情况下,它提供各种注册表调整,如Nacos、Zookeeper和Consul,并与Spring Cloud和Kubernetes服务模型兼容,支持自定义扩展。
负载平衡:Dubbo默认提供加权随机、加权轮询、最低活动请求优先级、最短响应时间优先级、一致哈希和自适应负载等策略
流量路由:Dubbo支持通过一系列流量规则来控制业务呼叫的流量分布和行为。基于这些规则,它可以实现基于权重的比例流量分配、灰度验证、金丝雀发布、基于请求参数的路由、相同区域优先级、超时配置、重试和限流降级能力。
链接跟踪:Dubbo通过适应OpenTelemetry,正式为跟踪提供全链路跟踪支持,允许用户访问支持Skywalking和Zipkin等OpenTelemetry标准的产品。此外,Skywalking和Zipkin等许多社区也为Dubbo提供了官方改编。
可观察性:Dubbo实例通过Prometheus报告多维可观察指标,如QPS、RT、请求计数、成功率和异常计数,以帮助了解服务运行状态。通过访问Grafana和Admin控制台,可以可视化和显示数据指示器。
3.2、服务网格
将 Dubbo 接入 Istio 等服务网格治理体系
3.3、Dubbo Admin
Admin 控制台提供了 Dubbo 集群的可视化视图,通过 Admin 你可以完成集群的几乎所有管控工作。Dubbo Admin查询服务、应用或机器状态、创建项目、服务测试、文档管理等、查看集群实时流量、定位异常问题等、流量比例分发、参数路由等流量管控规则下发。
文章来源:https://www.toymoban.com/news/detail-469653.html
总结
本文讲了Dubbo架构的演进的Dubbo1.x的RMI体系结构,到Dubbo2.x服务注册、发现和调用,最后Dubbo架构的演进到Dubbo3.x丰富了,Dubbo微服务集群架构、数据面架构(服务开发框架、Dubbo通信协议)、Dubbo服务治理(服务治理抽象、服务网格)。
到了这里,关于【Dubbo】Dubbo架构的演进过程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!