Dubbo基本原理与机制

1、什么是Dubbo

Dubbo 是一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成

2、Dubbo依赖关系

1、服务消费者(Consumer: 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

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

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

 

Dubbo基本原理与机制_第1张图片

3、暴露服务

首先 ServiceConfig 类拿到对外提供服务的实际类 ref(如:HelloWorldImpl),然后通过 ProxyFactory 类的 getInvoker 方法使用 ref 生成一个 AbstractProxyInvoker 实例,到这一步就完成具体服务到 Invoker 的转化。接下来就是 Invoker 转换到 Exporter 的过程。Dubbo 处理服务暴露的关键就在 Invoker 转换到 Exporter 的过程Dubbo 协议的 Invoker 转为 Exporter 发生在 DubboProtocol 类的 export 方法,它主要是打开 socket 侦听服务,并接收客户端发来的各种请求,通讯细节由 Dubbo 自己实现。

Dubbo基本原理与机制_第2张图片

4、消费服务

首先 ReferenceConfig 类的 init 方法调用 Protocol refer 方法生成 Invoker 实例(如上图中的红色部分),这是服务消费的关键。接下来把 Invoker 转换为客户端需要的接口(如:HelloWorld).

Dubbo基本原理与机制_第3张图片

5、Dubbo序列化

专门针对Java语言的:KryoFST等等

跨语言的:ProtostuffProtoBufThriftAvroMsgPackhessian2等等

上述序列化方式的性能多数都显著优于hessian2,所以最好使用其他的序列化

启用Kryo或FST如下

dubbo.protocol.serialization=kryo

6、Dubbo支持协议

Dubbo支持dubbormihessianhttpwebservicethriftredis等多种协议,其默认使用Dubbo协议

Dubbo协议:

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

 



 

你可能感兴趣的:(dubbo,java,dubbo,rpc,soa)