节点管理
第一种:注册中心主动剔除有问题的服务提供者
根据心跳机制决定哪些服务提供者有效,由注册中心主动撤除有问题的服务提供者的ip,更新服务消费者端的服务提供者ip列表
第二种:服务消费者维护服务提供者列表
服务消费者在维护更新下来的的服务提供者ip列表,在调用的过程中,对有问题的服务提供者ip进行剔除
负载均衡
第一种:随机算法
第二种:权重优先级算法
第三种:最小活跃调用算法
第四种:一致性hash算法
如果所有服务提供者的机器配置和新旧差不多,优先选用第一种或者第四种
如果所有服务提供者的机器配置和新旧差很远,优先选用第二种或者第三种
服务路由
在服务消费端的可用服务提供端ip列表中选择调用哪个ip,除了由负载均衡算法决定,还需要由服务路由规则决定
原因一:业务灰度发布
原因二:多机房就近访问
路由规则配置方法:
方法一:静态配置
方法二:动态配置
服务容错
服务消费者发现调用失败后手段
手段一:Failover,发现调用失败后,设置重试次数,如果超过重试次数后对可用服务列表的下一个可用服务ip进行调用,如此类推。适合服务调用时幂等的场景,读操作场景。
手段二:Failback,发现调用失败后,根据返回失败的信息来决定是否重试,如果生效了就不需要再重试,如果不生效就再重新调用。适合服务调用时非幂等的场景。
手段三:Failsafe,发现调用失败后,等待一个时间间隔后再重试。适合服务调用时幂等的场景。
手段四:Failfast,发现调用失败后,不重试,直接返回失败结果,通常适合于非核心业务,适合服务调用时非幂等的场景。
原文地址:http://blog.51cto.com/winner16300/2310567