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 服务只订阅 :服务提供者不向注册中心进行注册,不对外提供服务。需要与直连提供结合,从而只为指定的消费者提供服务。
结合使用直连提供者和只订阅,可以有效的指定连接服务,做到不影响其他的情况下做到快速测试调试。

 只订阅:一个服务同时在两个注册中心进行注册,但是只依赖其中一个注册中心中的服务。

posted on 2017-06-26 22:16  秦水坡  阅读(221)  评论(0编辑  收藏  举报