Dubbo学习三:Dubbo的高可用(服务容错,服务治理)

1)集群容错
 
1.1:服务路由:
服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消 费者可调用哪些服务提供者,du'b'bo提供三种服务路由实现,分别为
  • 条件路由ConditionRouter
  • 脚本路由ScriptRouter
  • 标签路由TagRouter
本课程重点分析条件路由ConditionRouter
条件路由规则的格式:
[服务消费者匹配条件] => [服务提供者匹配条件]
   host = 10.20.153.10 => host = 10.20.153.11

该条规则表示 IP 10.20.153.10 的服务消费者只可调用 IP 10.20.153.11 机器上的服务,不可 调用其他机器上的服务。

如果服务消费者匹配条件为空,表示不对服务消费者进行限制。如果服务提供者匹配条件为空,表示对某些服务消费者禁用服务

常见路由配置:

白名单:

host!=10.20.153.10,10.20.153.11=>

解答:上述白名单服务提供者为空,host为不等于,表示为对服务所绑定的ip除了10.20.153.10,10.20.153.11之外的其他进行服务禁用

黑名单

host=10.20.153.10,10.20.153.11=>

解答:上述黑名单服务提供者为空,host为等于,表示为对服务所绑定的ip10.20.153.10,10.20.153.11进行服务禁用

读写分离

method=fifind,list,get,is=>host=172.22.3.94,172.22.3.95,172.22.3.96

解答:服务消费方请求:如果是以fifind,list,get,is开头,主机ip为以上的服务进行处理

method!=fifind,list,get,is=>host=172.22.3.97,172.22.3.98

解答:服务消费方请求:如果不是以fifind,list,get,is开头,主机IP为以上的服务进行处理

前后台分离

application=front=>host=172.22.3.91,172.22.3.92,172.22.3.93

解答:消费方是前台,交给以上处理

application!=front=>host=172.22.3.94,172.22.3.95,172.22.3.96

解答:如果不是前台请求,也就是后台,交给以上服务进行处理

集群容错

正常情况下,不仅需要考虑正常逻辑,也需要考虑异常情况,下面展示dubbo提供的集中容错机制

1:Failover Cluster 失败自动切换,当出现失败,重试其它服务器。(缺省) 通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)

重试次数配置如下:

<dubbo:service retries="2" /> 或 <dubbo:reference retries="2" />

2:Failfast Cluster 快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作, 比如新增记录。

3:Failsafe Cluster 失败安全,出现异常时,直接忽略。通常用于写入日志等操作。

4:Failback Cluster 失败自动恢复,后台记录失败请求,定时重发。 通常用于消息通知操作。

5:Forking Cluster 并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读 操作,但需要浪费更多服务资源。可通过forks="2"来设置最大并行数。

6:Broadcast Cluster 广播调用所有提供者,逐个调用,任意一台报错则报错。 通常用于通知

所有提供者更新缓存或日志等本地资源信息
 
1.2负载均衡
Dubbo在负载均衡时,提供了多种均衡策略,默认为random随机调用
 
  1. Random LoadBalance:按照权重设置随机概率,无状态
  2. RoundRobin LoadBalance:轮询,有状态
  3. LeastActive LoadBalance:最少活跃数随机,方法维度的统计服务调用数
  4. ConsistentHash LoadBalance:一致性Hash(相同的请求,统一发送到一台服务器上进行处理)
2)服务治理
2.1:服务降级:
原因:在使用dubbo进行服务调用时,由于各种原因(服务器宕机/网络超时/并发次数太多)调用中出现RpcException,调用失败
处理:服务降级是指由于非业务异常导致的服务不可用,可以返回默认值,避免异常影响主业务的处理。
Dubbo服务降级配置
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章