第一部分:要点提炼
- 虽然我们的很多系统来自最新的计算机科学研究成果,但这常常还不能满足需要:我们的架构师和工程师不得不深入到学术研究尚未触及的领域展开研究。我们面对的问题很多在教科书上无法找到现存的解决方法,因而我们自己发明了新的解决办法。
- “面向服务的架构(service-orientedarchitecture,SOA)”是Amazon技术的基本构造方法。由于我们有一个深思熟虑和富有远见的工程师和架构师团队,这种方法在SOA成为业界的一个“热门词汇”之前就已在亚马逊得到广泛应用。我们的电子商务平台由数以百计的软件服务组成,它们协同工作,向外提供从商品推荐到订单配送到库存跟踪的各种功能。
- 对于任何一个需要增长至超大规模的系统来说,状态管理(Statemanagement)是核心。很多年前,亚马逊对系统的要求就达到了一个很高的水平,我们很多的系统问题已无法由现有的商业解决方案来解决:我们的关键数据服务器存储了数个PB的数据,每秒要处理数以百万个的请求。
- 为了实现超大规模的特性,这些系统在数据更新管理方面采用了一种创新的方式:数据的更新需要发送大量副本,通过放宽对数据更新的同步要求,这些系统能够满足最苛刻的性能和可用性要求。这些系统都是建立在“最终一致性”(eventualconsistency)概念的基础之上。亚马逊工程师在数据管理方面所取得的进展,成为AmazonWeb Services(AWS)所提供的云存储与数据管理服务的架构的基础。
第二部分:书信全文
随机树算法(Random forests)、贝叶斯估计方法(naïve Bayesianestimators)、RESTful services、Gossip
协议(Gossip protocols)、最终一致性(EventualConsistency)、数据分片(Data Sharding)、反熵
(Anti-Entropy)、拜占庭容错机制(Byzantine quorum)、抹除码(Erasure coding)、vector clock算法(vector clock)……走进亚马逊的某个会议室,您可能一瞬间会以为闯进了一个计算机科学讲座。
翻一翻目前有关软件架构的教科书,您会发现几乎没有什么架构模式未被亚马逊所应用。我们使用高性能交易系统、复杂渲染与对象缓存、工作流与队列系统、商业智能与数据分析、机器学习与模式识别、神经网络和概率决策,以及其他各种技术。虽然我们的很多系统来自最新的计算机科学研究成果,但这常常还不能满足需要:我们的架构师和工程师不得不深入到学术研究尚未触及的领域展开研究。我们面对的问题很多在教科书上无法找到现存的解决方法,因而我们自己发明了新的解决办法。
我们的技术几乎无一例外地都作为“服务(services)”来实现:应用程序的几个不同的业务逻辑将其运行的数据封装起来,向外提供硬件接口作为访问其功能的唯一方式。这种方法降低了“不良影响”,允许服务以自己的步伐进行演化而不会影响系统中的其他构件。“面向服务的架构(service-oriented architecture,SOA)”是Amazon技术的基本构造方法。由于我们有一个深思熟虑和富有远见的工程师和架构师团队,这种方法在SOA成为业界的一个“热门词汇”之前就已在亚马逊得到广泛应用。我们的电子商务平台由数以百计的软件服务组成,它们协同工作,向外提供从商品推荐到订单配送到库存跟踪的各种功能。例如,为了展示给访问亚马逊的客户一个内容详细的产品页面,我们的软件需要调用200-300个服务,以实现现高度个性化的用户体验。
对于任何一个需要增长至超大规模的系统来说,状态管理(State management)是核心。很多年前,亚马逊对系统的要求就达到了一个很高的水平,我们很多的系统问题已无法由现有的商业解决方案来解决:我们的关键数据服务器存储了数个PB的数据,每秒要处理数以百万个的请求。为了满足这些苛刻的和不同寻常的请求,我们开发了若干个可供选择、专用的持久化解决方案,包括我们自己的key-value存储系统和单表存储系统。为了实现这一目标,我们从分布式系统和数据库研究领域认真学习了很多核心原理,并在此基础上有所创新。我们所开发的这种存储系统显示了极高的可扩展性,同时保持了很高的性能和可用性,以及对成本等方面进行严格控制。
为了实现超大规模的特性,这些系统在数据更新管理方面采用了一种创新的方式:数据的更新需要发送大量副本,通过放宽对数据更新的同步要求,这些系统能够满足最苛刻的性能和可用性要求。这些系统都是建立在“最终一致性”(eventual consistency)概念的基础之上。亚马逊工程师在数据管理方面所取得的进展,成为Amazon Web Services(AWS)所提供的云存储与数据管理服务的架构的基础。例如,我们的简单存储服务(S3)、弹性数据块存储(ElasticBlock Store)和在线数据库服务(SimpleDB)的基本架构,都源自亚马逊独有技术。
亚马逊其他业务领域同样面临着复杂的数据处理与决策方面的问题,例如商品数据录入、分类、需求预测、库存分配、以及欺诈检测等。根据规则建立的系统在应用上很方便,但难以维护,而且随着使用时间的增加会变得脆弱。在很多情况下,先进的机器学习技术提供了更准确的分类,并且能够通过自我修复来适应环境的变化。例如,我们的搜索引擎采用了数据挖掘技术(Data Mining)和机器学习算法(machine learningalgorithms),这些算法在后台运行以建立主题模型,然后我们应用信息提取算法从非结构化描述中识别属性、提取目标物,从而使客户缩小查询范围并快速找到所需的商品。我们考虑了大量的搜索相关性方面的因素,以预测客户可能的兴趣,并优化搜索结果的排名。
商品的多样性要求我们采用现代回归技术(modernregression techniques)技术,例如决策树模型组合的随机森林算法(randomforests),以在排名时灵活合并数以千计的产品属性。所有这些后台软件最终带来的是快速准确的搜索结果,从而帮助客户找到所需的商品。如果我们仅仅让技术停留在某些研发部门,我们在技术上的所有投入都会变得毫无意义,但我们不会这么做。我们将技术应用到我们所有的团队、流程、决策,以及每项业务创新。它深深地渗透到我们所做的每件事中。
Whispersync技术是一个很好的例子。这款Kindle应用旨在确保不管用户身在何处、使用什么设备,都可以访问我们的网上图书馆,还可以在多款设备之间同步书签、笔记和标记。这项技术面临的挑战是其分布在世界100多个国家的数百万Kindle用户、数以亿万种图书、数以百计种的设备,而要使其成为现实,并在任何时候都能实现这些技术要求。Whispersync技术的核心是一个建立在“最终一致性”基础上的冗余数据库,以及被定义为“冲突消解”(conflict resolution)的应用,后者能应对长达数周或更长时间的设备分离。
当然,对于Kindle设备的用户,这些技术都是隐藏在背后的。所以当一个用户打开他的Kindle设备时,它总是保持同步并正好呈现用户想要的页面。这诠释了英国科幻作家阿瑟·克拉克(ArthurC. Clarke)的名言,“任何足够先进的科技,都和魔法难辨差异”。
如果一些正在努力阅读这封信的股东读到此处时感到昏昏欲睡,下面的事实可能使您的精神为之一振:我认为,我们并非无益地去追求这些技术,相反,它们将直接带来自由现金流。
我们生活在一个可用带宽、磁盘空间和处理器能力都获得非凡增长,而成本持续快速下降的时代。我们的团队拥有一些世界上经验最丰富的技术专家,帮助解决可能是当今最前沿的技术挑战。正如我之前多次提到的那样,我们坚定不移地认为:股东的长期利益与客户的利益是完全一致的。我们喜欢这样的工作方式。创新是我们的内在本质,技术则是我们用于持续改进和提高用户体验的基本工具。我们还有很多东西要学习,我期待并希望我们将继续拥有这样的学习乐趣。我为自己身为这个团队的一员而深感自豪。
依照惯例,随信附上亚马逊1997年致股东的信。我们秉持同样的经营之道,视每天为新的起点。
杰夫.贝索斯
亚马逊创始人、首席执行官