Dubbo简介
Dubbo是Alibaba提供的一款分布式服务治理框架。
其中主要的流程如下
消费者
- 动态代理:生成需要调用的接口;
- Cluster:集群,其实就是从注册中心获取到服务列表;
- LoadBalance:从上面的服务列表中选取一个服务提供者;
- Protocol:协议层,就是说整个系统中,咱们对话的话需要怎么交流,可以理解为语言;
比如说【单纯举例子,不一定是样子】:
http协议有可能是这样子http://DemoService/sayHello?name="Dubbo"。
Rmi:interface=DemoService,method=hello,param1 = name... - Exchange:经过协议的封装,再封装成Request请求
- 网络通信层:通过Netty传输(主流),速度非常快,原理是NIO
- 序列化:序列化成二进制进行网络传输
消费者 - Server:监听有没有请求;
- 反序列化:将二进制反序列化成Request对象;
- 协议层:选择一种协议解析数据;
- 动态代理生成对象:比如说咱们DemoService的Impl。就是生成这个玩意,然后执行sayHello方法。
Dubbo网络底层通信原理
主要有以下几个角色,Netty;
- Selector:负责监听Channel
- Processor线程:工作中的线程,如果有请求指令会生成此线程;
- ServerSocketChannel:负责监听端口号,然后对于不同的请求生成不同的channel;
- Acceptor线程:比较特殊的Selector,负责轮询监听ServerSocketChannel有没有新的请求指令;