分布式实时处理系统:原理、架构与实现
上QQ阅读APP看书,第一时间看更新

序一

2016年春节刚过,此时距离我出版《腾云》已经过去三年,而写作一本技术书籍的艰辛仍然历历在目。我身边有不少大拿级别的牛人,不少都被出版社试探过,但真正动笔的寥寥可数,主要原因是写书实在不是一件吃饭喝酒般轻描淡写的事情。在被本职工作和家庭琐事折腾得死去活来的间隙,强打起精神一砖一瓦地堆砌出几十万字,想想就让人却步,而这个过程往往历时数月,这意味着你要过上小一年的苦行僧式生活。若不是对书中主题保持着异乎寻常的兴趣和坚定不移的信念,一般人不会轻易开始这段苦旅。正是因为这个原因,我相信卢誉声的这本书一定是个干货满满的好东西。

优秀的技术书籍都有一个特点,那就是自下而上的阐述方式,从最底层、最实际的操作层面入手,而不是形而上的口号式概念,而本书则正是这样一本书。读者从第1章就能实际触摸到实操的快感,书中讲解了大量实例,我常说“一百字的定义,不如一句话的实例”,通过这些范例,读者可以快速获得感性认识,进而随着章节的推进把这些认知归纳总结为自己能够掌握的方法论。在游泳中学习游泳,说的就是这种简单、实用的学习思路。而考验一个作者功力的地方,就是他能否针对每个关键概念提出恰当清晰的例子,并阐述清楚。从我读到的篇章来看,卢誉声的这个工作完成得相当不错。这样一本朴实而扎实的技术书籍反映的是作者的态度,作为读者,在阅读过程中我可以感受到字面下作者热切希望跟广大同行分享的激情,那种把自己的认识和盘托出的诚恳是每一个痴迷于技术的工程师都有过的感受,卢誉声体会过,我体会过,这本书未来的大多数读者都体会过。正是这种对技术的诚恳让我相信本书值得一读。

回过头来我想说说对开源的认识。本书由Apache Storm说开,Apache Storm作为一个顶级开源项目在业界的影响力无需多言,为了了解项目的背景,我特意读了Storm项目的孕育者Nathan Marz的长文《History of Apache Storm and lessons learned》。我发现,虽然Nathan充分认识到Storm能够带来的商业潜力(赶在Twitter收购前公开展示Storm的效果),但他从来没有动摇过将这个项目完全开源的打算,甚至应该反过来说,他从来没想过要将Storm作为一个私有计划保持下去。2011年7月,Nathan所在的BackType正式被Twitter收购,几乎毫不犹豫的,他旋即开始着手将Storm开源,这之后便是大家熟悉的故事,Storm以令人炫目的速度吸收开发者,并在短短三年后,于2014年9月17日正式成为Apache顶级项目。

为什么会有开源运动?这已经是一个无法再吸引注意力的老旧话题,无数人从商业、技术、社会等领域给出了无数严密的解答,但我们真的从心里认可这种行为了吗?特别是在国内的商业环境下,广大工程师每天享受开源项目的成果之余,真的理解开源运动的深意了吗?至少对我来说,花了很长一段时间才得出能够说服自己的解释。

第一个我无法理解的现象就是,开源并没有带来可量化的商业价值。作为开源世界的老大哥,Red Hat的管理层向股东保证在2016财年达到20亿美元销售额,此时距离Red Hat成立已经超过20年。作为对比,2015财年Microsoft的销售额超过930亿美元,如果说今日的微软已经包括了游戏机硬件、搜索等与软件不相关的业务,那么另一个传统软件领域的代表Oracle在2015年营收达到382亿美元,而SAP也有200亿美元。这些被嘲笑成“史前恐龙”的传统软件厂商在不同场合被描述为落后生产力的代表,它们站在开源潮流的对立面,出于狭隘的商业利益,沿着封闭、自我的路线一意孤行。可事实是,软件产业说到底同卖手机、卖汽车一样,仍然是一门生意,遵循用户用脚投票的商业规律,既然开源这么美好,为什么没有像苹果手机一样,通过巨大的商业成功快速颠覆原有模式呢?

另一个一直以来我没想明白的问题是,作为最终用户的工程师为什么要拥抱开源呢?开源固然可以给程序员带来莫大的快感,不管是个人成就还是物质回报,以往依附于大型软件公司的独立程序员现在有机会在社区通过个人贡献树立更大的影响力;可是对于绝大使用这些产品的工程师来说,开源和商业产品的区别就没有那么大了,而使用开源还伴随着学习成本和不稳定的后期支持。即使如此,我们周围抵触开源的声音却越来越小,即使那些最老资历、最忠诚的Oracle DBA也开始接触MySQL,很有意思?

