# 亚马逊建筑
> 原文: [http://highscalability.com/blog/2007/9/18/amazon-architecture.html](http://highscalability.com/blog/2007/9/18/amazon-architecture.html)
*这是基于乔亚希姆·罗德(Joachim Rohde)对亚马逊 CTO 采访的发现而提供的非常有用的亚马逊更新。 您将了解 Amazon 如何围绕服务组织团队,构建可扩展系统的 CAP 定理,他们如何部署软件等等。 还包括了“ ACM 队列”文章中的许多新功能。*
亚马逊从一个很小的在线书店发展成为地球上最大的商店之一。 他们做到了这一点,同时开创了对产品进行评分,评论和推荐的有趣新方法。 格雷格·林登(Greg Linden)在一系列博客文章中分享的是 Amazon 的出生困境
网站:http://amazon.com
## 信息来源
* [早期亚马逊作家,格雷格·林登](http://glinden.blogspot.com/2006/05/early-amazon-end.html)* [Linux 如何为 Amazon 节省了数百万美元](http://news.com.com/2100-1001-275155.html)* [专访 Werner Vogels](http://www.se-radio.net/index.php?post_id=157593) -亚马逊的 CTO* 异步体系结构-Chris Loosley 的 Werner Vogels 演讲的精彩[摘要](http://www.webperformancematters.com/journal/2007/8/21/asynchronous-architectures-4.html)* [向亚马逊技术平台学习](http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=388)-与 Werner Vogels 的对话* [Werner Vogels 的 Weblog](http://www.allthingsdistributed.com) -构建可扩展且强大的分布式系统
## 平台
* 的 Linux* 甲骨文* C ++* 佩尔* 石匠* 爪哇* 博斯* Servlets
## 统计资料
* 超过 5500 万活跃客户帐户。* 全球超过 100 万活跃零售合作伙伴。* 访问 100-150 之间的服务以构建页面。
## 架构
* 我们对可伸缩性的真正含义是什么? 如果我们在系统中增加资源时以与添加资源成比例的方式提高性能,则该服务被称为可伸缩的。 通常,提高性能意味着要服务更多的工作单元,但是也可以处理更大的工作单元,例如数据集增长时。
* 亚马逊所做的重大体系结构更改是从两层的整体架构转变为可服务于许多不同应用程序的完全分布式,去中心化的服务平台。* 作为一个与后端通信的应用程序启动。 用 C ++编写。* 它成长了。 多年来,亚马逊的扩展工作一直致力于使后端数据库进行扩展,以容纳更多物品,更多客户,更多订单并支持多个国际站点。 在 2001 年,很明显前端应用程序无法再扩展。 数据库被分成几个小部分,并围绕每个部分创建了一个服务接口,这是访问数据的唯一方法。* 数据库成为共享资源,这使得很难扩展整个业务。 前端和后端流程的发展受到限制,因为它们被许多不同的团队和流程共享。* 它们的体系结构是松散耦合的,并围绕服务构建。 面向服务的体系结构为他们提供了隔离,使他们可以快速,独立地构建许多软件组件。* 聚集了数百个服务和大量应用程序服务器,这些服务服务器汇总了来自服务的信息。 呈现 Amazon.com 网页的应用程序就是这样一种应用程序服务器。 服务 Web 服务接口的应用程序,客户服务应用程序和卖方接口也是如此。* 许多第三方技术很难扩展到亚马逊的规模。 特别是通讯基础设施技术。 它们会在一定规模下正常工作,然后失败。 因此,他们被迫建立自己的。* 不拘泥于一种特定的方法。 在某些地方,他们使用 jboss / java,但仅使用 servlet,而不使用 J2EE 堆栈的其余部分。* C ++用于处理请求。 Perl / Mason 用于构建内容。* 亚马逊不喜欢中间件,因为中间件往往是框架而不是工具。 如果您使用中间件软件包,则会锁定他们选择的软件模式。 您将只能使用他们的软件。 因此,如果您想使用其他软件包,则将无法使用。 你被困住了。 一个事件循环,用于消息传递,数据持久性,
AJAX 等。太复杂了。 如果中间件可以在较小的组件中使用,而更多的是作为工具而不是框架使用,那么他们会更感兴趣。* SOAP Web 堆栈似乎想再次解决所有相同的分布式系统问题。* 同时提供 SOAP 和 REST Web 服务。 30%使用 SOAP。 这些通常是 Java 和.NET 用户,并使用 WSDL 文件生成远程对象接口。 70%的人使用 REST。 这些往往是 PHP 或 PERL 用户。* 在 SOAP 或 REST 中,开发人员都可以获取到 Amazon 的对象接口。 开发人员只想完成工作。 他们不在乎导线上的内容。* 亚马逊希望围绕他们的服务建立一个开放的社区。 选择 Web 服务是因为它很简单。 但是帽子只在外围。 在内部,它是一种面向服务的体系结构。 您只能通过界面访问数据。 WSDL 中对此进行了描述,但是它们使用了自己的封装和传输机制。* 团队很小,并且围绕服务
进行组织-服务是在 Amazon 内部提供功能的独立单位。 这也是亚马逊在团队内部进行组织的方式。
-如果您有一个新的业务构想或问题,您想组成一个团队来解决。 由于沟通困难,团队人数不得超过 8-10 人。 他们被称为两个披萨队。 您可以养活两个比萨饼的人数。
-团队很小。 他们被授予权限并有权以他们认为合适的方式解决问题,即服务。
-例如,他们创建了一个小组,以在书中查找文本唯一的短语。 该团队为此功能构建了一个单独的服务接口,他们有权执行所需的操作。
-广泛的 A / B 测试用于集成新服务。 他们看到了影响并进行了广泛的测量。* 部署
-他们创建用于管理依赖关系和进行部署的特殊基础结构。
-目标是将所有合适的服务部署在一个盒子上。 所有应用程序代码,监视,许可等都应放在包装盒中。
-每个人都有一个解决这些问题的本地系统。
-部署过程的输出是虚拟机。 您可以使用 EC2 来运行它们。* 从客户后方进行工作以验证是否值得进行一项新服务
-从客户后方进行工作。 专注于您想要为客户交付
的价值。
-迫使开发人员专注于交付给客户的价值,而不是先构建技术然后再去思考如何使用它。
-从新闻稿开始,介绍用户将看到的功能并向后工作以检查您是否正在构建有价值的东西。
-最终以尽可能最小的设计完成。 如果您确实要构建大型分布式系统,那么简单是关键。* 状态管理是大规模系统
的核心问题-内部,它们可以提供无限的存储空间。
-并不是所有的操作都是有状态的。 结帐步骤是有状态的。
-最近点击的网页服务具有基于会话 ID 的建议。
-无论如何,他们都会跟踪所有事情,因此保持状态无关紧要。 会话几乎不需要保留单独的状态。 服务将已经保留了信息,因此您只需要使用服务即可。* Eric Brewer 的 CAP 定理或系统的三个属性
-系统的三个属性:一致性,可用性,对网络分区的容忍度。
-对于任何共享数据系统,这三个属性中最多可以有两个。
-可分区性:将节点分为几个小组,可以看到其他小组,但看不到所有人。
-一致性:写入一个值,然后读取该值,您将获得相同的值。 在分区系统中,存在不正确的窗口。
-可用性:可能并不总是能够写入或读取。 系统会说您不能写,因为它想保持系统的一致性。
-要扩展,您必须进行分区,因此您只能为特定系统选择高一致性或高可用性。 您必须找到可用性和一致性的正确重叠。
-根据服务需求选择特定的方法。
-对于结帐流程,您始终希望兑现将商品添加到购物车的请求,因为它可以产生收益。 在这种情况下,您选择高可用性。 对客户隐藏错误,并在以后进行分类。
-当客户提交订单时,您希望保持一致性,因为多项服务(信用卡处理,运输和处理,报告)正在同时访问数据。
## 得到教训
* 您必须改变思路,才能构建真正可扩展的系统。 以概率的方式处理混乱,事情会顺利进行。 在传统系统中,我们提供了一个完美的世界,在这个完美的世界上一切都没有失败,然后我们在这个完美的世界上构建了复杂的算法(协议技术)。 相反,将其视为理所当然的东西会失败,这是
现实,请接受它。 例如,使用快速重启和快速恢复方法进行更多操作。 随着数据和服务的良好传播,您可能会接近 100%。 创建自我修复,自我组织的熄灯操作。
* 创建一个没有共享的基础架构。 基础架构可以成为开发和部署的共享资源,其缺点与逻辑层和数据层中的共享资源相同。 它可能导致锁定和阻塞以及死锁。 面向服务的体系结构允许创建并行且隔离的开发流程,以扩展功能开发以适应您的增长。
* 使用 API打开系统,您将在应用程序周围创建一个生态系统。
* 管理大型分布式系统的唯一方法是使事情尽可能简单。 通过确保设计中没有隐藏的需求和隐藏的依赖关系,使事情变得简单。 将技术减少到解决您所遇到的问题所需的最低限度。 这无助于公司创建人为的和不必要的复杂性层。
* 围绕服务进行组织可提供敏捷性。 您可以并行执行的操作是因为输出是服务。 这样可以加快上市时间。 创建一个基础结构,以允许快速构建服务。
* 在实际实现之前,任何会引起炒作的问题都存在问题
* 在内部使用 SLA 来管理服务。
* 任何人都可以非常快速地将 Web 服务添加到其产品中。 只需将产品的一部分作为服务实施并开始使用即可。
* 出于性能,可靠性和成本控制的原因,构建自己的基础架构。 通过自己构建它,您不必说您倒闭,因为这是 X 公司的错。 您的软件可能不比其他软件更可靠,但是与第三者合作时,您可以更快地进行修复,调试和部署。
* 用度量和客观辩论将好与坏分开。 我去过前亚马逊的几场演讲,而这正是亚马逊给我的印象,与其他公司截然不同。 他们根深蒂固的道德操守是让真正的客户有选择的余地,看看哪个最有效,并根据这些测试做出决策。
[Avinash Kaushik](http://highscalability.com/blog-occam-s-razor-avinash-kaushik) 称这摆脱了 HiPPO(房间中收入最高的人)的影响。 这是通过 A / B 测试和 Web Analytics 等技术完成的。 如果您对应该如何编写代码有疑问,请让人们使用它,然后看看哪种选择可以为您提供所需的结果。
* 营造节俭文化。 例如,亚马逊使用书桌门。
* 知道你需要什么。 亚马逊在一个早期的推荐系统上经历了糟糕的经历,但并没有奏效:“这不是亚马逊所需要的。在亚马逊上进行书推荐需要使用稀疏数据,只需进行几次评级或购买即可。它必须要快。 该系统需要扩展到大量的客户和庞大的目录,还需要增强发现能力,使目录中深处的书籍无法被读者自己找到。”
* 人们感兴趣的旁人项目通常是您获得最大价值和创新的项目。 永远不要低估您最感兴趣的地方徘徊的力量。
* 让每个人都参与制作狗粮。 在圣诞节高峰期间,请进仓库并整理书籍。 那是团队合作。
* 创建一个登台站点,在发布到野外之前,您可以在其中进行全面的测试。
* 一个健壮的,集群的,复制的,分布式文件系统非常适合 Web 服务器使用的只读数据。
* 如果更新不起作用,有一种方法可以回滚。 如有必要,编写工具。
* 切换到基于深度服务的体系结构(http://webservices.sys-con.com/read/262024.htm)。
* 在面试中寻找三件事:热情,创造力,能力。 对 Amazon.com 成功的最大预测是热情。
* 雇用鲍勃。 知道他们的东西,拥有令人难以置信的调试技能和系统知识的人,最重要的是,他们拥有一头石头就能解决仅凭跳进就可以想象到的最严重的高压问题。* 创新只能来自底层。 那些最接近问题的人最有可能解决问题。 任何依赖创新的组织都必须拥抱混乱。 忠诚和服从不是您的工具。
* 创意必须无处不在。
* 每个人都必须能够进行实验,学习和迭代。 职位,服从和传统不应该拥有任何权力。 为了使创新蓬勃发展,必须衡量。
* 拥抱创新。 在整个公司的面前,杰夫·贝佐斯(Jeff Bezos)会将一双耐克旧鞋授予“勇于创新”的人,以表彰他们的创新精神。
* 不要为性能付出代价。 给予良好的待遇和高薪,但保持平稳。 以其他方式认可出色的工作。 绩效工资听起来不错,但是在大型组织中几乎不可能做到。 使用非金钱奖励,例如旧鞋子。 这是说谢谢的方式,有人在乎。
* 快速变大。 像巴恩斯(Barnes)和诺贝尔(Nobel)这样的大人物在你的尾巴上。 亚马逊甚至不是网络上的第一,第二,甚至第三本书店,但最终他们的愿景和驱动力胜出了。
* 在数据中心,只有 30%的员工时间花费在与价值创造相关的基础架构问题上,其余 70%专门用于应对硬件采购,软件管理,负载平衡,维护,可扩展性挑战以及 以此类推。
* 禁止客户端直接访问数据库。 这意味着您可以在不涉及客户的情况下扩大服务范围并提高可靠性。 这很像 Google 能够独立地在其堆栈中分发改进以使所有应用程序受益的能力。
* 创建一个统一的服务访问机制。 这使得服务易于聚合,分散请求路由,分布式请求跟踪以及其他高级基础结构技术。
* 通过 Web 服务接口向世界上任何开发人员免费提供 Amazon.com 也是一项重大成功,因为它推动了许多创新,他们无法想到或自己建立。
* 开发人员自己最清楚哪些工具使它们最高效,哪些工具最适合工作。
* 不要对工程师施加太多限制。 为某些事情提供激励,例如与监视系统和其他基础结构工具集成。 但对于其余部分,允许团队尽可能独立地运作。
* 开发人员就像艺术家。 只要有自由,他们就可以发挥出自己最好的作品,但是他们需要好的工具。 有许多具有自助性质的支持工具。 为服务开发周围的环境提供支持,而该环境永远不会妨碍开发本身。
* 您构建它,然后运行它。 这使开发人员可以接触到他们软件的日常操作。 它还使他们与客户进行日常联系。 客户反馈回路对于提高服务质量至关重要。
* 开发人员应每两年花一些时间在客户服务上。 他们实际上将收听客户服务电话,接听客户服务电子邮件,并真正了解他们作为技术人员所做的各种事情的影响。
* 使用“客户的声音”,这是客户关于您网站体验的某些特定部分的真实故事。 这可以帮助经理和工程师了解我们为实际人员构建这些技术的事实。 如果您做错了什么或对客户而言真正的痛点是什么,则客户服务统计数据可以作为早期指示。
* 像 Google 一样,Amazon 的基础设施具有巨大的竞争优势。 他们可以利用相对简单的原始服务来构建非常复杂的应用程序。 他们可以独立扩展业务规模,保持无与伦比的系统可用性,并快速引入新服务,而无需进行大量重新配置。
亚马逊的首席技术官沃纳·沃格斯(Werner Vogels)谈到了 SE-Radio 的技术细节。 您可以在[下找到播客,网址为 http://www.se-radio.net/index.php?post_id=157593](http://www.se-radio.net/index.php?post_id=157593)
有趣的一集。
那是一次很好的采访。 谢谢。 我将尽快添加新信息。
亚马逊使用 Perl 和 Mason。
请参阅: [http://www.masonhq.com/?MasonPoweredSites](http://www.masonhq.com/?MasonPoweredSites)
如我所见,他们减少了 c ++部分并转移到 j2ee?
除非您是经理,否则我不确定您怎么能弄错那个错误,但是即使那样,某些工程师还是会在星期日之前教您。
感谢您抓住这一点。 我听了几次,有时我只是写我听到的内容,而不是我的意思。
我实际上在以下位置给出了可扩展性的详细定义: [http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html“](<a rel=) >有关可扩展性的信息
我个人喜欢 [http://www.acmqueue.com/modules.php?name=内容& pa =显示页& pid = 388“](<a rel=) > ACM Queue 中的采访最适合 高层视野
-维尔纳
似乎他们使用 Java 来完成通常用 Perl 完成的工作。
>使用非货币奖励,例如旧鞋。 这是
>说谢谢的一种方式,有人在乎。
有一次我愚蠢到参加亚马逊全公司会议,而不是将其视为免费的入睡日,我看到贝索斯给了一个男人一双鞋子。
我当时想:“这个家伙造了宇宙飞船,他把臭旧的网球鞋给高成就者?他们不喜欢打他吗?自尊心在哪里?”
但是我想这就是为什么我是前亚马逊人的原因。 当我放弃他们时,薪水提高了 20%,而且没有传呼机职责。 见,杰夫。
这是我一段时间以来最愚蠢的读物之一。 一家聪明的公司为什么会花钱在员工的“奖励”上,这对除了您从中获得奖励的人以外的任何人都没有帮助? 当亚马逊表现出色时,他们就会获得真正的高成就,而且股价在 90 美元左右,我知道他们的感觉还不错。 我的猜测是他们想拥抱杰夫。
成就不佳的人很可能会对此表示不满,然后去其他地方,他们在亚马逊工作的事实很可能有助于这项工作,就像我确定的那样。 而且,看来您离开并没有对亚马逊造成太大的伤害:)
以前的 Nikies 面向成就卓越的人的事情听起来像是给 IBM 员工的(愚蠢的)文凭。如果您真的想感谢一个成就卓越的人,请给他们加薪或奖金,或者..不愿意参加巡航。 便秘的旧鞋子..多么可爱:))
>而且,看来您离开并未对亚马逊造成太大的伤害:)
哦,我敢肯定,没有我,amzn 很好。 但是亚马逊员工的半衰期约为 18 个月,所以认为在那工作很糟糕的不只是我。 想一想,如果不必每 18 个月更换一半的员工,amzn 的运营效率就会提高多少。 我确信这将对其股价产生影响。 :)
>如果公司
>表现不错,并且股票价格在 90 美元左右,亚马逊的真正成就就会得到回报,我知道他们对
>感觉很好。 我的猜测是他们想拥抱杰夫。
当然,现在股价飞涨,我为那里的人感到高兴,他们为此赚了很多钱。 但是 amzn 按照市场标准支付工资,并依靠股票来提高工资。 我对你的薪水赌博并不酷。
算上我过去几年的全部收入...如果我的所有 amzn 赠款都以每笔$ 90 支付,如果我呆在那里,我可能会多赚$ 15-25K。 但是,2.5 万美元的保费(或每年 625 万美元,因为需要花费 4 年的归属时间)并不足以让我进入亚马逊,考虑到要换取这笔保费,我需要工作 10- 每周多 30 小时。 我认为基于权益的补偿是针对傻瓜的。 用权益补偿来换取巨大的每周工作量需求是……更大的吸盘。
我目前的公司为我提供了真正的现金红利和额外的带薪休假,以使他们表现良好。 我要把它接在笨拙的旧鞋子上! 钱用来说话; 像 bulsh * t 这样的鞋子,是用来走路的。
作为对您的文章的深入研究的副作用,我将其翻译为德语: [http://habacht.blogspot.com/2007/10/amazon-architecture.html](http://habacht.blogspot.com/2007/10/amazon-architecture.html)
为什么? perl 是用于文本处理的常用工具:) java 不仅限于 perl
由于谦虚,我倾向于说 Java 并不适合所有传统的业务术语。 效率,投资回报。 我今天经营一家公司,并且相信我,从长远来看,Java 并不是设计大型&关键应用程序的最终选择。 只有伪专家和伪 IT 经理才将 Java 视为明天编程问题的第一个答案。 我建议您检查 J2EE 后面的语言/框架环境。 以 Perl 6 为例。 我在开玩笑 ? 并不是的。 我们的最后一个 Web 服务完全使用 Perl 和 Ruby 中的接口进行了完全设计。 开明的用户想知道它是否是 struts + hibernate + weblogic + oracle(可能带有 SAP R / 3 连接器)。 现在的现实已经大不相同:我们必须考虑纯粹的业务。 Java 的? 好的,我今天将检查 Sun 的博客。 我也爱 Java。
真的很有趣,喜欢阅读。 但是,我觉得如果您真的想感谢一个成就卓越的人,请给他们加薪或奖金! 那就是我最欣赏的,毕竟我们是为了钱而工作。
大部分内容非常有用(特别是我同意的部分;)
梅森对我来说是新的! 非常好的帖子。 [http://evandro.net/“](<a rel=) > Evandro [http://www.poker73.com/”](<a rel=) >坐下&转到
Very informative for the most part (specially the parts I agree with ;)
您能否解释一下“ DOM”的含义
那是一篇关于亚马逊建筑大师的好书。 在下周对亚马逊的采访中肯定会有所帮助。
亚马逊是一家伟大的公司。 真的启发了我。 [http://www.csscatwalk.com“](<a rel=) style =” color:#FFFFFF;“ > CSS 画廊
谢谢!
非常感谢您提供如此详细的信息。 它无疑帮助我了解了有关构建可扩展网站的更多事实。
That was a nice read about amazon architecutre. Would definitely help during the interview with amazon next week.
大多数情况下非常有用
- LiveJournal 体系结构
- mixi.jp 体系结构
- 友谊建筑
- FeedBurner 体系结构
- GoogleTalk 架构
- ThemBid 架构
- 使用 Amazon 服务以 100 美元的价格构建无限可扩展的基础架构
- TypePad 建筑
- 维基媒体架构
- Joost 网络架构
- 亚马逊建筑
- Fotolog 扩展成功的秘诀
- 普恩斯的教训-早期
- 论文:Wikipedia 的站点内部,配置,代码示例和管理问题
- 扩大早期创业规模
- Feedblendr 架构-使用 EC2 进行扩展
- Slashdot Architecture-互联网的老人如何学会扩展
- Flickr 架构
- Tailrank 架构-了解如何在整个徽标范围内跟踪模因
- Ruby on Rails 如何在 550k 网页浏览中幸存
- Mailinator 架构
- Rackspace 现在如何使用 MapReduce 和 Hadoop 查询 TB 的数据
- Yandex 架构
- YouTube 架构
- Skype 计划 PostgreSQL 扩展到 10 亿用户
- 易趣建筑
- FaceStat 的祸根与智慧赢得了胜利
- Flickr 的联合会:每天进行数十亿次查询
- EVE 在线架构
- Notify.me 体系结构-同步性
- Google 架构
- 第二人生架构-网格
- MySpace 体系结构
- 扩展 Digg 和其他 Web 应用程序
- Digg 建筑
- 在 Amazon EC2 中部署大规模基础架构的六个经验教训
- Wolfram | Alpha 建筑
- 为什么 Facebook,Digg 和 Twitter 很难扩展?
- 全球范围扩展的 10 个 eBay 秘密
- BuddyPoke 如何使用 Google App Engine 在 Facebook 上扩展
- 《 FarmVille》如何扩展以每月收获 7500 万玩家
- Twitter 计划分析 1000 亿条推文
- MySpace 如何与 100 万个并发用户一起测试其实时站点
- FarmVille 如何扩展-后续
- Justin.tv 的实时视频广播架构
- 策略:缓存 404 在服务器时间上节省了洋葱 66%
- Poppen.de 建筑
- MocoSpace Architecture-一个月有 30 亿个移动页面浏览量
- Sify.com 体系结构-每秒 3900 个请求的门户
- 每月将 Reddit 打造为 2.7 亿页面浏览量时汲取的 7 个教训
- Playfish 的社交游戏架构-每月有 5000 万用户并且不断增长
- 扩展 BBC iPlayer 的 6 种策略
- Facebook 的新实时消息系统:HBase 每月可存储 135 亿条消息
- Pinboard.in Architecture-付费玩以保持系统小巧
- BankSimple 迷你架构-使用下一代工具链
- Riak 的 Bitcask-用于快速键/值数据的日志结构哈希表
- Mollom 体系结构-每秒以 100 个请求杀死超过 3.73 亿个垃圾邮件
- Wordnik-MongoDB 和 Scala 上每天有 1000 万个 API 请求
- Node.js 成为堆栈的一部分了吗? SimpleGeo 说是的。
- 堆栈溢出体系结构更新-现在每月有 9500 万页面浏览量
- Medialets 体系结构-击败艰巨的移动设备数据
- Facebook 的新实时分析系统:HBase 每天处理 200 亿个事件
- Microsoft Stack 是否杀死了 MySpace?
- Viddler Architecture-每天嵌入 700 万个和 1500 Req / Sec 高峰
- Facebook:用于扩展数十亿条消息的示例规范架构
- Evernote Architecture-每天有 900 万用户和 1.5 亿个请求
- TripAdvisor 的短
- TripAdvisor 架构-4,000 万访客,200M 动态页面浏览,30TB 数据
- ATMCash 利用虚拟化实现安全性-不变性和还原
- Google+是使用您也可以使用的工具构建的:闭包,Java Servlet,JavaScript,BigTable,Colossus,快速周转
- 新的文物建筑-每天收集 20 亿多个指标
- Peecho Architecture-鞋带上的可扩展性
- 标记式架构-扩展到 1 亿用户,1000 台服务器和 50 亿个页面视图
- 论文:Akamai 网络-70 个国家/地区的 61,000 台服务器,1,000 个网络
- 策略:在 S3 或 GitHub 上运行可扩展,可用且廉价的静态站点
- Pud 是反堆栈-Windows,CFML,Dropbox,Xeround,JungleDisk,ELB
- 用于扩展 Turntable.fm 和 Labmeeting 的数百万用户的 17 种技术
- StackExchange 体系结构更新-平稳运行,Amazon 4x 更昂贵
- DataSift 体系结构:每秒进行 120,000 条推文的实时数据挖掘
- Instagram 架构:1400 万用户,1 TB 的照片,数百个实例,数十种技术
- PlentyOfFish 更新-每月 60 亿次浏览量和 320 亿张图片
- Etsy Saga:从筒仓到开心到一个月的浏览量达到数十亿
- 数据范围项目-6PB 存储,500GBytes / sec 顺序 IO,20M IOPS,130TFlops
- 99designs 的设计-数以千万计的综合浏览量
- Tumblr Architecture-150 亿页面浏览量一个月,比 Twitter 更难扩展
- Berkeley DB 体系结构-NoSQL 很酷之前的 NoSQL
- Pixable Architecture-每天对 2000 万张照片进行爬网,分析和排名
- LinkedIn:使用 Databus 创建低延迟更改数据捕获系统
- 在 30 分钟内进行 7 年的 YouTube 可扩展性课程
- YouPorn-每天定位 2 亿次观看
- Instagram 架构更新:Instagram 有何新功能?
- 搜索技术剖析:blekko 的 NoSQL 数据库
- Pinterest 体系结构更新-1800 万访问者,增长 10 倍,拥有 12 名员工,410 TB 数据
- 搜索技术剖析:使用组合器爬行
- iDoneThis-从头开始扩展基于电子邮件的应用程序
- StubHub 体系结构:全球最大的票务市场背后的惊人复杂性
- FictionPress:在网络上发布 600 万本小说
- Cinchcast 体系结构-每天产生 1,500 小时的音频
- 棱柱架构-使用社交网络上的机器学习来弄清您应该在网络上阅读的内容
- 棱镜更新:基于文档和用户的机器学习
- Zoosk-实时通信背后的工程
- WordPress.com 使用 NGINX 服务 70,000 req / sec 和超过 15 Gbit / sec 的流量
- 史诗般的 TripAdvisor 更新:为什么不在云上运行? 盛大的实验
- UltraDNS 如何处理数十万个区域和数千万条记录
- 更简单,更便宜,更快:Playtomic 从.NET 迁移到 Node 和 Heroku
- Spanner-关于程序员使用 NoSQL 规模的 SQL 语义构建应用程序
- BigData 使用 Erlang,C 和 Lisp 对抗移动数据海啸
- 分析数十亿笔信用卡交易并在云中提供低延迟的见解
- MongoDB 和 GridFS 用于内部和内部数据中心数据复制
- 每天处理 1 亿个像素-少量竞争会导致大规模问题
- DuckDuckGo 体系结构-每天进行 100 万次深度搜索并不断增长
- SongPop 在 GAE 上可扩展至 100 万活跃用户,表明 PaaS 未通过
- Iron.io 从 Ruby 迁移到 Go:减少了 28 台服务器并避免了巨大的 Clusterf ** ks
- 可汗学院支票簿每月在 GAE 上扩展至 600 万用户
- 在破坏之前先检查自己-鳄梨的建筑演进的 5 个早期阶段
- 缩放 Pinterest-两年内每月从 0 到十亿的页面浏览量
- Facebook 的网络秘密
- 神话:埃里克·布鲁尔(Eric Brewer)谈银行为什么不是碱-可用性就是收入
- 一千万个并发连接的秘密-内核是问题,而不是解决方案
- GOV.UK-不是你父亲的书库
- 缩放邮箱-在 6 周内从 0 到 100 万用户,每天 1 亿条消息
- 在 Yelp 上利用云计算-每月访问量为 1.02 亿,评论量为 3900 万
- 每台服务器将 PHP 扩展到 30,000 个并发用户的 5 条 Rockin'Tips
- Twitter 的架构用于在 5 秒内处理 1.5 亿活跃用户,300K QPS,22 MB / S Firehose 以及发送推文
- Salesforce Architecture-他们每天如何处理 13 亿笔交易
- 扩大流量的设计决策
- ESPN 的架构规模-每秒以 100,000 Duh Nuh Nuhs 运行
- 如何制作无限可扩展的关系数据库管理系统(RDBMS)
- Bazaarvoice 的架构每月发展到 500M 唯一用户
- HipChat 如何使用 ElasticSearch 和 Redis 存储和索引数十亿条消息
- NYTimes 架构:无头,无主控,无单点故障
- 接下来的大型声音如何使用 Hadoop 数据版本控制系统跟踪万亿首歌曲的播放,喜欢和更多内容
- Google 如何备份 Internet 和数十亿字节的其他数据
- 从 HackerEarth 用 Apache 扩展 Python 和 Django 的 13 个简单技巧
- AOL.com 体系结构如何发展到 99.999%的可用性,每天 800 万的访问者和每秒 200,000 个请求
- Facebook 以 190 亿美元的价格收购了 WhatsApp 体系结构
- 使用 AWS,Scala,Akka,Play,MongoDB 和 Elasticsearch 构建社交音乐服务
- 大,小,热还是冷-条带,Tapad,Etsy 和 Square 的健壮数据管道示例
- WhatsApp 如何每秒吸引近 5 亿用户,11,000 内核和 7,000 万条消息
- Disqus 如何以每秒 165K 的消息和小于 0.2 秒的延迟进行实时处理
- 关于 Disqus 的更新:它仍然是实时的,但是 Go 摧毁了 Python
- 关于 Wayback 机器如何在银河系中存储比明星更多的页面的简短说明
- 在 PagerDuty 迁移到 EC2 中的 XtraDB 群集
- 扩展世界杯-Gambify 如何与 2 人组成的团队一起运行大型移动投注应用程序
- 一点点:建立一个可处理每月 60 亿次点击的分布式系统的经验教训
- StackOverflow 更新:一个月有 5.6 亿次网页浏览,25 台服务器,而这一切都与性能有关
- Tumblr:哈希处理每秒 23,000 个博客请求的方式
- 使用 HAProxy,PHP,Redis 和 MySQL 处理 10 亿个请求的简便方法来构建成长型启动架构
- MixRadio 体系结构-兼顾各种服务
- Twitter 如何使用 Redis 进行扩展-105TB RAM,39MM QPS,10,000 多个实例
- 正确处理事情:通过即时重放查看集中式系统与分散式系统
- Instagram 提高了其应用程序的性能。 这是如何做。
- Clay.io 如何使用 AWS,Docker,HAProxy 和 Lots 建立其 10 倍架构
- 英雄联盟如何将聊天扩大到 7000 万玩家-需要很多小兵。
- Wix 的 Nifty Architecture 技巧-大规模构建发布平台
- Aeron:我们真的需要另一个消息传递系统吗?
- 机器:惠普基于忆阻器的新型数据中心规模计算机-一切仍在变化
- AWS 的惊人规模及其对云的未来意味着什么
- Vinted 体系结构:每天部署数百次,以保持繁忙的门户稳定
- 将 Kim Kardashian 扩展到 1 亿个页面
- HappyPancake:建立简单可扩展基金会的回顾
- 阿尔及利亚分布式搜索网络的体系结构
- AppLovin:通过每天处理 300 亿个请求向全球移动消费者进行营销
- Swiftype 如何以及为何从 EC2 迁移到真实硬件
- 我们如何扩展 VividCortex 的后端系统
- Appknox 架构-从 AWS 切换到 Google Cloud
- 阿尔及利亚通往全球 API 的愤怒之路
- 阿尔及利亚通往全球 API 步骤的愤怒之路第 2 部分
- 为社交产品设计后端
- 阿尔及利亚通往全球 API 第 3 部分的愤怒之路
- Google 如何创造只有他们才能创造的惊人的数据中心网络
- Autodesk 如何在 Mesos 上实施可扩展事件
- 构建全球分布式,关键任务应用程序:Trenches 部分的经验教训 1
- 构建全球分布式,关键任务应用程序:Trenches 第 2 部分的经验教训
- 需要物联网吗? 这是美国一家主要公用事业公司从 550 万米以上收集电力数据的方式
- Uber 如何扩展其实时市场平台
- 优步变得非常规:使用司机电话作为备份数据中心
- 在不到五分钟的时间里,Facebook 如何告诉您的朋友您在灾难中很安全
- Zappos 的网站与 Amazon 集成后冻结了两年
- 为在现代时代构建可扩展的有状态服务提供依据
- 细分:使用 Docker,ECS 和 Terraform 重建基础架构
- 十年 IT 失败的五个教训
- Shopify 如何扩展以处理来自 Kanye West 和 Superbowl 的 Flash 销售
- 整个 Netflix 堆栈的 360 度视图
- Wistia 如何每小时处理数百万个请求并处理丰富的视频分析
- Google 和 eBay 关于构建微服务生态系统的深刻教训
- 无服务器启动-服务器崩溃!
- 在 Amazon AWS 上扩展至 1100 万以上用户的入门指南
- 为 David Guetta 建立无限可扩展的在线录制活动
- Tinder:最大的推荐引擎之一如何决定您接下来会看到谁?
- 如何使用微服务建立财产管理系统集成
- Egnyte 体系结构:构建和扩展多 PB 分布式系统的经验教训
- Zapier 如何自动化数十亿个工作流自动化任务的旅程
- Jeff Dean 在 Google 进行大规模深度学习
- 如今 Etsy 的架构是什么样的?
- 我们如何在 Mail.Ru Cloud 中实现视频播放器
- Twitter 如何每秒处理 3,000 张图像
- 每天可处理数百万个请求的图像优化技术
- Facebook 如何向 80 万同时观看者直播
- Google 如何针对行星级基础设施进行行星级工程设计?
- 为 Mail.Ru Group 的电子邮件服务实施反垃圾邮件的猫捉老鼠的故事,以及 Tarantool 与此相关的内容
- The Dollar Shave Club Architecture Unilever 以 10 亿美元的价格被收购
- Uber 如何使用 Mesos 和 Cassandra 跨多个数据中心每秒管理一百万个写入
- 从将 Uber 扩展到 2000 名工程师,1000 个服务和 8000 个 Git 存储库获得的经验教训
- QuickBooks 平台
- 美国大选期间城市飞艇如何扩展到 25 亿个通知
- Probot 的体系结构-我的 Slack 和 Messenger Bot 用于回答问题
- AdStage 从 Heroku 迁移到 AWS
- 为何将 Morningstar 迁移到云端:降低 97%的成本
- ButterCMS 体系结构:关键任务 API 每月可处理数百万个请求
- Netflix:按下 Play 会发生什么?
- ipdata 如何以每月 150 美元的价格为来自 10 个无限扩展的全球端点的 2500 万个 API 调用提供服务
- 每天为 1000 亿个事件赋予意义-Teads 的 Analytics(分析)管道
- Auth0 体系结构:在多个云提供商和地区中运行
- 从裸机到 Kubernetes
- Egnyte Architecture:构建和扩展多 PB 内容平台的经验教训
- 缩放原理
- TripleLift 如何建立 Adtech 数据管道每天处理数十亿个事件
- Tinder:最大的推荐引擎之一如何决定您接下来会看到谁?
- 如何使用微服务建立财产管理系统集成
- Egnyte 体系结构:构建和扩展多 PB 分布式系统的经验教训
- Zapier 如何自动化数十亿个工作流自动化任务的旅程
- Jeff Dean 在 Google 进行大规模深度学习
- 如今 Etsy 的架构是什么样的?
- 我们如何在 Mail.Ru Cloud 中实现视频播放器
- Twitter 如何每秒处理 3,000 张图像
- 每天可处理数百万个请求的图像优化技术
- Facebook 如何向 80 万同时观看者直播
- Google 如何针对行星级基础设施进行行星级工程设计?
- 为 Mail.Ru Group 的电子邮件服务实施反垃圾邮件的猫捉老鼠的故事,以及 Tarantool 与此相关的内容
- The Dollar Shave Club Architecture Unilever 以 10 亿美元的价格被收购
- Uber 如何使用 Mesos 和 Cassandra 跨多个数据中心每秒管理一百万个写入
- 从将 Uber 扩展到 2000 名工程师,1000 个服务和 8000 个 Git 存储库获得的经验教训
- QuickBooks 平台
- 美国大选期间城市飞艇如何扩展到 25 亿条通知
- Probot 的体系结构-我的 Slack 和 Messenger Bot 用于回答问题
- AdStage 从 Heroku 迁移到 AWS
- 为何将 Morningstar 迁移到云端:降低 97%的成本
- ButterCMS 体系结构:关键任务 API 每月可处理数百万个请求
- Netflix:按下 Play 会发生什么?
- ipdata 如何以每月 150 美元的价格为来自 10 个无限扩展的全球端点的 2500 万个 API 调用提供服务
- 每天为 1000 亿个事件赋予意义-Teads 的 Analytics(分析)管道
- Auth0 体系结构:在多个云提供商和地区中运行
- 从裸机到 Kubernetes
- Egnyte Architecture:构建和扩展多 PB 内容平台的经验教训