Dubbo是一个分布式的服务框架,它的主要功能包括:高性能的NIO通讯以及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。它有5个节点,分别是:Container、Provider、Registry、Consumer与Monitor。其中Container是服务运行的容器,Provider是服务提供者,Registry是服务注册与被发现的注册中心,Consumer是服务消费者,Monitor是统计服务调用次数与调用时间的监控中心。
它们之间的调用关系是:Container负责启动,然后加载运行Provider,Provider在启动时会向Registry注册中心注册自己提供的服务,Consumer在启动时会向Registry注册中心订阅所需要的服务,这时Registry注册中心会返回Provider地址列表给Consumer,如果地址有变更,Registry会基于长连接推送变更数据给Consumer。Consumer会基于软负载均衡算法选一台机器进行调用,如果宕机,则换一台。其中Provider和Consumer之间的调用次数和调用时间,会统计定时每分钟向Monitor进行发送。
Dubbo有四个特点:连通性、健壮性、伸缩性和未来架构的升级性。连通性说明它们之间存在着关系,比如Provider、Registry、Consumer之间存在长连接,而Provider与Consumer向Registry注册和订阅服务的次数和时间都要向Monitor汇报。健壮性是指具有稳定性,比如注册中心对等集群中任何一台机器宕掉,可以自动切换另一台,就算全宕掉,服务提供者和消费者还可以通过本地化缓存通信。伸缩性是指可以通过增加机器部署实例进行添加新的Provider和Consumer。升级性是指对未来架构的设想。