说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

从Apache Storm学到的经验教训

HTML文档下载 WORD文档下载 PDF文档下载
Storm是一个免费、开源的分布式实时计算系统。从Storm的由来到第一个版本的诞生;从离开Twitter到转投Apache怀抱,Storm是如何从零发展到顶级项目的,且听Storm工程师Nathan Marz的深度解读。

【编者按】Apache Storm是一个免费、开源的分布式实时计算系统。除了用于实时分析外,Storm也可用于在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm简单易用,支持多种编程语言。Storm也是少有的几个使用Clojure编写的开源项目之一,Clojure是一个在JVM平台运行的动态函数式编程语言。国内的几个公司也在大规模使用Storm,比如百度、淘宝,在Storm的官网也能看到他们的商标。


Storm升级为Apache基金会顶级项目后,Storm主工程师Nathan Marz就Storm的由来和项目心得撰写了本文。Nathan Marz表示,Storm的成功离不开开源,打造一个成功的项目不仅是能帮助人们解决实际问题,还必需兼顾文档,推广,支持社区等方方面面。

译文如下:

Storm的由来

首先,任何成功的项目需要做到两点:

  1. 成功解决了一个实际问题
  2. 能够说服大量的用户使用你的项目,证明你的项目是他们的最佳解决方案。

我想,第二点是开发者在项目工作中普遍忽略的一点,但其实这关系到项目的成败,我希望下述的Storm历史能够使大家对此引起足够的重视。

Storm的前身是BackYype,用来帮助商家分析和研究他们的产品在社交网络中的影响力,可以处理历史或实时的数据。使用的方法是标准队列和线程(worker)方法,但是这个方案不太令人满意。首先它并不友好,所有的队列和线程都必须确保可用,这样相对来说显得冗长。大部分逻辑处理用于进行收发和序列/反序列消息,一个应用的某个逻辑将会遍及所有线程。

2010年12月,我想到了“流(Stream)”的分布式抽取方法,最后演变为“喷嘴(spout)”和“bolts(螺拴)”的思想。这两个概念的特点是内在并行处理的,类似于Hadoop。Bolts对于需要处理的流进行订阅,然后指出之后的流该如何进行分区处理。进行一番实践后,我决定在这基础上进行进一步改进,于是我在推特上发布了新的构建思路--Storm,结果反应非常热烈。

随后,对中间消息的依赖让我觉得,如果有个更好的办法,消除对中间消息传递的依赖,会更能提高工作效率。于是我尝试使用一种基于随机数和异或逻辑的算法,它仅需要20个字节的长度来跟踪每个spout数组。至此,Storm的雏形基本成型,我隐约感觉这将是一项伟大的工程。

第一个版本

接下来的5个月时间里,Storm的第一个版本诞生了。从一开始,开源是我觉得应该去做的事情。我用Java进行Storm API的编写,而部署端使用Clojure。事实证明,这会带来更高的软件生产力和工作效率。此外,考虑到兼容性和便利性,我希望Storm平台是能与主流编程语言无缝工作的,这样人们使用Storm时,可以使用自己熟悉的语言,而不必重写代码。

作为Hadop的重度使用者,Hadoop的僵尸worker模式会浪费不少资源。于是,在Storm设计中,我把累赘的使用完毕的worker在其首次出现的地方就直接销毁。另外,一旦Hadoop的JobTracker出现问题,正在运行的作业将会被终止。如果有一项作业已经运行了多天却因此而被迫终止,这无疑是非常令人沮丧的。所以在Storm中我引入了“process fault-tolerant(进程容错)”机制,简单说,就是即使Storm守护进程被销毁,重启该进程不会对正在运行的拓扑产生影响。

Jason Jackson的帮助下,在AWS上我们创建了Storm自动部署机,这对Storm的开发过程带来极好的帮助,同时使得我可以在不同大小和配置的机器集群中进行测试。

开源Storm

2011年7月,与Twitter就收购事宜达成一致,我们正式加入Twitter这个大品牌。同时,我马上着手推出Storm。

要想成功发布开源软件,方法有两个。一是把事情“搞大”,尽可能地增加作品的曝光度与关注度,不过缺点是一旦与人们预期不符合,进一步合作意愿可能从此消失。二是静悄悄地发布,慢慢地培养用户群,不足之处是如果人们发现不过如此,很可能从此不再关注。对这两点进行分析论证后,我决定透过开交流会的方式进行宣传和发布。事后证明,这是正确的做法。在正式发布当天,Github上的浏览和关注数很快就超过了1000次,同时成为Hacker New上排名首位的项目。

