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