大数据那些事(13):乱入的卖书的

大西雅图地区是云的故乡。这里一年超过8个月的雨季让有云的天气遍布夏天以外的每一天。华盛顿湖把大西雅图地区划成了东岸和西岸。东岸是乡下,上个世纪微软在这里成就了它的软件帝国。西岸是城里,夜间常弥漫着大麻的气息,偶尔还会有突突突的枪声。

我们今天要讲的故事的主角其实大家都已经猜到了。这个公司有着很多的称呼,它曾经被微软前CEO 巴尔默亲切的称呼为湖对岸卖书的,自2000年的dotcom泡沫中存活,在2008年的经济危机以后开始发家,09年到16年股票翻了10倍。这是一家以节俭著称的公司。这家公司还因为工作环境的苛刻上了纽约时报。它就是亚马逊。

大数据时代的亚马逊依靠自己的云计算平台,占尽了很多很多的好处,赚了不少钱。然而我们必须说,这个公司对开源的贡献是很有限的,对于拿来主义则是非常的擅长。leadership下面到底需要给我们展现的是什么,是一个特别值得我们思考的问题。

这个卖书的很少发表有关他们的infrastructure的论文,尽管它有着这个世界上最为牛逼的deploy和monitoring 系统,Apollo和Brazil代表着业界在这个领域的巅峰。湖对岸那个上世纪腐朽的软件帝国无法比,曾经代表DoNotEvil的DoEvil狗也不能比。当然,我们外界对它所知并不多,只有几篇有限的blog。

破天荒的这个公司发表了一篇论文Dynamo,亚马逊的key-value store。这是业界公开发表论文的除BigTable以外的第二个Key-Value store,因此升起了NoSQL的一片天。它的江湖地位自然不容置疑。其实其他的公司比如微软比如Uber也都做了自己的Key-Value store,微软的自然不值一提,Uber的传闻是基于MySQL的,可能更是比较另类。

我写大数据系列常常纠结于到底要对技术细节做多深入的介绍,还是要对八卦做更深入的介绍。Dynamo的基本技术思想其实也是大名鼎鼎,来自于2000年左右的著名P2P系统Chord的思想,采用的是Distributed Hash Table. 其核心思想是在整个hash值的范围 的圈圈上放进去若干台机器,每台机器可以服务从上个hash值到自己的所有对于hash的请求。然后在每台机器里面设置好jump table就可以做到log的复杂度对内容进行查询。至于机器的加入和退出也有成熟的协议。这个技术可能对很多人都很熟悉了,尤其是搞web的。Consistent Hash应该不是什么特别的技术了,非常的大路货。若干年前如果需要看各种老师的表演必不可少的某驴某骡某BT其实背后的协议也都差不多。另外顺便八卦一句Chord的主要贡献者也就是现在大数据当红炸子鸡Spark的主要贡献者,的导师,如果我没记错的话。想来一个被迫要求实现过Chord的.

亚马逊的Dynamo本质上是实现了一个Distributed Hash Table。总体来说有那么几点是有创新的。其一是用了virtual node的概念,一台机器serve若干个virtual node,来避免可能的data skew。其二是引进了gossip协议来判断节点之间是不是还活着。最后,Dynamo实现了对eventual consistency和strong consistency的支持。其使用的方法比较有意思。基本上来说是要配置三个参数:全局有几个copy N,读成功必须要读多少个copy R,写成功需要写多少个copy W。如果R+W比N大的时候就是strong consistency,否则是eventual consistency。

这个东西的证明其实不难了,用的是我们小学数学竞赛的鸽洞原理。如果读和写的总次数大于N,那么读和写必然至少有一个copy是相同的。也就是读必然可以读到最新写的版本。

Dynamo出来的时候,做工很糙但是手快的活雷锋Facebook就开源了一个他们的copycat,名字叫做Cassandra。很不幸的是,一年以后Facebook决定放弃在自己的产品里使用Cassandra,跑去了用HBase。后来有八卦传出来说其实主要是Facebook比较粉Google,但是对亚马逊的架构没信心。因此他们就结束了对自己亲儿子的支持。HBase的发展当然是如火如荼了。Cassandra就没那么顺利了。但是最近Cassandra傍上了土豪Uber,Uber现在有全球最大的Cassandra的data center。

可能很多人会问,为什么会抛弃掉Cassandra,其实估计只有Facebook自己知道了。大凡数据处理,无非两个套路:sorting或者hashing。BigTable是个典型的sorting approach而Dynamo则是hashing。很遗憾的告诉大家我既没摸过HBase也没玩过Cassandra,所以我完全没概念到底实际上来说谁比谁更好。如果单纯从技术实现去分析,那么我想Hashing更适合point query而Sorting能同时支持range query。但是对资源的利用的灵活度来说,hashing对新资源的加入或者老资源的离开都应该会表现出比sorting更加高的适用效率和更容易负载平衡。至于保存一个东西的多个timestamp的版本,那可能还是sorted map更容易返回最后一个版本,hashing-based就不是很好说了。

传闻当年写了Dynamo的人因为写了这篇paper被Jeff Bezos骂泄露公司机密,传闻虽然不可信,我还真的去搜了一下那些作者们,果然各奔东西了,有在亚马逊的老司机,有去非死不可和其他地方混的。也许是正常人员流动。我原本以为写了Dynamo以后应该会有几个principal,但是据说亚马逊的principal非常难,有一个老兄就先去了一个其他公司混了一年,再回亚马逊终于principal了。我在想我是不是应该离开Tableau一年再回来,这样我就可以名正言顺的长一级了。

原文发布于微信公众号 - 飞总聊IT(feiitworld)

原文发表时间:2016-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

如何用 Python 爬取自己的微信朋友

微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

2859
来自专栏程序人生

黑客马拉松

软件开发听上去高大上,但实际很简单,全部活动可以分为两类:造轮子,搭积木。这和建筑行业很相似 —— 甚至相似到软件业懒得自己编词,借用建筑业的architect...

3275
来自专栏hbbliyong

每个人都应该看的--怎样管理您的知识

知识管理方法论解决的是效率和效果的问题,其实没有方法论的时候,足够的专注和努力也是可以的,许三多就是这方面的典型代表,他几乎没有什么技巧性的方法,完全是靠执着...

29811
来自专栏腾讯社交用户体验设计

欢迎来到后 ASO 时代

1453
来自专栏企鹅号快讯

Python语言的2017年终总结

在1989年12月,我在寻找一门课余编程项目来打发圣诞节假期。办公室会关门,但我有一台家用电脑,而且没有太多其它东西。我决定为当时我正构思的一个新的脚本语言写一...

25110
来自专栏web前端教室

刚进公司,接手了一个烂项目,要不要继续?

如题,刚进公司,说是做新项目,刚开始有一些眉目。结果领导不知从哪接了个活儿过来,代码各种烂,重复代码一堆,一个大函数1000多行。说是临时抽你过来顶上去做,做一...

3048
来自专栏企鹅号快讯

用python爬取自己的朋友圈,得到的信息超过你的想象!

微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

57310
来自专栏程序员笔记

如何做好一个计划

1142
来自专栏钱塘大数据

【上帝视角看微信】用 Python 爬取自己的微信朋友

微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

35210
来自专栏架构师之旅

系统设计黄金法则:简单之美

最近多次看到系统设计与实现的文章与讨论,再加上以前读过的其他资料以及自己的一些实践教训,让我觉得应该把这些资料汇总整理一下。如果要从讨论不同系统的众多资料中总结...

2216

扫码关注云+社区

领取腾讯云代金券