Storm的技术演变

初创企业的需求与大型成熟企业的需求截然不同,加入Twitter后,我们对此有越来越深刻的认识。在Twitter中,人们希望能够直接使用Storm,而把其他的运营工作交给别人。这意味着,我们需要打造一个大型的共享集群,能够独立运行大量的程序,并确保程序间不会成为彼此的资源争夺者,这一般被称为“多用户架构”。

由于共享的性质,我们发现人们喜欢获取最大程度的资源来运行程序,而实际上很多时候是供大于求。于是,我开发了“isolation scheduler(分离调度表)”。这个机制一来鼓励人们更有效地使用资源,二来允许单个集群共享负载量。

随着Twitter平台的发力,越来越多的开发者成为Storm的用户。出于对系统性能监控需求的考虑,我们提供了相应的指标API,方便人们把相关指标数据与自己喜好的监控系统进行整合。

另外一个较大的技术进步是开发了Trident(三叉戟),一个基于Storm的微批处理API,提供了精确的一次性语义处理能力,提高了对新用例的处理能力。

离开Twitter,投入Apache怀抱

2013年,我离开Twitter发展自己的创业公司,但对于Storm,我始终是开发环节和发展的中心。接下来的数月里,在再次认识以个人为中心模式的种种不足后,我想是时候采用共识驱动的开发模式了。我希望Storm能成为一项长久的有活力的工程。争取Apache基金会的帮助,投入Apache的怀抱,是非常合适的选择。Apache有足够的品牌影响力,是个强大的合法的基金会,最关键的是能最大程度帮助Storm过渡到共识驱动模式。随着我作为发展瓶颈的问题完美解决后,Storm驶入发展的快车道。Storm开发社区活跃度与日俱增,越多越多的新想法新思路被发掘被采纳,在其哇哇坠地的三年后,在2014年9月成为官方的顶级项目,这就是群众的力量。

写在最后

Storm的成功让我深刻认识到,打造一个成功的项目不仅仅要能帮助人们解决实际问题,还必需兼顾文档,推广,支持社区等方方面面。特别是项目初期,我们需要有自己的创造性思维,来确保项目被成功推广。此外,自己也需要充分利用时间,来为人们解答疑难,编写支持文档,形成良好的交流氛围。最后,我们有时候需要做个清醒的旁观者,看有什么会制约项目发展,在适当的时候做出果断的选择,该抽离就抽离,群众的力量总比一个人战斗来得高效长效。

英文出自:NathanMarz

(责编/夏梦竹)

