Dubbo是例里已巴开源的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,Dubbo广泛用于阿里巴巴的各大站点,有很多互联网公司也在使用这个框架,它包含如下核心内容。
- RPC远程调用:封装了长连接NIO框架,如Netty、Mina等,采用的是多线程模式。
- 集群容错:提供了基于接口方法的远程调用的功能,并实现了负载均衡策略、失败容错等功能。
- 服务发现:集成了 Apache的 Zookeeper组件,用于服务的注册和发现。
Dubbo架构的流程如下。
(1)务提供者向服务中心注册服务
(2)服务消费者订阅服务
(3)服务消费者发现服务。
(4)服务消费者远程调度服务提供者进行服务消费,在调度过程中,使用了负载均衡策略、失败容错的功能。
(5)服务消费者和提供者,在内存中记录服务的调用次数和调用时间,并定时每分钟发送一次统计数据到监控中心。
Dubbo是一个非常优秀的服务治理框架,在国内互联网公司应用广泛。它具有以下特性。
-
连通性:注册中心负责服务的注册;监控中心负责收集调用次数、调用时间;注册中心、服务提供者、服务消费者为长连接。
-
健壮性:监控中心宕机不影响其他服务的使用;注册中心集群,任意一个实例宕机自动切换到另一个注册中心实例;服务实例集群,任意一个实例宕机,自动切换到一个可用的实例。
-
伸缩性:可以动态增减注册中心和服务的实例数量。
-
升级性:服务集群升级,不会对现有架构造成压力。