Dubbo框架是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
dubbo架构:
1、consumer 没有直接与provider 链接访问,通过中间注册中心,实现consumer和provider完全解耦。当provider挂掉之后可以在其他机器上面启动运行而不需要修改程序。
2、monitor作为consumer和provider的监控中心,与系统无关,当监控中心挂掉后,并不影响服务运行。monitor可以监控到某个provider的调用情况,从而根据需求增加provider从而实现高可用。
3、每个provider节点只需多启动几个应用就可以创建一个集群,对外只提供一个provider,对内采用均衡策略应对高并发访问。
1)Dubbo集群容错模式
Failover Cluster |
失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用) |
重试会带来更长延迟 |
FailoverClusterInvoker |
Failfast Cluster |
快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作 |
如果有机器正在重启,可能会出现调用失败 |
FailfastClusterInvoker |
Failsafe Cluster |
失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作 |
调用信息丢失 |
FailsafeClusterInvoker |
Failback Cluster |
失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作 |
不可靠,重启丢失 |
FailbackClusterInvoker |
Forking Cluster |
并行调用多个服务器,只要一个成功即返回,通常用于实时性要求较高的读操作 |
需要浪费更多服务资源 |
ForkingClusterInvoker |
Broadcast Cluster |
广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于更新提供方本地状态 |
速度慢,任意一台报错则报错 |
BroadcastClusterInvoker |
使用:<
dubbo:service
cluster
=
"failsafe"
/>
Dubbo提供了4种均衡策略,如:Random LoadBalance(随机均衡算法)、RoundRobin LoadBalance(权重轮循均衡算法)、LeastAction LoadBalance(最少活跃调用数均衡算法)、ConsistentHash LoadBalance(一致性Hash均衡算法)
使用:<
dubbo:service
interface
=
"..."
loadbalance
=
"roundrobin"
/>
dubbo 直连提供者 :消费者可以直接绕过注册中心,与指定的服务提供者进行连接。
使用:<dubbo:reference id=
"xxxService"
interface
=
"com.alibaba.xxx.XxxService"
url=
"dubbo://localhost:20890"
/>
dubbo 服务只订阅 :服务提供者不向注册中心进行注册,不对外提供服务。需要与直连提供结合,从而只为指定的消费者提供服务。
结合使用直连提供者和只订阅,可以有效的指定连接服务,做到不影响其他的情况下做到快速测试调试。
只订阅:一个服务同时在两个注册中心进行注册,但是只依赖其中一个注册中心中的服务。