点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

Lambda 架构的问题

  • 2014-09-10
  • 本文字数:1272 字

    阅读完需:约 4 分钟

Jay Kreps 在其博文中揭示了Lambda 架构可用性和适用性的限制,他认为虽然Lambda 思想充满了价值,但终究是一个临时解决方案,原因是其工具不成熟而非大数据的前景。他提供了一个替代架构,该架构基于他在Linkedin 构建Kafka 和Samza 的经验,他还声称该架构在具有相同性能特性的同时还具有更好的开发和运维特性。

Lambda 架构是一种面向大规模流式处理的解决方案,它结合批处理与实时处理以实现可扩展性和容错。该模式通常通过基于 Apache Hadoop 的 MapReduce 和 Apache Storm 分别实现。Nathan Marz 基于他在 Twitter 的经验设计了该方案,并发表在一篇题为如何打破CAP 定律的博文中,还有对应网站以及与此架构相关的即将出版的书籍

Kreps 承认了 Lambda 的两条重要原则:数据输入是不可变的和原始数据输入可以被再处理用以重新输出结果。保留原始输入允许我们处理数据,即使以前所未有的方式也无所谓,还能在因不明原因保存损坏数据的情况下提供恢复机制。当需要新的输出域时,或前一个版本的处理代码有 bug 导致输出不正确时,都需要再处理数据输入。

同时 Kreps 认为 Lambda 包含固有的开发和运维的复杂性。Lambda 需要将所有的算法实现两次,一次是为批处理系统,另一次是为实时系统,还要求查询得到的是两个系统结果的合并。考虑到将复杂算法正确地实现一次都是一个挑战,执行两次这样的任务以及调试不可避免的问题显然是难上加难。除此之外,运维两个分布式多节点的服务肯定比运维一个更难。

Kreps 概括其高层指南说道:

近来,我的建议是如果你对延迟不敏感,那就使用批处理框架如 MapReduce,如果敏感就使用流处理框架,但是不要尝试同时使用这两种系统,除非有绝对需要。

那么为什么大家对 Lambda 架构如此兴奋呢?我想原因是人们越来越需要构建复杂和低延迟的处理系统。他们所能使用的两个工具都不能完全解决问题:用于处理历史数据的可扩展的高延迟批处理系统,和无法再处理结果的低延迟流式处理系统。但将这两个工具连在一起,就可以构建可用的解决方案。

对于那些同时需要低延迟和处理巨大历史数据集的应用场景,Kreps 建议实时流式处理系统够用了。当需要再处理数据时,增加并行处理数量和快速重放历史就是解决方案。Linkedin 目前使用的就是该方案,使用 Kafka 和 Samza 实现。Kreps 说相同的方案使用 Storm 或其他流式处理系统也照样能工作。他确信,这两种架构的运行时效率大致一样,但是单系统显然更易开发和调试。

社区对 Kreps 博文的反馈是几乎普遍支持,有几个人同意Krep 的观点与他们的经验相符。 @jcsalterego 说“非常棒的博文,谢谢。与我所见一样,虽然比 Linkedin 的规模小不少”, @jijoejv 说“好文。我们在 @Nextag 使用”Kappa”架构已经一年半,使用 Storm+Kafka(90 天统计图)。修复 Bug 非常容易”。Nathan Marz 目前尚未作出回应。

查看英文原文: Questions About the Lambda Architecture


感谢曹知渊对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-09-10 07:425916
用户头像

发布了 28 篇内容, 共 85850 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

正确面对倦怠感,提升职场战斗力

boshi

职场成长 七日更

产品训练营 - 第四周 - 作业

邹小胖

产品训练营

HTTPS的安全性从何而来?

盘点和程序员相关的那些事,让你不再被割韭菜,薅羊毛!

孙叫兽

程序员 程序人生 高薪 话题讨论

流媒体传输协议之 RTP(下篇)

阿里云视频云

音视频 流媒体 rtp

区分重载和重写,轻松掌握 Java 多态

飞天小牛肉

Java 程序员 面试 后端 2月春节不断更

深入了解gradle和maven的区别

程序那些事

maven Gradle 程序那些事 构建工具

Elasticsearch 精确匹配与全文搜索

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

产品经理训练营笔记 - 业务流程与产品文档(二)

.nil?

产品经理训练营

ZEGO全新语音聊天室方案,2小时复刻 Clubhouse

ZEGO即构

极客大学·产品训练营·第三章作业(第四周)

二大爷

极客大学 极客大学产品经理训练营 产品训练营

第4周作业_贷款申请用例

园子

互联网金融 小额贷款 去中心化金融借贷系统开发

产品经理 - 第三周作业

LLL777

【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI

AXYZdong

硬件 stm32 2月春节不断更

【得物技术】走进Web3D的世界(1) 画个立方体吧

得物技术

html html5 js WebGL 得物技术

5G点亮工业革命前,2021需要持续点亮5G

脑极体

话题讨论 | 如何获得令人心动的前端offer

我是哪吒

程序员 面试 大前端 话题讨论 二月春节不断更

马斯克说狗币牛逼,我说idea插件助你盯盘摸鱼

滑板上的老砒霜

比特币 idea插件 Android开发

第四章作业

Rui

Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

JavaPub

Java 面试 hashmap javapub

从“乌鸡”到5G,不仅仅是谐音梗

脑极体

5. Python 循环的本质就是一段代码懒得重复写

梦想橡皮擦

Python Python Monad 2月春节不断更 python入门

20210209—生活记录

VC

二月春节不断更

/(ㄒoㄒ)/~~晚了

Nydia

话题讨论 | 你是不是一个特别容易被说服的人?

石云升

话题讨论 2月春节不断更

你真的了解 sync.Mutex吗

Leo叔叔

mutex Go Concurrency Patterns Go 语言

你看那个程序员,每年升职加薪,日赚3千

谙忆

极客时间购买课程用例

Geek_a32093

LeetCode题解:297. 二叉树的序列化与反序列化,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

金融科技的碎片化思考(中)

曲水流觞TechRill

金融科技

认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList

看山

Java 线程安全

Lambda架构的问题_大数据_Seth Cousins_InfoQ精选文章