双11大规模数据流处理技术- Galaxy

每年双11除了“折扣”,阿里人关注的另一个焦点,就是面向全世界媒体 直播的“实时大屏”(如下图所示)。包括总成交量在内的各项指标,通过数字 维度展现了双11狂欢节这一是买家,卖家及物流小二共同创造的奇迹!

Paste_Image.png
              图 3:双11媒体直播大屏 

为实现这一大屏,背后需要实时处理海量的、庞大电商系统各个模块产生的 交易日志。例如双 11 当天产生的日志量达到了 PB 级别,而每秒处理的峰值更 是高达近1亿事件! 如此大规模、高吞吐和低延时计算,带来一系列世界级的技术挑战,包括:

  1. 实时编程:流式的数据处理给业务逻辑的表达和推理带来了很多的复
    杂性。特别面对不断变化的业务需求,如何帮助用户快速地编写和验证实时计算 逻辑是至关重要的。
  2. 低延时:实时计算强调计算延时和结果的时效性。例如实时大屏对计算 延时特别敏感,每年的双11都超越前一年更早地达到相同的成交量,系统需要 在秒级甚至毫秒级反应出每一笔交易。即使在流量高峰时(双 11 晚 0:00 点) 也需要保证延时!
  3. 集群利用率:为提高资源利用率,我们将不用业务的实时处理逻辑共 享一个集群。这样的共享也带来性能隔离的问题,即如何让同一台物理机上的不 同逻辑任务不互相干扰。这也是大部分开源框架忽略的重要问题。
  4. 严格容错及数据一致性:随着应对高吞吐而不断扩大的集群规模,各 种软硬件故障都难以避免。如何保证实时计算在任何故障下都能产生准确、一致的计算结果,不遗漏、重复事件输出,也不引起内部状态的偏差,是另一个重大 挑战。
  5. 多样化场景支持:随着实时决策对业务的价值越来越多,系统还需要 支持越来越复杂和多样化的场景,如在线机器学习、结合图计算实现的动态关系 网络分析等等。 下文介绍Galaxy的重要技术创新,简要描述它们如何帮助应对以上技术挑 战。

2.1 SQL 与增量计算——复用熟悉的离线思维,自动实
现增量(流式)计算 为了简化用户编程,特别是利用原有的离线计算作业快速实现实时计算, Galaxy允许通过高层描述性语言,如用户熟悉的SQL来编写流计算作业。例如 下面的例子,通过简单几行SQL代码就可以实现过滤、双流关联等业务逻辑。

Paste_Image.png

在执行时,由于数据是以流式进入系统的,用户的 SQL 就像数据库视图一 样,被自动增量更新,并以一定的频率输出结果,供下游计算和展示。 这一独特的编程设计,不仅帮助用户借助熟悉的离线处理思维表达实时计算 逻辑,也因为同样的程序可以在离线系统运行,使得结果的对比变得易如反掌。

2.2 高性能优化引擎——实现低延时计算!

用户的SQL脚本经过编译优化,生成数据流图,然后运行于Galaxy的分布 式引擎之上。相比开源数据流引擎,Galaxy 引擎在“阿里巴巴规模”下,面对 真实复杂的业务场景做了很多优化。包括自适应的消息打包、自定义序列化、数 据行+列压缩、先进的内存管理、和内部缓存队列和线程模型,以及基于下游向 上游“反向”传递压力的流控策略等。

Paste_Image.png

经过以上一系列的优化,Galaxy 相比去年提升了 6 倍左右的吞吐性能。下 图显示了 Galaxy 相比开源系统的性能优势。在面对今年双 11 3 倍于去年的峰 值情况下,表现非常稳健。

Paste_Image.png

图 5:开源框架性能对比,通过“窗口 WordCount(6 组参数)”基准测 试获取.

2.3 灵活的资源调度

Galaxy 面对阿里巴巴集团众多业务场景,将不同业务放置于大规模(几千 台服务器组成的)共享集群中,以提高资源利用率。另一方面也随之带来了“多 租户”环境下的作业资源隔离问题,它直接影响资源的有效利用和作业的计算性 能。 经过多年的积累,Galaxy支持CPU、内存、网络和磁盘I/O等多维度资源 的隔离。例如,对于 CPU 的隔离支持灵活的 min-max 策略,既保证了每个作 业基本的资源需求,也使的空闲的资源被大限度利用。

Paste_Image.png
      图6:作业维度的CPU资源min-max共享模型 

不一样的技术创新
166
在此基础上,Galaxy 的资源调度还支持一定比例的“超卖”、作业优先级 调度、动态负载均衡和微作业共享单一物理核等多种机制。对于资源消耗特别大 的作业还支持动态按需分配(即资源的弹性分配)。在满足复杂的运维要求和实 时计算连续性的同时,实现了高效的资源利用和性能隔离。

