简介
Dubbo是一个RPC框架Dubbo使用的协议:
dubbo://
rmi://
http://
redis://
webservice://
hessian://
thrift://
默认协议是dubbo
dubbo协议的使用场景:
- 数据量小高并发
- 消费者远多于服务提供者
dubbo协议采用的是异步单一长连接。
为什么单一:可以确保一个消费者和提供者只有一个连接,避免了单一消费者多连接增加有功者压力的风险。
为什么长连接:TCP连接需要三次握手四次握手,减少了这部分建立断开的消耗。
为什么异步:大多数情况下,消费者数量都是多于提供者的,异步传输可以有效减少提供者的压力。
-
Dubbo负载均衡策略:
randon loadbalance
默认随机调用。可以设置权重roundrobin loadbalance
轮询,均匀的将请求打到每个提供者leastactive loadbalance
自动感知,根据提供者的活跃度,如果某个机器的性能非常优秀,接受的请求多,则越活跃,则后续接受到的请求则越多。consistanthash loadbalance
一致性hash算法,相同参数的请求一定分发到一个provider上。如果provider挂掉了,会基于虚拟节点均匀的分配剩余的流量,不会出现大抖动的情况。
Dubbo集群容错策略
failover cluster
失败自动切换, 自动重试其它机器。缺省方案failfast cluster
一次调用失败就立即失败,常用于写操作。failsafe cluster
出现异常时忽略,常用于不重要的接口调用,比如记录日志。failback cluster
失败了后台自动记录请求, 然后定时重发, 适合写消息队列。forking cluster
并行调用多个provider, 只要一个成功就立即返回。broadcast cluster
逐个调用所有的provider
下一次写dubbo的结构层的作用。