Enhancing OLAP Resilience at LinkedIn

本文介绍了 LinkedIn 为 Apache Pinot 开发的一套综合弹性机制,包括查询工作负载隔离、无影响重平衡、维护区感知和自适应服务器选择,旨在确保大规模实时 OLAP 系统在故障、负载激增和集群变更等场景下仍能维持严格的 SLA 和高可用性。

Praveen Chaganlal, Jia Guo, Vivek Vaidyanathan, Dino Occhialini, Sonam Mandal, Subbu Subramaniam, Siddharth Teotia, Tianqi Li, Xiaxuan Gao, Florence Zhang

发布于 Tue, 10 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇文章讲的是 LinkedIn 如何让他们庞大的实时数据分析系统(叫 Pinot)变得更“皮实”、更聪明,即使面对故障、流量洪峰或系统升级时,也能保证用户查询数据的速度飞快且稳定。

想象一下,Pinot 就像是一个超级巨大的、24 小时营业的“数据图书馆”。这个图书馆里有 PB 级(相当于几亿本书)的数据,每天要处理数百万次读者的“查书”请求。

为了让这个图书馆在极端情况下也能正常运转,LinkedIn 的工程师们给它装上了四套“超能力”:

1. 智能资源隔离 (QWI):给每个读者发“专属饭票”

问题: 以前,所有读者(不同的业务部门,比如“谁看了我的资料”、“广告分析”)都在同一个大厅里抢资源。如果有一个读者(比如一个复杂的广告分析任务)开始疯狂“暴饮暴食”,占用了所有的 CPU 和内存,其他普通读者(比如简单的查询)就会饿肚子,导致查书变慢甚至查不到。这就是“吵闹的邻居”问题。

解决方案:

  • 比喻: 就像给每个读者发了一张专属的“饭票”(预算)
    • 每张饭票规定了你能吃多少饭(CPU 时间)和喝多少水(内存)。
    • 系统会实时盯着:如果你吃得太多,超过了你的饭票额度,系统会立刻把你“请”出去(停止你的查询),或者拒绝你点新菜。
    • 这样,无论那个“大胃王”怎么吃,都不会抢走其他读者的食物。
  • 效果: 即使有人乱吃,其他人的查询速度依然像往常一样快,而且这套系统的开销极小(几乎不消耗额外资源)。

2. 维护区感知与无感重平衡:像“换轮胎”一样换服务器

问题: 图书馆需要定期升级、修补漏洞或增加新书架。以前,如果要把数据从一个服务器搬到另一个,或者某个区域(比如某个机房)要断电维护,系统可能会把同一本书的多个副本都放在同一个区域。一旦那个区域断电,大家就都查不到书了。而且,搬书的过程会让图书馆暂时变慢。

解决方案:

  • 比喻:
    • 分散风险(维护区感知): 系统像一个精明的图书管理员,确保同一本书的副本绝对不会放在同一个“容易着火的房间”(故障域/维护区)里。如果“东区”要断电,管理员保证“西区”和“北区”里都有这本书的副本,大家依然能查到。
    • 无感搬运(无感重平衡): 以前搬书是“先搬走,再让人查”,中间会断档。现在的策略是“先让人查,等没人查了再搬,搬完再让人查”。就像在高速公路上换轮胎,车还在跑,只是慢慢把轮胎换好,乘客完全感觉不到颠簸。
  • 效果: 即使整个机房断电或进行大规模升级,用户查数据的速度和成功率完全不受影响。

3. 自适应服务器选择:像“滴滴打车”一样智能派单

问题: 以前,系统分配任务时是“轮流派单”(Round Robin)。就像排队打车,不管司机(服务器)是刚吃饱还是正在修车,都按顺序派给他。如果刚好派给一个正在“修车”(GC 停顿、磁盘慢)的司机,所有乘客都要等很久。

解决方案:

  • 比喻: 现在系统变成了智能派单系统(像滴滴或 Uber)
    • 每个“司机”(服务器)都有一个实时评分。如果某个司机刚才反应慢、或者正在处理大单,系统就会自动把新订单派给那些“反应快、状态好”的司机。
    • 它还会防止“羊群效应”:如果所有派单员都盯着同一个“快司机”,那个快司机也会累垮。系统会故意随机分配一点流量,保持平衡。
  • 效果: 即使某个服务器突然变慢,系统能在几秒钟内自动避开它,把流量导走,用户几乎感觉不到延迟。

4. 整体效果:打造“打不烂”的数据系统

这三项技术(加上基础的架构)组合在一起,让 LinkedIn 的 Pinot 系统变得非常健壮

  • 不怕乱吃: 资源隔离防止了个别任务拖垮整体。
  • 不怕断电: 智能分布保证了即使部分区域挂了,服务依然在线。
  • 不怕慢车: 智能派单自动避开故障节点。

总结:
这就好比给一个巨大的数据图书馆装上了自动安检门(防止有人带危险品/乱吃)、智能图书管理员(确保书分散存放,防火防盗)和智能调度中心(谁快派给谁)。结果就是,无论发生什么意外,用户都能以亚秒级的速度查到他们想要的数据,就像什么都没发生过一样。