Dubbo的调用过程及工作原理

一、节点角色

1️⃣Container:服务运行容器。
2️⃣Provider:暴露服务的服务提供方。
3️⃣Consumer:调用远程服务的服务消费方。
4️⃣Registry:服务注册与发现的注册中心。
服务提供者先启动 start,然后注册 register 服务。消费订阅 subscribe 服务,如果没有订阅到自己想获得的服务,它会不断的尝试订阅。新的服务注册到注册中心以后,注册中心会将这些服务通过 notify 到消费者。
5️⃣Monitor:统计服务的调用次数和调用时间的监控中心。
这是一个监控,图中虚线表明 Consumer 和 Provider 通过异步的方式发送消息至 Monitor,Consumer 和 Provider 会将信息存放在本地磁盘,平均一分钟发送一次信息。Monitor 在整个架构中是可选的(图中的虚线并不是可选的意思),Monitor 功能需要单独配置,不配置或者配置以后,Monitor 挂掉并不会影响服务的调用。
Dubbo的调用过程及工作原理_第1张图片

二、调用关系

1️⃣服务容器 Container 负责启动加载运行服务提供者 Provider。根据 Provider 配置的文件据协议发布服务,完成服务的初始化。

2️⃣Provider 在启动时,根据配置中的 Registry 地址连接 Registry,将 Provider 的服务信息发布到 Registry,在 Registry 注册自己提供的服务。

3️⃣Consumer 在启动时,根据消费者 XML 配置文件中的服务引用信息,连接到 Registry,向 Registry 订阅自己所需的服务。

4️⃣Registry 根据服务订阅关系,返回 Provider 地址列表给 Consumer。如果有变更,Registry 会基于长连接推送最新的服务地址信息给 Consumer。

5️⃣Consumer 调用远程服务时,基于软负载均衡算法,先从缓存的 Provider 地址列表中选择一台进行跨进程调用服务,假如调用失败,再重新选另一台调用。

6️⃣服务 Provider 和 Consumer,会在内存中记录调用次数和调用时间,每分钟发送一次统计数据到 Monitor。

你可能感兴趣的:(MicroServices,java)