dubbo架构简单理解

时间:2021-10-30 05:25:16

Dubbo是阿里爸爸提供的开源的SOA服务

dubbo架构简单理解

(一)dubbo框架系统角色

Provider:暴露服务的服务提供方:

Consumer:调用远程服务的服务消费方;

Registry:服务注册与发现的注册中心;

Monitor:统计服务的调用次数和调用时间的监控中心;

Container:服务运行容器;

(二)dubbo系统角色的调用关系

服务容器(Container)负责启动,加载,运行服务提供者

服务提供者(Provider)在启动时,向注册中心注册并提供服务

服务销售者(Consumer)在启动时,向注册中心订阅自己所需的服务

注册中心返回服务提供者地址列表给消费者,如果变更,注册中心将基于长连接推送变更数据给消费者。

服务消费者,从提供者地址列表中,基于软负载均衡算法,选择一台提供者进行调用,如果调用失败,再选择另一台进行调用。

服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发生发送一次统计数据到监控中心

————————————————

简单理解dubbo框架各个系统角色:打个比方dubbo框架就像一个房屋出租的交易生态圈,房东(Provider)为了方便将出租信息发布到了中介公司平台(Registry),这样在中介公司平台就会有出租的房屋信息存在,租房者(Consumer)直接在中介公司(Registry)找到房屋信息。直接联系到房东租到合适满意的房子。————比喻可能不是很恰当,还请见谅。


Dubbo底层实现

(1)协议支持

Dubbo支持多种协议,

Dubbo协议 Hessian协议

Http协议    RMI协议

WebService协议    Thrift协议 Memcached协议 Redis协议

在通信过程中,不同的服务等级一般对应不同的服务质量,RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,一般选择基于HTTP协议或者Hessian协议。

(2)默认dubbo协议

连接个数:单连接

连接方式:长连接

传输协议:TCP

传输方式:NIO异步传输

序列化:Hessian二进制序列化

适用范围:传入传出参数数据包较小(小于100kb),消费者比提供者个数多,单一消费无法满足提供者,尽量不要使用dubbo协议传输大文件或超大字符串

适合场景:常规远程方法调用

dubbo默认采用dubbo协议,dubbo协议采用单一长连接和NIO异步通讯,适合小数据量大并发的服务调用,以及服务消费者远大于服务提供者的情况下。不适合传输大数据量服务,如文件,视频等,除非请求量很低。


阿里爸爸推荐使用zookeeper为注册中心

Zookeeper的特点

1、最终一致性:为客户端展开同一视图,这是zookeeper最重要的功能

2、可靠性:如果消息被一台服务器,那么它将被所以的服务器接受。

3、实时性:Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口

4、等待无关:慢的或者失效的client不干预快速的client的请求

5、原子性:更新只能成功或失败,没有中间状态

6、顺序性:所以server,同一消息发布顺序一致


Zookeper的基本架构

dubbo架构简单理解

1、每个Server在内存中存储了一份数据

2、Zookeeper启动时,将从实例中选举一个leader(Paxos协议)

3、Leader负责处理数据跟新等操作

4、一个更新操作成功,当且大多数Server在内存中成功修改数据

dubbo架构简单理解

Zookeeper Server节点的数目

Zookper Server数目一般为奇数

Leader选举算法采用了Paxos协议;Paxos核心思想;只有多少Server写成功,则任务数据写成功。


这里感谢各位大佬的资料,帮助自己了解dubbo.如有冒犯,请告诉我。