Dubbo基础二之架构及处理流程概述
Dubbo基础一之实战初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中体验了Dubbo的使用,对于消费端对服务提供者的调用非常清晰明确。那么Dubbo是如何做到的呢?下面对Dubbo的架构及处理流程做简单概述。
Apache Dubbo是一款高性能的Java RPC框架,其前身是阿里巴巴公司开源的一个高性能、轻量级的开源RPC框架;提供服务自动注册、自动发现等高效率服务治理方法,可以与Spring框架无缝集成。其特性等具体可参考官网文档https://dubbo.apache.org/zh/docs/。
Dubbo基于消费端的自动服务发现能力,其实现原理或处理流程可参考下图:
节点说明:
调用关系说明:1)虚线代表异步调用,实线代表同步访问
2)紫色虚线是在启动时完成的功能
3)蓝色虚线是程序运行中执行的功能
调用流程:
1)服务提供者在服务容器启动时想注册中心注册自己提供的服务
2)服务消费者在启动时想注册中心订阅自己所需的服务
3)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心会基于长链接推送变更数据给消费者
4)服务消费者从提供者地址列表中基于软负载均衡算法选一趟提供者进行调用,如果调用失败则重新选择一台
5)服务提供者和消费者在内存中的调用次数和调用事件定时每分钟发送给监控中心