dubbo基础及介绍

RPC

介绍

  RPC,Remote Procedure Call 即远程过程调用,远程过程调用其实对标的是本地过程调用。
  远程调用的方法可以走http协议也可以是基于tcp的自定义协议。

结构

  一个RPC框架要做的就是约定通信协议,序列化格式,容错机制,负载均衡策略,监控运维和一个注册中心。

  1. 服务消费者
  2. 服务提供者
  3. 注册中心
  4. 监控中心

DUBBO

  它实现了面向接口的代理 RPC 调用,并且可以配合 ZooKeeper 等组件实现服务注册和发现功能,并且拥有负载均衡、容错机制等。
  https://juejin.cn/post/6870276943448080392#heading-9

简介

dubbo的作用

  1. 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  2. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除。

dubbo分层结构

dubbo的十层结构

dubbo的十层结构

流程

dubbo结构

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者Provider向注册中心注册自己所能提供的服务。
  3. 服务消费者Consumer启动向注册中心订阅自己所需的服务。
  4. 注册中心将提供者元信息通知给消费者,消费者从注册中心获取提供者的地址。
  5. 通过负载均衡选择一个Provider直接调用。如果失败,则会重新选择另一台进行调用。
  6. 如果提供者有变更,注册中心会将变更推送给消费者。
  7. 服务提供者和消费者都会在内存中记录着调用的次数和时间,然后定时(每分钟)的发送统计数据到监控中心。

TIPS

  1. 注册中心和监控中心是可选的,可以直接在配置中写提供者和消费者直连。
  2. 注册中心、提供方和消费方之间都是长连接,和监控方不是长连接,并且消费方是直接调用提供方,不经过注册中心。
  3. 注册中心和监控中心宕机了也不会影响到已经正常运行的提供者和消费者,因为消费者有本地缓存提供者的信息。

Dubbo的优点

  1. 远程通讯:提供对多种基于长连接的NIO框架抽象封装, 包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  2. 软负载均衡及容错机制:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  3. 服务自动注册与发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
  4. 提供完善的管理控制台dubbo-admin与简单的控制中心dubbo-monitor。
  5. Dubbo提供了伸缩性很好的插件模型,很方便进行扩展(ExtensionLoader)。
  6. 支持多协议
  7. Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。