企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Evernote Architecture-每天有 900 万用户和 1.5 亿个请求 > 原文: [http://highscalability.com/blog/2011/5/23/evernote-architecture-9-million-users-and-150-million-reques.html](http://highscalability.com/blog/2011/5/23/evernote-architecture-9-million-users-and-150-million-reques.html) ![](https://img.kancloud.cn/83/f1/83f1e36198053948cdd1ea6b9ba1b305_196x49.png) [Evernote](http://evernote.com/) 的人们很友好,可以在标题为 [Architectural Digest](http://blog.evernote.com/tech/2011/05/17/architectural-digest/#) 的帖子中写出他们的体系结构概述。 Dave Engberg 描述了他们的网络,分片,用户存储,搜索和其他自定义服务的方法。 Evernote 是一个很棒的应用程序,部分实现了 [Vannevar Bush](http://en.wikipedia.org/wiki/Vannevar_Bush) 对 [memex](http://en.wikipedia.org/wiki/Memex) 的惊人[视觉](http://commons.nwc.hccs.edu/dylla/2011/02/08/6/)。 维基百科简要地描述了 Evernote 的功能: > Evernote 是一套用于记录和存档的软件和服务。 “注释”可以是一段可格式化的文本,完整的网页或网页摘录,照片,语音备忘录或手写的“墨水”注释。 注释也可以具有文件附件。 然后可以将注释分类到文件夹中,进行标记,添加注释,进行编辑,给定注释并进行搜索。 Evernote 支持多种操作系统平台(包括 Android,Mac OS X,iOS,Microsoft Windows 和 WebOS),并且还提供在线同步和备份服务。 这里的关键是 Evernote 存储了大量数据,这些数据必须进行搜索,并通过它们的云同步到您使用的任何设备。 另一个关键是 Evernote 的业务模式和成本结构的影响。 Evernote 以其首席执行官的想法为基础,以[免费增值模式](http://www.fastcompany.com/magazine/147/next-tech-remember-the-money.html)的开创而著称:*获得 100 万人付款的最简单方法是让 10 亿人使用。* Evernote 旨在以 1%的转化率实现盈利。 免费的在线服务将用户限制为每月 60 MB,而高级用户每年需支付 45 美元才能使用 1000 MB /月。 为了盈利,他们大多数会存储大量数据而无需花费大量金钱。 没有太多的额外空间,这说明了其架构的简单实用性。 这篇文章简短明了,因此一定要详细阅读。 一些要点: * **控制成本**。 Evernote 在加利福尼亚州圣塔克拉拉的数据中心用完了一对专用机架。 使用云将无法以足够便宜的成本提供足够的处理能力和存储,从而无法使 Evernote 的业务模型正常工作。 由于他们的负载似乎并不尖锐,因此使用他们自己的 colo 站点非常有意义,尤其是考虑到他们如何利用 VM 来提高可靠性。 * **基于数据**的性质的体系结构。 用户注释彼此独立,这对于 Evernote 在 90 个分片中将其 950 万总用户分片非常实用。 每个分片都是一对两个四核 Intel SuperMicro 盒,它们具有大量 RAM 和采用镜像 RAID 配置的 Seagate Enterprise Drive *完整机箱。 所有存储和 API 处理均由分片处理。 他们发现使用直接连接的存储具有最佳的性价比。 使用具有相同冗余级别的远程存储层将花费更多的成本。 将驱动器添加到服务器并使用 DRDB 复制的开销和成本都很低。* * **应用冗余**。 每个盒子运行两个虚拟机。 主 VM 运行核心堆栈:Debian + Java 6 + Tomcat + Hibernate + Ehcache +条纹+ GWT + MySQL(用于元数据)+分层本地文件系统(用于文件数据)。 DRDB 用于将主 VM 复制到另一个设备上的辅助 VM。 心跳信号用于故障转移到辅助虚拟机,因为主要虚拟机已死。 一种聪明的方式来使用这些功能强大的机器,并使用更少的资源来构建可靠的系统。 * **数据可靠性**。 用户数据存储在两个不同物理服务器上的四个不同企业驱动器上。 每晚备份通过专用的 1Gbps 链路将数据复制到辅助数据中心。 * **快速请求路由**。 用户帐户信息(用户名,MD5 密码和用户分片 ID)存储在内存中的 MySQL 数据库中。 可靠性来自 RAID 镜像,到辅助磁盘的 DRBD 复制以及每夜备份。 这种方法使用户向其数据的路由成为一种简单而快速的内存中查找,同时仍然具有很高的可用性。 * 一个由 28 个 8 核服务器组成的单独池处理图像以进行搜索,手写识别和其他服务。 这是自定义软件,是功能强大的附加值,其他任何人都无法轻易复制。 * Puppet 用于配置管理。 * 使用 Zabbix,Opsview 和 AlertSite 进行监视。 未来的文章有望将重点放在单个子系统上。 我很期待这些,因为您必须欣赏他们为其业务模型创建的系统的优雅性。 一个值得学习的好例子。 ## 相关文章 [ * [与 Phil Libin 讨论 EverNote 的新 memex](http://blog.jonudell.net/2008/04/07/a-conversation-with-phil-libin-about-evernotes-new-memex/) ,作者:乔恩·乌德尔(Jon Udell) * [笔记软件](http://en.wikipedia.org/wiki/Comparison_of_notetaking_software)的比较 * [Evernote 宣布 Dan Dan 的“闪亮的新 Evernote 网站”](http://www.geardiary.com/2011/03/29/evernote-announces-shiny-new-evernote-web/) 嗨,托德-感谢您的客气话。 在阅读您的帖子时,我进行了一些小的更正: -我们的总注册用户略超过 950 万……100k 只是我们在每个分片上输入的数字。 (每月活跃用户超过 3M) -您错过了以我的名字写的'g'...这可能意味着您是体育迷,因为那个 Dick Enberg 家伙总是把它拼错。 :-) 无需发布此评论,我只是认为我会通过。 谢谢, 戴夫 感谢您所做的更正 Dave。 对那个家伙没有太大的爱,我只是很难打字:-) 感谢您的精彩文章! 只是一个澄清问题; 您写道:“数据可靠性。用户数据存储在两个不同物理服务器上的四个不同企业驱动器上”。 您是否在此表示它们将数据存储在具有两个驱动器的一个 VM 上,然后将数据复制到另一台物理计算机上的具有两个驱动器的另一 VM 上(如下面的“应用程序冗余”所述)?