Dubbo是什么?他的核心功能是什么?
dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RCP远程调用框架更为贴切。单从RPC框架来说,功能较完善,支持多种传输和序列化方案。所以想必大家已经知道他的核心功能了:就是远程调用。
Dubbo框架图
Consumer调用Provider是从内存中调用,并非注册中心调用;
节点角色说明:
1:Provider:暴露服务的服务提供方。
2:Consumer: 调用远程服务的服务消费方。
3:Registry:服务注册与发现的注册中心。
4:Monitor: 统计服务的调用次调和调用时间的监控中心。
5:Container: 服务运行容器。
调用关系说明:
1、服务容器负责启动,加载,运行服务提供者。
2、服务提供者在启动时,向注册中心注册自己提供的服务。
3、服务消费者在启动时,向注册中心订阅自己所需的服务。
4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
流程说明:
1.
Provider(提供者)绑定指定端口并启动服务
2.
指供者连接注册中心,并发本机IP、端口、应用信息和提供服务信息发送至注册中心存储
3.
Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心
4.
注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存。
5.
Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。
6.
Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer
这么设计的意义:
1.
Consumer 与Provider 解偶,双方都可以横向增减节点数。
2.
注册中心对本身可做对等集群,可动态增减节点,并且任意一台宕掉后,将自动切换到另一台
3.
去中心化,双方不直接依懒注册中心,即使注册中心全部宕机短时间内也不会影响服务的调用
4.
服务提供者无状态,任意一台宕掉后,不影响使用;
问题百科
(1)服务的提供者是怎么找到消费者?
根据dubbo中注入的接口
interface
="com.tuling.teach.service.DemoService"
(2)dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?
可以的,消费者本地有一个生产者的列表,他会按照列表继续工作,倒是无法从注册中心去同步最新的服务列表,短期的注册中心挂掉是不要紧的,但一定要尽快修复;
(3)服务的消费者怎么知道服务提供者宕机了?
redis为注册中心时:消费者在调用服务的时候根据服务提供者注入服务的时间戳;服务提供者会不停 的更新时间戳;30秒一次向注册中心更新下时间戳(源码中写);
待续,木有写完。。