Dubbo学习笔记(二)——高可用

注册中心宕机

现象:当注册中心发生宕机,消费者还是能够消费dubbo暴露的服务。
原因:

  • 监控中心掉线不会影响使用,只是丢失部分采样数据。
  • 数据库宕机之后,注册中心仍能通过缓存提供服务列表查询,但是不能注册新的服务。
  • 注册中心对等集群,任意一台掉了,还是能够自动切换到另一台上。
  • 注册中心都挂了,服务提供者和消费者还是可以通过本地缓存实现通讯。
  • 服务提供者无状态,任意一台掉了,还是可以由其他的提供者提供服务。
  • 服务提供者都挂了,那么消费者就不能使用应用了,并且会无限次地重试等待服务者恢复。

负载均衡机制

负载均衡策略

  1. 基于权重的随机负载均衡机制
    随机访问的时候,访问概率等于权重比。
  2. 基于权重的轮询负载均衡机制
    轮询访问的时候,访问概率等于权重比。
  3. 最少活跃数负载均衡机制
    尽可能调用相应速度最快的服务提供者。
  4. 一致性哈希负载均衡机制
    根据消费者的请求信息,映射到相应的提供者。

服务降级

什么是服务降级

当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。

服务降级的策略

  • mock = force:return+null 表示消费方对该服务的方法调用直接放回null值,不发起远程调用。用来屏蔽 不重要服务不可用时对调用方的影响。
  • mock = fail:return + null 表示消费方对该服务器的方法调用在失败后,再返回null,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

集群容错

集群容错模式

  1. failover cluster
    失败自动切换,当出现失败,重试其它的服务器。通常用于读操作,但是重试会带来延迟,可以通过retries=2,来设置重试次数。这是dubbo默认的集群模式。
  2. failfast cluster
    快速失败,发起一次调用,失败了就立即报错。通常用于非幂等性的写操作,比如新增记录。
  3. failsafe cluster
    失败安全,出现异常的时候,直接忽略。通常用于吸入审计日志等操作。
  4. failback cluster
    失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
  5. forking cluster
    并行调用多个服务器,只要一个成功即可返回。通常用于实时性要求高的读操作,但需要浪费更多的资源。可以通过forks= "2",来设置最大并行数。
  6. broadcast cluster
    广播调用所有提供者,逐个调用,任意一台报错,则报错。通常用于通知所有服务提供者更新缓存或日志等本地资源信息。进行同步。

集群模式配置

可以分别在提供方和消费者配置集群模式。默认模式是失败自动切换。

<dubbo:service cluster="failsafe"/>
<dubbo:reference cluster="failsafe"/>

整合hystrix开启服务容错功能。

原文地址:https://www.cnblogs.com/lippon/p/14213620.html