Dubbo是一个分布式服务框架,是国内阿里巴巴的维护的一个项目,后开源给Apache。

Dubbo是什么?

简单来说,dubbo就是一款高性能、轻量级的RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

那么什么又叫作RPC?

RPC【Remote Procedure Call】--->远程过程调用。是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,远程机器根据传过来的参数运行代码最后返回一个结果给调用者。

RPC基本原理:

   \"\"\"\"

RPC两个核心模块:通信、序列化。

ok,了解了什么事RPC以后我们转过头来看dubbo。

Dubbo的架构以及角色:

\"\"

                                          

服务提供者(Provider:暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。

服务消费者(Consumer: 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

注册中心(Registry:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

监控中心(Monitor:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

调用关系说明:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo的负载4种负载均衡策略

  • 随机,按权重设置随机概率,在一个截面上碰撞的概率较高,但调用越大分布越均匀
  • 最少活跃调用数。响应快的提供者接受越多请求,响应慢的接受越少请求
  • 轮询模式。按公约后的权重设置轮询比例。但存在响应慢的服务提供者会累积请求
  • 一致性Hash,相同参数的请求总是发到同一提供者
收藏 打印