服务容错

服务容错 #

知识点 #

容错模式

  • 超时:限制请求的最大处理时间。
  • 快速失败:检查异常或业务异常通常无需重试,直接抛错或默认值。
  • 限流:限制请求的最大并发数。
  • 熔断(断路器):限制异常请求的数量。熔断可以看做是降级的一种实现方式。
  • 隔离:隔离不同的依赖。可以是机器、应用、线程池等。一般将耗时长的请求放到单独线程池中执行,这样即使线程池耗尽也不会影响到其它功能。
  • 降级
    • 页面降级:按钮置灰、功能禁用;动态页面改为静态内容;
    • 延迟处理:定时任务延后处理;实时任务入队列;
    • 读写降级:禁止读/写操作;
    • 准确性降级:使用缓存替代数据库;返回以前保存的数据;
    • 接口降级:拒绝请求,快速失败;调用备用逻辑;

大部分容错机制都可以直接在网关层实现。

最佳实践 #

  • 监控大盘:公司有指标监控服务的优先使用指标监控服务;没有监控服务的再使用各种容错框架内部提供的Dashboard。
  • 限流
    • Nginx层:Nginx 中包含了两个限流模块:ngx_http_limit_conn_module 和 ngx_http_limit_req_module。前者是用于限制单个 IP 单位时间内的请求数量,后者是用来限制单位时间内所有 IP 的请求数量。
    • 应用层:Zuul RateLimit、Guava RateLimiter。
沪ICP备17055033号-2