dubbo 初识

什么是dubbo?

首先我们看看官网dubbo对自己的介绍,Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。这里引入了其他几个关键词,RPC,微服务架构。

RPC

remote producer call (远程过程调用)
是一个计算机通信。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)

微服务架构

是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序。

dubbo 产生的背景?

随着业务的增长,单体架构出现了如下的问题。

  1. 可靠性差。单个模块发生OOM,死循环 异常导致整个服务无法使用。
  2. 扩展能力受限。单体只能整体扩展,无法针对某些模块按需扩展,例如IO密集型,CPU密集型。
  3. 部署频率低。代码太多,构建和部署的时间增加。
  4. 技术单一。单体架构往往使用统一的技术平台或方案解决所有问题。要向引入新框架或新技术会非常苦难。

解决单体架构的方法就是微服务架构,微服务架构又带来了许多新的问题。

  1. 服务之间如何通信。
  2. 调用服务如何负载均衡,容错。
  3. 服务上线和下线如何被调用方感知。

dubbo 就是解决这些问题的一套框架。

dubbo架构

Dubbo架构
整体架构

各层说明

  • config 配置层:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类
  • proxy 服务代理层:服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为中心,扩展接口为 ProxyFactory
  • registry 注册中心层:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactory, Registry, RegistryService
  • cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 Cluster, Directory, Router, LoadBalance
  • monitor 监控层:RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService
    protocol 远程调用层:封装 RPC 调用,以 Invocation, Result 为中心,扩展接口为 Protocol, Invoker, Exporter
  • exchange 信息交换层:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
  • transport 网络传输层:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec
  • serialize 数据序列化层:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool

调用链

调用链

参考资料

背景 _ Apache Dubbo 2.X
Dubbo 介绍 _ Apache Dubbo
框架设计 _ Apache Dubbo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容