用C#编写的Telnet开源类库 Visual Studio C#创建Windows服务(Windows Service) C#取得Windows服务列表 C#编程自动安装Windows服务 C#安装/删除 .NET Windows服务 C#启动、停止、重启Windows服务 jQuery实现Ajax提交form表单的简单方法 字符串String与枚举Enum之间的转换[C#] Javascript统计DOM元素里文字的行数 C#从Web网站下载文件 C#得到区域名称列表 C#合并多个PrintDocument WpWidgetLibrary - Windows Phone的HTML部件库(Widgets) 让你不再害怕C语言指针 C语言概述-C语言教程 Turbo C 2.0集成开发环境的使用(上)-C语言教程 Turbo C 2.0集成开发环境的使用(下)-C语言教程 程序的灵魂—算法-C语言教程 数据类型、运算符与表达式(上)-C语言教程 数据类型、运算符与表达式(下)-C语言教程 最简单的C语言顺序程序设计-C语言教程 分支结构程序-C语言教程 循环控制-C语言教程 数值数组-C语言教程 字符数组-C语言教程 函数(上)-C语言教程 函数(下)-C语言教程 预处理命令-C语言教程 C语言指针(上)-C语言教程 C语言指针(下)-C语言教程 结构体与共用体-C语言教程 改变对话框的大小,但不改变位置,怎么实现? 急问VC中的声音函数 奇怪,我实在没招了。。。 动动动画画画???? 现在用于B/S结构的软件一般用什么开发工具? 我给自己一个要求 JDO和SQL Server2000建立表的映射关系时,datetime类型如何映射? 如何实现listview的ItemDbClick事件 请问:如何给Forpro数据库表增加一个字段? 如何判断鼠标不在我的窗体上 高分排错! 关于session的问题 这种Select效果怎么做? 问问各位大虾,怎么才能让我的activeX控件没有安全提示就能直接运行啊 问个关于控件边框拖动的问题 请教大侠 怎样在ToolBar上移动鼠标时,其按钮对应的图片显示不同外观(默认情况下,按钮只是突起) 哪里有MCS-51教程的电子书(急用)? DATETIME类型让我保存失败。 赛扬级的CPU运行.NET Framework 行不行??? 急 关于一个初始化问题? 紧急求救~~ 关于触发器 急 关于一个初始化问题? 一个关于日志的问题,解决不了请教高人!! 请问交换机的端口有mac地址吗? 如果附件名太长,用javamail收邮件附件收不到,怎么办? 请教更精练的代码 嗅探到局域网里机子的MAC地址,可以通过MAC知道他的IP地址吗?还有进来再说吧…… 程序运行 关于<object></object>组件数据提交问题! 熟悉呼叫中心的朋友请进了 如何停止FTP文件下载?函数如何实现 如何获得省略号代表的参数内容? 如何将Tlis中的指针信息保存成二进制(或文本文件),给个思路或套路! 我实在无法看见这个阿头!!!!!!!!!!! 熟悉呼叫中心的朋友请进了 请教大家:有关动态库的问题 后天去德国了!送分!!!有没有想去德国的弟兄!! 请问一下在线聊天原理和方法 求解C#从上手到精通时间 大家帮帮我 如何解决WebBrowser是没有标记为安全的ActiveX? 100分!!! 请教,近来有分 vc中有方便的调用webservice的开发工具包吗? 两个文件之间参数传递问题请教! 求解C#从上手到精通时间 熟悉呼叫中心的朋友请进了 我是一个菜鸟,简单问题 这样的SQL语句如何写? ie 浏览网页时,有时cpu 会用到100%,奔4 的17G,为什么会这样? 谁有Roxio VideoPack 5以上的版本?能下马上给分 ,中心思想通过了什么,表达或说明,体现了什么通过了什么事,说明了什么道理惑品质 09年初一下语文最有可能考的作文试题明天就考了,我是四川德阳的,就帮我看看,作文最大可能考什么,还有,那些要背的课文最容易考啊,那篇中点课文要考,还有文言文靠那片,不哟啊那些没用的 如果你要毁灭世界,请带我一起.这句话表达什么女对男 什么叫“帽子戏法”和“梅开二度”?足球里总是有这两个词, 如何应试提分成考语文作文 凝集反应和沉淀反应有何异同 背影的中心思想是什么 为什么"福"字要倒贴? 1.Don't send four of anything to a Japanese because the Japanese word "four" sounds like the word for "death".It ______ bad luckA.shows B brings C means D gives为什么用C 不用B 指它带来坏运气2.--I'm afraid if the kids go on playing such k 背影的中心思想 为什么福字要倒贴谁可也顺便告诉我这事的由来 1.Liu Hua is a _______ girl,but she has a ______nane.A japan china B American Chinese C Italy Chinese D japanesechinese2.My home is ______ school,so I often walk to school.A far away B not near C far from D not far from 3.How many _______ have you me 背影中心思想. “福”字倒贴的由来? 人体骨髓中的造血干细胞具有终生分裂能力,如果其中一个干细胞连续分裂5次,得到得到的细胞个数是A、5B、10C、55D、32 什么是帽子戏法? 为什么人们喜欢将一个“福”字倒贴? A型血的血清中的凝集素是 A 抗A凝集素 B 抗B凝集素 C 抗A抗B凝集素 D 都没有 什么叫帽子戏法 好汉不提当年勇,下面那句是什么? 血清中有凝集素还是凝集原 还是都有 英语翻译答对追加分数 是一个球队一场比赛进三个球么 还是. 好汉不提当年勇出自哪里(谁说的) 东施效颦:其里之丑人见而美之,画出句中停顿(画一处) 其( )里之丑人见而美之其里之丑人见而美之中的“其”是什么意思 什么叫“好汉不提当年勇”? 议论篇作文 其里之丑人见而美之的意思 为什么“好汉不提当年勇?”古人说的话自有它的深意,好汉不提当年勇是我常听到的古话.可是,为什么?为什么好汉就不能提当年勇了? 万能五笔如何实行五笔与拼音互译就是当拼音出现要打出的字时,可以看见它的五笔字形,反之可以见它的拼音 中的四个"背影"表达怎样的感情 语文作文高手请进(5)降低要求!请用以下两组词语分别写两端段优美或者很有哲理的话(每段尽可能简练).没有哲理或优美,只要通顺,和逻辑就行了!不要用近义词替代词语,有些词不好放在 背影 重点句子的解释 古代江南地区房屋特点也是急需写小说的问题. 语文四年级下册的第四单元作文 高手请进不要复制 自己写 是关于战争的那个小孩 作文高手请进 jewels jewellery jewel jewelries分别什么意思?有什么区别? 浮梅槛记 译文不需要原文 钻石的英文单词? jewellery,jewel1.She lost a treasured_at the party last night.2.All of her_was put in a safe. 江南地区的著名诗人有哪些?古代的. 中国传统文化福字为什么倒贴 jewellery英语怎么读 钟面上5时45分,时针在分针后面多少度?(要算式,要讲解) 儿子永远写不好的字是什么字?(打一字谜)小学三年级《品德与生活》课后练习与评价的一个题 给远方朋友的一封信 作文 写这学期令你感动的一件事 二次函数与一次函围成的图像的面积,可以用联立得到方程,再求这个方程的微积分得到所求面积吗? 我儿子做事总丢三落四,字 也 写不好 进错球门叫“自摆乌龙”,练进两球叫“梅开二度”,三球叫“帽子戏法”,还有什么词语啊?新出现的词语,包含语文水平,不一定是足球要认真些, 二次函数与一次函数有两个交点时,它们的联立方程组有两个解还是两组解? 中国人过春节“福”字为什么要倒着贴? 自摆乌龙 梅开二度 帽子戏法是不是成语与语言学、现代汉语相关的内容 二次函数是方程吗 春节“福”字为什么要倒过来贴? 请问帽子戏法就是梅开二度么? 什么是“二八定律”,是谁提出来的?什么是二八定律,都有哪些二八定律,是谁最先提出来的? 求一篇作文,要求如下:1.通过写景交代时间.2.从听觉.触觉.嗅觉和视觉去修饰描写物体.3.运用拟人手法从人的感觉去写.4.通过人物的对比描写反映人物的特点.我知道这难度很大,如果有好的, 什么叫帽子戏法,梅开二度aaaaaaaaaaa 今天就要!用所给的单词的正确形式填空用所给的单词的正确形式填空1、where is_____(nancy)mask?2、i would like_____(buy)some masks.3、how much_____(be)the masks?4、there aren't_____(some)sofas in the sittin 帮我赏析一篇作文,3Q《那一次我哭了》打开记忆的小窗,我想起了上个学期的一天,想起了那感动人心的一幕……那天,我们学校请来了一个外地的教授,给我们讲了一堂生动的感恩教育课.他在 浙江武义江遭日化企业偷排污水 环保部强风暴肆虐欧洲多国IAEA称与伊朗会谈富有成果 将于1叙反对派要求解除卜拉希米叙问题特别代IAEA称与伊朗会谈富有成果 将于1美驻吉尔吉斯使馆收到不明信封 内装白金砖国家共议“气候变化对粮食安全不利消息称美考虑停止对盟国领袖监听 未做快讯:俄罗斯一架武装直升机在莫斯科市中国游客成海外大买家 凸显国内免税业中非民兵与前叛军爆发冲突 造成近40英媒:养老金制度需考虑气候变化 否则格陵兰岛取消铀矿开采禁令恒天然调查:无肉毒杆菌风险 应改进生省委常委分赴教育实践活动联系点参加指台\"立委\":美国这种邪恶国家一定男子“拍卖初夜”以2600美元成交 外交部:日本应停止渲染外部威胁 说明金砖国家共议“气候变化对粮食安全不利安徽宁国副市长看望百岁老人 疑似PS美驻吉尔吉斯使馆收到不明信封 内装白2015年河北首例造血干细胞捐献者:昆明:男子登机后谎称携带炸弹 被判赔林业局通报10起严重违法占用林地案 近50层楼高的港珠澳大桥第一高塔封顶京津冀协同发展倒逼河北经济“慢一点、人口大省河南向大山深处推进扶贫开发林更新晒明星被山寨名字 网友:还有朴汪洋:创新机制落实责任强化举措 加快李绍先:2014年中东政治秩序出现塌美百岁老太当健身教练15年 社交网络中拉合作 恰逢其时[河北两会]代表审议省政府工作报告 邢台市桥西区中华街道:用微信平台聚集福建龙海一货车突发大火 车况不佳是元图解:你可能不了解的“拉共体”俄海军黑海舰队正式接收第2艘基洛级柴日本景气动向指数恶化 中小企业生产萎“猫王”80岁生日:第一张唱片拍出3国际要闻精粹:法国警方追捕枪手 亚航日媒:日本多发食品混入异物事件 盒饭上海外滩踩踏事件还有13人住院治疗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