前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dubbo 工作原理

Dubbo 工作原理

作者头像
王小明_HIT
发布2020-11-03 15:09:30
3830
发布2020-11-03 15:09:30
举报
文章被收录于专栏:程序员奇点程序员奇点

Dubbo 工作原理

Dubbo 工作原理

Dubbo 有10层结构:

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

一次 RPC 流程

粗粒度来说一次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 原理图:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dubbo 工作原理
    • Dubbo 工作原理
      • 一次 RPC 流程
        • 注册中心挂了,可以继续通讯么?
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档