Dubbo最全详解(图文全面总结)

Dubbo

Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信,以及微服务治理 两大关键能力,致力于高性能透明化的远程服务调用方案。
这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。

Dubbo功能

Dubbo核心功能,主要提供了:远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。

Dubbo组件
请添加图片描述
1)服务提供者(Server)
对外提供后台服务,将自己的服务信息,注册到注册中心
2)注册中心(Registry)
● 用于服务端注册远程服务以及客户端发现服务。

● 目前主要的注册中心可以借由 zookeeper,eureka,consul,etcd 等开源框架实现。

● 比如:阿里的Dubbo就是采用zookeeper实现注册中心。
3)服务消费者(Client)
从注册中心获取远程服务的注册信息,然后进行远程过程调用。
4)监控(Monitor)
为了更好的调试,发现问题,需要监控,因此Dubbo引入了监控中心,可以对消费者和提供者进行管理。
请添加图片描述

Dubbo调用流程

Dubbo调用流程,大致分为如下11步:
请添加图片描述
对照上面的整体架构图,大致分为以下8大步骤:
1、服务提供者启动,开启Netty服务,创建Zookeeper客户端,向注册中心注册服务;

2、服务消费者启动,通过Zookeeper向注册中心获取服务提供者列表,与服务提供者通过Netty建立长连接;

3、服务消费者通过接口开始远程调用服务,ProxyFactory通过初始化Proxy对象,Proxy通过创建动态代理对象;

4、动态代理对象通过invoke方法,层层包装生成一个Invoker对象,该对象包含了代理对象;

5、Invoker通过路由,负载均衡选择了一个最合适的服务提供者,在通过加入各种过滤器,协议层包装生成一个新的DubboInvoker对象;

6、再通过交换成将DubboInvoker对象包装成一个Reuqest对象,该对象通过序列化通过NettyClient传输到服务提供者的NettyServer端;

7、到了服务提供者这边,再通过反序列化、协议解密等操作生成一个DubboExporter对象,再层层传递处理,会生成一个服务提供端的Invoker对象;

8、这个Invoker对象会调用本地服务,获得结果再通过层层回调返回到服务消费者,服务消费者拿到结果后,再解析获得最终结果。

Dubbo发展历程

dubbo的发展历程,经历过如下阶段:

请添加图片描述
大致总结为3段:

1.诞生阿里

dubbo前生2008年在阿里内部诞生,2011年开源,2012年发布2.5.3版本后停止更新。

2.进入apache顶级项目

2017年阿里重启dubbo项目,并于2018年进入apache孵化,2019年成为apache顶级项目。

3.dubbo3.0

2020年发布3.0,往云原生项目发展的战略计划。

Dubbo3 新特性

Dubbo3 依旧保持了 2.x 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理能力来更好的管控微服务集群。

Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。

1.全面的性能提升
● 对比 2.x 版本,Dubbo3 版本服务发现资源利用率显著提升,对比接口级服务发现,单机常驻内存下降 50%。

● 对比应用级服务发现,单机常驻内存下降 75%,GC 次数趋零。
2.下一代 RPC 通信协议

新一代的 Triple 协议基于 HTTP/2 作为传输层,具备更好的网关、代理穿透性,原生支持 Stream 通信语义,兼容 gRPC 协议。

Triple是Dubbo3 提出的基于 HTTP2 的开放协议,基于 HTTP/2 上构建的 RPC 协议,完全兼容 gRPC,并在此基础上扩展出了更丰富的语义。

相比于原有 Dubbo2 协议Triple 有以下优势:
1)原生和 gRPC 协议互通

打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。

2)增强多语言生态

避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足,导致业务难以选型适配的问题。

3)网关友好

更容易到适配网关、Mesh架构,Triple 协议让 Dubbo 更方便的与各种网关、Sidecar 组件配合工作。

4)流式通信支持

Triple 协议支持 Request Stream、Response Stream、Bi-direction Stream。

3.Kubernetes
Dubbo3 开发的应用可以原生部署到 Kubernetes 平台,Dubbo3 也已对接到了原生的 Kubernetes Service 体系。

4.Service Mesh
Service Mesh,是一个形象化的词语表达:Service(服务)和Mesh(网格),它描述了服务间的依赖形态,就像下面这张网一样。
请添加图片描述
其中深色的是我们平时工作中接触最多的业务微服务,旁边蓝色的被称为边车Sidecar服务。

Sidecar作为业务微服务的“代理”,处理与其他业务微服务sidecar之间的非功能需求,如网络通信、安全、监控、流量控制等。

多个Sidecar之间的连接和交互组成了网格mesh。

Dubbo3 提供了基于自身思考的 Dubbo Mesh 解决方案,Dubbo3 规划了两种形态的 Service Mesh 方案:

● 经典的基于 Sidecar 的 Service Mesh;

● 无 Sidecar 的 Proxyless Mesh;

5.异构体系互通
典型如 Dubbo、Spring Cloud、gRPC 等,有着异构微服务体系互通的诉求,Dubbo3 借助于新的服务发现模型以及可灵活扩展的 RPC 协议,可以成为 Dubbo3 未来的发展目标。

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值