【Dubbo】Dubbo架构的演进过程分析

这篇具有很好参考价值的文章主要介绍了【Dubbo】Dubbo架构的演进过程分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Dubbo】Dubbo架构的演进过程分析

📫作者简介:小明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架构的演进过程分析

二、Dubbo架构的演进-Dubbo 2.x

Dubbo 2.x 是 Dubbo 的第二个版本,支持了服务治理和容错机制的面向服务的体系结构模式。

Dubbo1.x到Dubbo2.x 主要包括以下几个方面:

一、支持更多的协议和序列化方法,包括rest、thrift、protobuf等;二、支持多种服务注册和多种发现方法,包括zookeeper、redis、consult等;三、支持多种负载均衡和容错机制,包括随机、轮询、一致性哈希、快速失败等;四、支持服务治理功能,包括监控、路由、限流、熔断等。

【Dubbo】Dubbo架构的演进过程分析

所有与网络通信相关的内容都封装在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数据面。

服务治理控制表面:服务治理控制表面并不是专门指注册中心等单个特定组件,而是Dubbo治理系统的抽象表达。控制包括协调服务发现的注册表、流量控制策略、Dubbo管理控制台等。如果采用service Mesh架构,它还包括Istio等服务网格控制表面。

Dubbo数据面:数据平面表示集群中部署的所有Dubbo进程,进程之间通过RPC协议实现数据交换。Dubbo定义了微服务应用程序开发和调用规范,并负责完成数据传输编码和解码工作。服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程;服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程。

2、Dubbo数据面架构

从数据面视角,Dubbo 帮助解决了微服务实践中的以下问题:Dubbo 作为 服务开发框架 约束了微服务定义、开发与调用的规范,定义了服务治理流程及适配模式Dubbo 作为 RPC 通信协议实现 解决服务间数据传输的编解码问题。

【Dubbo】Dubbo架构的演进过程分析

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控制台,可以可视化和显示数据指示器。

【Dubbo】Dubbo架构的演进过程分析

3.2、服务网格

将 Dubbo 接入 Istio 等服务网格治理体系

【Dubbo】Dubbo架构的演进过程分析

3.3、Dubbo Admin

Admin 控制台提供了 Dubbo 集群的可视化视图,通过 Admin 你可以完成集群的几乎所有管控工作。Dubbo Admin查询服务、应用或机器状态、创建项目、服务测试、文档管理等、查看集群实时流量、定位异常问题等、流量比例分发、参数路由等流量管控规则下发。

【Dubbo】Dubbo架构的演进过程分析

总结

本文讲了Dubbo架构的演进的Dubbo1.x的RMI体系结构,到Dubbo2.x服务注册、发现和调用,最后Dubbo架构的演进到Dubbo3.x丰富了,Dubbo微服务集群架构、数据面架构(服务开发框架、Dubbo通信协议)、Dubbo服务治理(服务治理抽象、服务网格)。

到了这里,关于【Dubbo】Dubbo架构的演进过程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 技术架构的演进-八大架构

    目录: 常见概念 评价指标 单机架构 应用数据分离架构 应用服务集群架构 读写分离 / 主从分离架构 引入缓存 —— 冷热分离架构 垂直分库 业务拆分 —— 微服务 容器化引入——容器编排架构 总结 1.常见概念: 应用(Application) / 系统(System) :为了完成一整套服务的一个

    2024年02月15日
    浏览(29)
  • 架构演进及常用架构

          部署 CDN 节点: 用户访问量的增加意味着用户地域的分散请求,如果所有请求都直接发送中心服务器的话,距离越远,响应速度越差,这时就需要用到 CDN 技术,通过 CDN 加速,保证用户访问每次都从最近的服务器获取数据.  分布式数据库: 分布式数据库是网站数据库

    2024年02月12日
    浏览(21)
  • 【架构师】零基础到精通——架构演进

    博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮

    2024年02月02日
    浏览(77)
  • 《凤凰架构》第一章——服务架构演进史

    前言 刚开始决定弄懂文中所提到的所有东西,就像我写ByteByteGo呢几篇文章一样,把每一句话都弄懂。但是对于《凤凰架构》来说,这有点太费时间了,并且没有必要,有些东西可能永远都不会用到,但文章为了全面的介绍一个内容,会提到那些东西。所以我还是针对一些自

    2024年02月14日
    浏览(27)
  • 【架构】互联网应用开发架构演进历程

    首先我们了解下计算机软件的发展历史,大概总结概括,分为c/s时代,web1.0时代和web2.0时代。 c/s时代:富客户端方案。卖软件可赚钱。​例如 qq、影音、游戏。 1.0时代:主要是单向信息的发布,即信息门户—广大浏览器客户端​ ,互联网内容是由少数编辑人员(或站长)定制的

    2023年04月26日
    浏览(50)
  • 淘宝技术架构演进

    看了《淘宝技术这十年》,总结于此。 从无到有 2003年,eBay 和易趣在资本方面正打得不可开交,那怎么在最短的时间内把一个网站从零开始 建立起来呢? 淘宝为了尽快上线,仅花了一个月把买来的LAMP(Linux+ Apache+MySQL+PHP)改造上线。主要的改造是:从一个数据库进行所有的

    2024年02月06日
    浏览(32)
  • 开放网关架构演进

    作者:庄文弘(弘智) 淘宝开放平台是阿里与外部生态互联互通的重要开放途径,通过开放的产品技术把阿里经济体一系列基础服务,像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴,推动行业的定制、创新、进化, 并最终促成新商业文明生态圈。

    2024年02月12日
    浏览(23)
  • 合约广告平台架构演进实践

    作者 | 王悦凯 导读 从事B端业务系统研发多年,不免会有这样的思考:B端系统的技术挑战是什么?什么样的业务架构算好架构?本文结合百度合约广告业务的发展历程,介绍广告投放平台从单体架构到微服务架构演进过程中碰到的问题和思考。希望通过本文的介绍,让大家更

    2024年02月02日
    浏览(26)
  • 电商系统架构演进

    具体以电子商务网站为例, 展示web应用的架构演变过程。 这个时候是一个web项目里包含了所有的模块,一个数据库里包含了所需要的所有表,这时候网站访问量增加时,首先遇到瓶颈的是应用服务器连接数,比如tomcat连接数不能无限增加,线程数上限受进程内存大小、CPU内

    2024年02月08日
    浏览(23)
  • 架构的演进

    单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。 存在的问题: 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战 迭代困难:每次功能的变更或bug的修复都会导致重新

    2024年01月20日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包