把时间拉回20世纪90年代,彼时个人电脑还是黑科技代表之一,学校还会开设“电脑课”教授基本操作,这类课程中往往很重要的一个章节就是“五笔打字”法。打字这个技巧放在今天几乎是跟走路、吃饭一样的基本生存技能,90后一代已经很难回忆起来自己是在哪个时刻“学”会了打字,大多数都是自然而然在日常生活中磨练出来的。20年前的一门专业技巧现在已经完全融入大众生活,这其中蕴含了一个有意思的规律,即任何一种技能都会随着时间的推移失去门槛,同时在这个过程中经过无数人的实践和磨练,这项技能已经进化出一套最有效率的模式,后来者可以跳过探索、试验的过程,用最短的时间直接掌握这套模式就能实现之前高手级别才能达到的效果。在打字这个例子中,对于中国人来说目前在高效与易学间取得最佳平衡的是具备联想功能的拼音输入法,因此年轻的电脑用户只需听从朋友推荐下载正确的软件,两三天内就能练就足够应付日常交流的打字能力。

如果把视线拉远,欣欣向荣的新型操作系统和数据库正是这种技能门槛不断拉低的现象在软件领域的投射。操作系统、大型数据库这些领域在20世纪90年代是皇冠顶上的宝石,全世界也只有那么一小簇顶尖专家能够弄明白其中的奥妙,而时间过去20年,Microsoft们已经培养出一大群熟悉这些大型系统的专家,人力门槛不复存在,而搭建一个操作系统或数据库的基本方法论现在已经非常成熟,因此开发操作系统不再有那么耀眼的光环,越来越多的政府机构、企业、科研机构甚至个人进入这个领域,并且取得不错的成果。这完全是因为最初的那一批精英已经填平了这条路上的大坑,并将他们提炼出来的最优方法论形成“可复制的经验”,而后来人能够直接利用这些“可复制的经验”,快速经过基础知识积累阶段,直接针对当下的难点攻坚,从而令一些出色的后来者能够进一步推高整个领域的高度。

在没有开源运动的时代,“可复制的经验”的传承是受到严格限制的,要么在企业内部形成专利,只有技术团队的核心成员能够接触到,要么在科研机构的高墙后,少部分有能力进入高墙后的精英得以一窥究竟。开源几乎是以几何倍数放大了“可复制的经验”的传播速度,这种方式在技术领域带来的后果是极大地加快了技术本身的演进,这很好理解,因为参与的人多了,众人拾柴火焰高,自然比小团体的做法有效率。而在商业领域,开源则令资源配置更有效率,开源行为本身会大量产生“可复制的经验”,从而反过来进一步拉低特定技术领域的门槛,加速技术的演进,企业的决策者发现新技术的成熟速度大大加快,因此他们必须更加积极地把资源配置到更前沿的领域以保持竞争力。回到Red Hat的例子,虽然这家公司本身的销售额永远不可能达到Microsoft或Oracle的高度,但Red Hat以远比Microsoft小得多的规模提供了一个同样可靠并更加灵活的操作系统,为整个行业释放出大量优秀工程师资源,这些人才将进入云计算、大数据等新兴行业,在新的山头攻坚。如果没有Red Hat这样的企业以最有效率的方式为行业提供基础设施,新的技术领域很难建立足够的人才队伍,整个行业的发展速度也会缓慢下来。因此,我们不能只看Red Hat的销售额,还应该看看AWS、Salesforce这样的新兴玩家,正是因为有了Red Hat,才有后者的高速发展。对于个人而言,这种大趋势是不可阻挡的,聪明的老专家们自然会即时调整方向,拥抱开源。

开源运动近年来已经逐渐突破计算机软件领域,开始向其他行业扩展,例如开源服务器硬件、开源网络设备,甚至开源的IT管理流程。说白了,开源是一种新时代的知识传承模式,未来的世界将处处开源,竞争的壁垒将体现在高效协调资源的能力,而不是对特定知识的独占。当我知道卢誉声将把书中提到的Hurricane完全开源时,我非常赞同他的做法。因为这个动作,本书不仅仅是一部讲授代码编写的书籍,还是一个开源社区的星星火种,我特别推荐所有对实时大数据分析感兴趣的同业中人阅读此书,并以此作为迈入下一个开源大时代的第一步。

徐立冰

思科系统高级客户经理