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层: 序列化

 

 

1.provider向注册中心注册

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

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

4.consumer和provider通知监控monitor

 

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

 

dubbo支持的通信协议

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

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

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

 

dubbo负载均衡策略

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

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

 

 

集群容错策略

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

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

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

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

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

 

 

动态代理

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

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

 

相关文章

在网络请求时,总会有各种异常情况出现,我们需要提前处理这...
作者:宇曾背景软件技术的发展历史,从单体的应用,逐渐演进...
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我...
 一个软件开发人员,工作到了一定的年限(一般是3、4年左右...
当一个服务调用另一个远程服务出现错误时的外观Dubbo提供了多...
最近在看阿里开源RPC框架Dubbo的源码,顺带梳理了一下其中用...