AdRoll 是重定向广告领域的全球领导者,在全球 100 余个国家/地区拥有超过 10000 个活跃广告商。该公司提供涵盖大量显示资源和工具的跨平台覆盖,能够根据访问者的浏览行为定制广告宣传活动。AdRoll 成立于 2007 年,总部位于美国加利福尼亚州的圣弗朗西斯科。该公司为多个品牌策划广告,其中包括 Salesforce、Tableau、Alex and Ani、Rickshaw Bags 和 Hipmunk。

广告重定向旨在将网站访问者转变为客户。重定向是带动全球在线企业营收的主要因素之一,而 AdRoll 是该行业的领导者之一,其在 2012 年的增长率达 15000%。但是,为了有效地服务于广告,AdRoll 需要能够灵活快速地增加容量,在极快的响应时间内实时中标,并通过自动化确保系统迅速响应竞价。

“除了高性能之外,我们还需要更多其他特性。”首席技术官 Valentino Volonghi 说道,“我们需要灵活性,需要可以跨多个数据中心和设备进行扩展的软件,而且还能顺应我们的发展而不断优化。将运营移至云端的确是我们唯一的选择。”

通过推出自己的实时竞价基础设施,AdRoll 需要为四个大区中的每个用户都同步数据,这大约涉及数亿用户以及每秒数万次写入。该公司不仅要应对实时写入海量数据这一艰巨任务,而且,竞价系统对于每个 Spot 请求有着 100 毫秒的严格上限,因此,AdRoll 需要强力确保读取方面的性能。

AdRoll 首先使用了 Amazon Simple Storage Service (Amazon S3)。部署并运行 AWS 环境花费了大约两周的时间,而现在,AdRoll 已在 Amazon S3 环境中存储了 1.5PB 的数据。不久,AdRoll 就发现 AWS 在存储以外的领域也有所助益,于是,公司开始将更多系统迁移至 AWS 云中。现在,AdRoll 网站的核心内容在 30 个 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行。另外,还有包括 Amazon EC2 Spot 实例在内的其他 200 到 1000 个实例,它们用来提供可变容量。“自动化是此项业务的关键。”Volonghi 说,“如果这些实例中有任何一个出现故障,它们都能够自行替换并继续运行,而无需任何人工干预。”

除了存储和计算解决方案,AdRoll 还需要高性能的数据库解决方案,以满足其 100 毫秒的延迟要求。在评估了多种替代方案后,该公司决定使用 DynamoDB 来实现低延迟,确保吞吐量以及快速扩展能力。

DynamoDB 是一项 NoSQL 数据库服务,能确保吞吐量,并使延迟低于 10 毫秒。作为一项完全托管的服务,DynamoDB 提供自动三向复制、无缝吞吐量和通过 API 进行存储扩展,以及简单易用的管理控制台。

DynamoDB 表由主键(哈希,或哈希和范围)和属性组成。无模式设计意味着每个数据项目都可能具有数量不同的属性。多种数据类型(字符串、数字、二进制数据和集合)使数据模型更加丰富。

AdRoll 表设计为将 Cookie 用作哈希键,将配置文件 ID 用作范围键,而将时间戳用作属性。

哈希键 范围键 属性
Cookie(用户 ID) 配置文件 时间戳
"1234" "Segment1" "1378237387"
"1234" "Segment2" "1378237417"

AdRoll 对所有表都使用了哈希和范围主键。“哈希和范围键使我们能够使用单一的 BatchWriteItem API 来修改属于相同或不同哈希键的多个项目。”Volonghi 说,“我们还可以使用它们将读取操作的结果压缩为最小的有效负载,从而高效地查询数据。这既节省了存储成本,又节省了吞吐量成本。”

为了充分利用 DynamoDB,AdRoll 开发了自己的 DynamoDB 客户端。“我们有上百台机器在使用客户端快速查询 DynamoDB,整个 Erlang 基础设施都保持了一致的低延迟。”Volonghi 说,“我们只需直接写入,衡量写入吞吐量和读取吞吐量,不必深入研究细节就能获益匪浅。” AdRoll 团队建议同时针对高低级别的写入吞吐量设置警报,以了解什么时候容量不足,或者什么时候系统出现停机。

通过将 Amazon DynamoDB 与 Apache Storm 配合使用,AdRoll 只需不到 50 毫秒,即可在保持低成本的同时,复制其遍布世界各地的数据集,同时对竞价和对客户发布广告提供快速的响应时间。

AWS 提供的可扩展性同样使 AdRoll 获益匪浅。“AWS 使我们能够处理来自 Facebook、Google、Yahoo 和其他高访问量网站的流量,借此,我们可支持的日展示次数超过了 500 亿。”Volonghi 说,“它还相当经济高效 – 我们投入在 Amazon DynamoDB 上的开支还比不上我们的茶点费。”

使用 AWS 使 AdRoll 可以轻松揽收新客户。每当有新客户加入,AdRoll 的机器就需要立即处理所有额外的流量。通常,在传统的本地部署基础设施中,加入一个新客户意味着要经历一套批准流程,添置新机器、将其加入 Hadoop 集群、购买更多存储空间等。整个过程最长需要花费 90 天。“使用 AWS 后,我们无需再担心这类问题了。”Volonghi 说,“如果我们的容量快要用完,只需自动扩展几个新实例就能解决问题。”

不论位于何处,该公司都可通过加入新的交换点快速开展业务。“AWS 的区域几乎涵盖了全世界所有的流量交换点,一旦新的交换点加入,我们便能立即充分利用它们。”Volonghi 说,“只需轻击开关,打开一个新的数据中心,我们的机器便可从中获得流量。随后,我们就能开始竞标。十分简单。”

Volonghi 认为 AWS 能够为 AdRoll 按需提供其开展业务所需要的可扩展性和容量。“我们当前的业务正在快速发展,使用 AWS 扩展和优化了我们的算法,从而不再需要额外的容量。AWS 为我们节省了时间和金钱。我们不需要部署更大的数据中心,不需要投入更多的运营人员,也不需要只为了扩展而购买更多的机器。”

要详细了解 DynamoDB,请访问我们的 Amazon DynamoDB 详细信息页面:http://aws.amazon.com/dynamodb/