Dubbo 工作原理

简介: Dubbo 工作原理

Dubbo 工作原理


Dubbo 有10层结构:

  • 第一层:service 层,接口层,给服务提供者和消费者来实现的。
  • 第二层:config 层,配置层,主要是 dubbo 的各种配置。
  • 第三层:proxy 层,服务代理层,透明生成客户端的 stub 和服务单的 skeleton
  • 第四层:registry 层,服务注册层,负责服务的注册于发现。
  • 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡。
  • 第六层:monitor 层,监控层, 对 rpc 接口的调用次数和调用时间进行监控。
  • 第七层:protocol 层,远程调用层,封装 rpc 调用。
  • 第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步。
  • 第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口
  • 第十层:serialize 层,数据序列化层。


一次 RPC 流程


image.png


粗粒度来说一次dubbo调用分如下几步:


  • 第一步:provider 向注册中心去注册
  • 第二步:consumer 从注册中心订阅,注册中心会通知 consumer 注册好服务
  • 第三步:consumer 调用 provider
  • 第四步:consumer 和 provider 都异步通知注册中心

细粒度的一次 RPC 调用:


  1. 客户端本地客户端存根方法(Client Stub 相当于代理模式中的代理 Agent),客户端存根方法将参数打包封装到网络消息中(Encode), 并发送给服务端。
  2. 客户端存根通过系统调用,通过 Socket 套接字接口来向远程服务器发送编码后的网络消息。网络消息有操作系统内核通过某种协议(TCP、UDP)传输到远程服务端。
  3. 服务端存根(Server Stup 相当于服务端代理)接收到了客户端消息,并对消息进行解码 (Decode)。
  4. 服务端存根本地调用服务端的方法,根据客户端消息中传递的参数,得到运行结果。
  5. 服务端方法执行完之后,把结果返回给服务端存根。
  6. 服务端存根将结果进行编码和序列化,准备发送给客户端。
  7. 服务端存将消息发送给客户端。
  8. 客户端存根通过本地 Socket 接口,读取结果消息。
  9. 客户端存根在将本地结果消息,从二进制形式转换为本地语言格式返回给客户端函数,这样就完成远程服务调用,客户端代码可执行后续的操作。

Dubbo 原理图:

image.png

注册中心挂了,可以继续通讯么?


可以,因为刚开始初始化的时候,消费者会将提供者的地址等信息拉取到本地缓存,所以注册中心挂了可以继续通信。

相关文章
|
10月前
|
负载均衡 Dubbo 应用服务中间件
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
84 0
|
4月前
|
负载均衡 监控 Dubbo
秒懂Dubbo接口(原理篇)
【4月更文挑战第25天】秒懂Dubbo接口(原理篇)
130 3
秒懂Dubbo接口(原理篇)
|
1月前
|
负载均衡 Dubbo 应用服务中间件
Dubbo服务调用过程原理
该文章主要介绍了Dubbo服务调用过程的原理,包括服务调用的主要阶段和服务调用的具体步骤。
Dubbo服务调用过程原理
|
1月前
|
缓存 Dubbo Java
Dubbo服务消费者启动与订阅原理
该文章主要介绍了Dubbo服务消费者启动与订阅的原理,包括服务消费者的启动时机、启动过程以及订阅和感知最新提供者信息的方式。
Dubbo服务消费者启动与订阅原理
|
1月前
|
Dubbo 网络协议 Java
深入掌握Dubbo服务提供者发布与注册原理
该文章主要介绍了Dubbo服务提供者发布与注册的原理,包括服务发布的流程、多协议发布、构建Invoker、注册到注册中心等过程。
深入掌握Dubbo服务提供者发布与注册原理
|
1月前
|
负载均衡 Dubbo Java
Dubbo服务Spi机制和原理
该文章主要介绍了Dubbo中的SPI(Service Provider Interface)机制和原理,包括SPI的基本概念、Dubbo中的SPI分类以及SPI机制的实现细节。
Dubbo服务Spi机制和原理
|
1月前
|
缓存 负载均衡 Dubbo
Dubbo服务集群容错原理(重要)
该文章主要介绍了Dubbo服务集群容错的原理,包括集群容错技术的概念、Dubbo中使用的集群容错技术种类及其原理。
|
1月前
|
负载均衡 Dubbo 算法
Dubbo服务负载均衡原理
该文章主要介绍了Dubbo服务负载均衡的原理,包括Dubbo中负载均衡的实现位置、为什么需要负载均衡机制、Dubbo支持的负载均衡算法以及随机负载均衡策略的源码分析。
|
3月前
|
负载均衡 Dubbo Java
哈啰面试:说说Dubbo运行原理?
哈啰面试:说说Dubbo运行原理?
39 0
哈啰面试:说说Dubbo运行原理?
|
4月前
|
负载均衡 算法
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的