2.4容错与状态管理 流计算需要连续处理可能无界的输入和连续产生输出。在长时间运行中,大 规模计算集群的各种软件或硬件故障难以避免。由此对于计算和中间结果(如内 存状态)的容错就至关重要。为了做到精确的容错和故障恢复,保证结果的准确 性。Galaxy 支持多种灵活的容错策略,以在不同计算特性下,权衡容错资源消 耗和恢复性能。如基于输入的重新计算、状态检查点(checkpoint),甚至是 多副本的状态和计算容错等。 特别是自动的分布式增量检查点功能,系统自动利用内存、本地磁盘和远程 存储构成的多级存储,在不影响流计算延时的情况下异步实现了计算状态的持久 化。当有故障发生时,保存的状态可以被快速加载。这一切对用户都是无感知的。

Paste_Image.png
           图7:自动利用多级存储的流计算状态管理 

2.5 开放可编程 API(兼容 Apache Beam)

除了SQL这样高层的描述语言和用户自定义逻辑(UDF),Galaxy还支持 Apache Beam API,以提供更为灵活的实时逻辑编程。Beam是一个统一开放 的大数据应用编程接口,可以同时描述离线和在线逻辑,早由 Google 提出。 Beam提供了功能丰富的编程接口,能有效的处理有界、无界、乱序的数据流输 入。 下面显示了通过Beam实现的流式WordCount的例子: 1.指定Runner(底层计算引擎)创建一个Pipeline。 2.使用Source在 Pipeline上生成一个PCollection,输入数据。 3.对 PCollection应用Transforms操作,比如wordCount中的count操作。 4.对后的PCollection应用Sink,输出结果到外部存储中。 5.Run Pipeline到底层的计算引擎中。 使用Beam实现WordCount代码样例

public static class CountWords extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {   
     @Override   public PCollection<KV<String, Long>> apply(PCollection<String> lines) {     
         // Convert lines of text into individual words.    
         PCollection<String> words = lines.apply(         
               ParDo.of(new ExtractWordsFn()));     
              // Count the number of times each word occurs.   
                PCollection<KV<String, Long>> wordCounts =         words.apply(Count.<String>perElement());    
             return wordCounts; 
   } 
}

借助Beam,用户可以利用高性能的Galaxy引擎,定制面向特定领域的系 统交互接口。同时,Galaxy 今后也将兼容更多生态(如 Spark Streaming 和 Flink Streaming API)。

2.6 可视化集成开发平台和自动化运维

Galaxy 还提供了“一站式”的集成开发环境——贝叶斯(Bayes, https://data.aliyun.com/product/sc)和自动化运维平台——特斯拉(Tesla)。 通过它们,用户可以方便地管理流计算应用的生命周期,包括编程、调试、监控 运维,极大地降低了流计算系统的使用门槛。

Paste_Image.png
              图8:贝叶斯集成开发环境 

2.7 双 11 的宝贵工程经验
为保障系统在双11平稳支撑业务,在以上功能基础上,我们还总结了完整 的全链路保障方法: • 主备双链路容灾:利用 Galaxy 对多副本执行的支持,面向双 11 重点 媒体大屏等实时业务,实现了跨机房的多链路副本。哪怕是整个机房的故障,都 能在秒级自动切换到另一副本上执行,保障了双11系统高可用。 • 实时全链路监控:我们从数据采集、读取、消费、入库各个环节都增加 延时指标的埋点,可以清晰地看到整条链路各个阶段的延时,快速分析哪个组件 性能瓶颈。另外,针对作业本身运行情况,比如输入吞吐、流量、CPU 和内存 消耗,都做了实时分析和展示的系统,能在秒级发现作业的异常。

• 运维诊断工具:为应对各种应急响应,我们做了一套完整的运维诊断工 具用于发现集群热点机器、热点作业。在Tesla页面上能快速找到集群的热点机 器,通过“机器分析”工具查看这台机器上实时跑的任务,并且能定位到相应的 业务和用户。通过“作业分析”工具能自动诊断异常,结合作业的优先级,实现 了一键负载均衡、启停、续跑等运维操作。 通过这些保障设施,双11当天,即使在发生交换机硬件故障的情况下,面 向全球直播的媒体大屏业务并没有受到任何影响!

2.8 小结
拥有这些和其它诸多能力,Galaxy 已经具备了相当完善的实时计算能力, 也提供了“一站式”的解决方案。今年双11当天,Galaxy处理了PB级别数据, 处理峰值达到了 1 亿事件每秒,平均处理延迟在毫秒级!除了双 11 媒体大屏, Galaxy 还支撑着阿里巴巴集团内外众多实时业务,包括数据运营、广告营销、 搜索个性化、智能客服、物流调度、支付宝、聚划算等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容