Dubbo框架整理

Dubbo  为分布式系统框架   底层RPC原理

 

Dubbo分层

Service层: Provider(服务提供者) 和 Consumer(消费者)  ,由自己开发的接口

config层:  配置文件

proxy层:  代理,通过代理 负责provider,consumer之间互相通信,(无论consumer还是provider都需要代理)

registry层: 注册, provider注册自己作为一个服务,consumer去注册中心找要调的服务

cluster层: 一个provider可以部署在多台机器上,多个provider组成一个集群_cluster

monitor层: 监控层,监控provider被调用等信息

protocol层: 负责具体provider和consumer的通信

exchange层: 信息交换

serilaze层: 序列化

 

Dubbo框架整理

 

1.provider向注册中心注册

2.consumer从注册中心订阅服务

3.通过proxy,consumer调用provider的服务

4.consumer和provider通知监控monitor

 

注册中心挂了还可以继续通信,consumer本地有缓存 可以知道去哪找provider

 

Dubbo支持的通信协议

dubbo协议: 特点  长连接 + NIO异步通信 + hession序列化协议

长连接:建立一个永久连接,能持续发送请求

短连接:没发一次请求建立一次连接 请求结束断开

 

Dubbo负载均衡策略

对于同一个provider在多个机器上的请求分发

1.random loadbalance  随即分发,根据不同的机器性能调整权重 

Dubbo框架整理

 

 

集群容错策略

1.failover cluster模式  :失败自动切换,自动重试其他机器    常用于读操作

2.failfast cluster模式 : 一旦调用失败就立即失败   常用于写操作

3.failsafe cluster模式 : 出现异常时忽略掉   常用于日志服务等不重要调用

4.forking cluster模式 : 只要一个成功就立即返回

5.fallback cluster模式 : 失败了自动记录 然后定时重发  常用于消息队列这种

 

 

动态代理

默认使用javassist动态字节码生成,创建代理类

(可以通过SPI扩展机制培植自己的动态代理策略)

 

上一篇:Dubbo负载均衡


下一篇:解耦Java模块的设计策略