- 条件路由ConditionRouter
- 脚本路由ScriptRouter
- 标签路由TagRouter
该条规则表示 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 广播调用所有提供者,逐个调用,任意一台报错则报错。 通常用于通知
- Random LoadBalance:按照权重设置随机概率,无状态
- RoundRobin LoadBalance:轮询,有状态
- LeastActive LoadBalance:最少活跃数随机,方法维度的统计服务调用数
- ConsistentHash LoadBalance:一致性Hash(相同的请求,统一发送到一台服务器上进行处理)