(1)dubbo的基础架构:
(2)角色说明
- Provider:暴露服务的提供方
- Consumer:远程服务的消费方
- Register:服务注册与发现的注册中心
- Monitor:统计服务调用次数和调用时间的监控中心
- Container:服务运行容器
(3)调用关系
0.start:服务容器负责启动,加载,运行服务提供者
1.register:服务提供者在启动时,向注册中心提供自己的服务
2.subscribe:服务消费者在启动时,向注册中心订阅自己所需的服务
3.notify:注册中心返回服务提供者地址给消费方,如果有变更,注册中心将基于长连接推送给服务消费者
4.invoke:服务消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选一台
5.count:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次数据到监控中心
(二)Dubbo和ZooKeeper注册中心
在使用Dubbo时,我们可以利用zookeeper生成的节点树,服务提供者在启动的时候,将提供的服务名称和地址以节点的方式注册到服务器Zookeeper的配置中心,然后消费者通过服务配置中心获取需要的服务名称下的服务地址,因为znode有非持久节点的特性,服务器可以动态的从服务配置中心移除,并且触发消费者的watcher方法。
Zookeeper的架构:
流程如下:
- 服务提供者启动时候向节点/Dubbo/com.idcos.Service/providers写下自己的URL地址
- 服务消费者启动时,订阅/Dubbo/com.idcos.Service/providers目录下的提供者URL地址,然后再consumers节点写入自己的URL
- Monitor启动时候,订阅/Dubbo/com.idcos.Service下的所有的服务提供者和消费者URL地址
同时具有以下的特性:
- 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
- 当注册中心重启时,能自动恢复注册数据,以及订阅请求
- 当会话过期时,能自动恢复注册数据,以及订阅请求