介绍
借鉴:
Dubbo是阿里开源的 ,基于Java开发的一款分布式服务框架,它拥有高性能和透明化的RPC远程服务调用方案以及SOA服务治理方案。Dubbo与Spring无缝集成,并且提供了远程通讯、集群容错、服务自动注册与发现三大核心功能。
提供了透明化的远程方法调用,只需要简单的配置,调用远程方法就像调用本地方法一样,没有任何API的侵入。同时它具备软负载均衡以及容错机制,在内网可直接替代F5等硬件设备实现负载均衡。还可以实现服务自动注册和发现,不需要写死服务提供着的IP地址,注册中心基于接口名查询服务提供着的IP地址,并且可以平滑的增加和删除服务提供着。
三大核心功能
远程通讯:提供了多种基于长连接的NIO框架,多种线程模型,多种序列化,以及多种请求响应的信息交换方式。
集群容错:提供了透明的基于接口方法的远程调用,包括多协议支持,软负载均衡,失败容错,地址路由,动态配置等集群的支持。
服务自动注册与发现:基于注册中心的目录服务,使消费者能够动态的查找服务提供方,使得地址透明,使得服务提供方可以平滑的增加和删除。
五大组件关系
角色说明
Container:服务运行容器,只启动一次
Provider:服务提供者
Registry:服务注册与发现的注册中心
Consumer:服务消费者
Monitor:统计服务的调用次数和调用时间的监控中心
调用关系说明
0、服务容器负责启动,加载,运行服务提供者。
1、服务提供者在启动时,向注册中心注册自己提供的服务。
2、服务消费者在启动时,向注册中心订阅自己所需的服务。
3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Dubbo的特性
基于透明接口的RPC:Dubbo提供了基于高性能接口的RPC,对用户是透明的;
智能负载均衡:Dubbo开箱即用地支持多种负载平衡策略,该策略可感知下游服务状态以减少总体延迟并提高系统吞吐量;
自动服务注册和发现:Dubbo支持多个服务注册表,可以立即检测在线/离线服务;
高扩展性:Dubbo的微内核和插件设计确保第三方实现可以轻松地将其扩展为协议,传输和序列化等核心功能;
运行时流量路由:可以在运行时配置Dubbo,以便可以根据不同的规则路由流量,这使得支持蓝绿色部署,数据中心感知路由等功能变得容易;
可视化服务治理:Dubbo提供了用于服务管理和维护的丰富工具,例如查询服务元数据,运行状况和统计信息;
Dubbo架构的特性
连通性
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小
监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示
服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
健壮性
监控中心宕机不影响使用,只是会丢失部分采样数据
数据库宕机后,注册中心任然可以通过缓存提供服务列表查询,只是不能再注册新的服务
注册中心对等集群中,任意一台宕机,会自动切换到另一台
注册中心全部宕机,服务消费者和服务提供着任然可以通过本地缓存通讯
服务提供着无状态,任意一台宕机,不影响使用
服务提供着全部宕机,服务消费者将无法使用,并且会无限次循环等待服务提供着恢复
伸缩性
注册中心是对等集群,可动态的增加机器部署实例,所有的客户端会自动发现新的服务
服务提供着无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者的地址给服务消费者
未来架构的升级性
当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力
Dubbo优缺点
优点
1、透明化的基于接口方法的远程调用,只需简单的配置,调用远程方法就像调用本地方法一样,并且没有任何API的侵入;
2、软负载均衡和容错机制,在内网直接可以替换Ngnix lvs以及F5硬件设备等,实现负载均衡;
3、服务的自动注册与发现,动态的配置管理。基于注册中心的目录服务,不需要写死服务提供方的IP地址,服务消费方会根据接口名查找服务提供方的IP地址;
4、服务接口的监控与治理,Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理;
缺点
目前只支持Java
Dubbo的线程模型