Dubbo底层架构原理(极简入门)
服务消费者
- 动态代理:Proxy–生成动态代理对象
- 负载均衡:Cluster,负载均衡,故障转移
- 通信协议:Protocol,filter机制,http、rmi、dubbo等协议
- 不同的网络通信协议会以不同的请求格式,将请求发送出去
- 信息交换:Exchange,Request和Response
- 对于你的协议的格式组织好的请求数据,需要进行一个封装,Request
- 网络通信框架:Transport,netty、mina
- 序列化:封装好的请求如何序列化成二进制数组,通过netty/mina发送出去
服务提供者
-
网络通信(内含反序列化):Transport,基于netty/mina实现的Server进行请求监听
-
信息交换:Exchange,Response
- 解析request请求
-
通信协议:Protocol,filter机制
- 根据特定协议来解析请求提供服务
-
动态代理:Proxy
Dubbo底层通信原理(netty)
- 首先netty中会有一个Acceptor线程通过Selector组件对ServerSocketChannel进行网络事件的轮询,而ServerSocketChannel则会监听自己的端口号,感知连接和业务请求。
- 一旦和服务消费者建立连接之后,ServerSocketChannel就生成SocketChannel(每一个服务消费者对应一个SocketChannel)
- 这时会有几个processor线程(携带Selector组件)对SocketChannel进行业务请求的轮询(一个Selector可以对多个SocketChannel进行轮询)
- 然后服务提供者进行请求的解析,提供服务之后进行响应
- 响应通过Processor线程发送往SocketChannel,然后经由服务提供者的netty框架中的SocketChannel发送至服务消费者中的网络通信netty框架中的SocketChannel
- 在服务消费者中的netty框架中同样也有processor(携带Selector组件)线程对socketChannel进行网络事件的轮询,接收提供者给予的响应。
ocketChannel进行网络事件的轮询,接收提供者给予的响应。