Dubbo:一款高性能、轻量级的开源服务框架。
RPC:指远程过程调用,是一种进程间的通信方式。
Dubbo六大核心功能:
1、面向接口代理的高性能RPC调用
2、智能负载均衡
3、服务自动注册与发现
4、高度可扩展能力
5、运行期流量调度
6、可视化的服务治理与运维
Dubbo的核心组件包括:
注册中心(Registry):生产者在此注册并发布内容,消费者在此订阅并接收发布的内容。
消费者(Consumer):客户端,从注册中心获取到方法,可以调用生产者中的方法。
生产者(Provider):服务端,生产内容,生产前需要依赖容器(先启动容器)。
容器(Container):生产者在启动执行的时候,必须依赖容器才能正常启动(默认依赖的是Spring容器)。
监控(Monitor):统计服务的调用次数与时间等。
Dubbo相关特性:
属性配置优先级
启动时检查
请求超时设置
重试次数
多版本控制
本地存根
Dubbo工作流程:
1、服务提供者启动,开启Netty服务,创建Zookeeper客户端,向注册中心注册服务;
2、服务消费者启动,通过Zookeeper向注册中心获取服务提供者列表,与服务提供者通过Netty建立长连接;
3、服务消费者通过接口开始远程调用服务,ProxyFactory通过初始化Proxy对象,Proxy通过创建动态代理对象;
4、动态代理对象通过invoke方法,层层包装生成一个Invoker对象,该对象包含了代理对象;
5、Invoker通过路由,负载均衡选择了一个最合适的服务提供者,在通过加入各种过滤器,协议层包装生成一个新的DubboInvoker对象;
6、再通过交换成将DubboInvoker对象包装成一个Reuqest对象,该对象通过序列化通过NettyClient传输到服务提供者的NettyServer端;
7、到了服务提供者这边,再通过反序列化、协议解密等操作生成一个DubboExporter对象,再层层传递处理,会生成一个服务提供端的Invoker对象;
8、这个Invoker对象会调用本地服务,获得结果再通过层层回调返回到服务消费者,服务消费者拿到结果后,再解析获得最终结果。