LinkedIn的服务过载检测与补救

LinkedIn 的 Hodor:微服务过载检测与修复解决方案

LinkedIn 最近发布了一篇关于其如何处理基于 Java 的微服务过载检测与修复的文章,介绍了其解决方案 Hodor。Hodor 是一个无需配置、开箱即用的自适应解决方案,能够在监控进程内部运行过载检测器和负载卸载器,无缝采样负载并从应用程序的处理链中卸载流量。

Hodor 的主要特点

  1. 全称与功能:Hodor 全称为 Holistic Overload Detection and Overload Remediation(全面过载检测与修复),是一个基于 Java 的组件,通过平台特定的适配器在进程中运行。它能够检测由多种根本原因引起的服务过载,并通过卸载适量流量来自动修复问题,使服务恢复并保持最佳流量水平,防止再次进入过载状态。
  2. 动机:LinkedIn 的高级工程师 Bryan Barkley 提到,LinkedIn 的早期系统是一个单一的整体 Java Web 应用程序,随着用户增长和技术扩展,系统演变为超过 1,000 个独立的微服务。这些微服务在扩展时面临的一个常见问题是过载,导致无法以合理的延迟处理流量。
  3. 架构:Hodor 的架构包括过载检测器、负载卸载器和平台特定适配器。过载检测器确定服务是否过载,负载卸载器决定卸载哪些流量,适配器将请求特定数据转换为平台无关的格式。
  4. CPU 过载检测:Hodor 首先针对 CPU 耗尽问题构建了过载检测器。通过运行一个后台守护线程并记录其实际睡眠时间与预期睡眠时间的差异,收集数据窗口并检查是否超出阈值来判断 CPU 是否过载。
  5. 负载卸载策略:默认的负载卸载策略是限制并发请求数。当服务超过并发请求限制时,负载卸载器开始卸载额外流量。一旦并发请求数低于限制,其他流量将被允许通过。
  6. 自适应算法:Hodor 的核心是一个自适应算法,根据过载检测器的反馈调整并发限制,确保在过载事件中只卸载最少的流量,以保证服务的持续运行。
  7. 重试机制:Hodor 在卸载流量时会指示客户端在另一个实例上重试被拒绝的请求。为了避免重试风暴,Hodor 在客户端和服务器端管理多个重试预算,一旦预算耗尽,请求将失败,服务器将停止指示客户端重试,直到整体情况得到解决。

总结

Hodor 是 LinkedIn 为应对微服务过载问题开发的一个自适应解决方案,能够在不进行配置的情况下自动检测和修复过载问题。通过其独特的架构和算法,Hodor 能够有效管理流量,确保服务在高负载情况下仍能稳定运行。

阅读 16
0 条评论