Instagram在如何越洋扩展基础设施?

译文
网络 通信技术
2015年,Instagram将基础设施从一个数据中心扩展到了三个,从三个数据中心扩展到五个很轻松;我们只是增加了复制因子,将数据复制到新的区域;然而当下一个数据中心远在另一个大陆时,扩展起来会更难。

【51CTO.com快译】2014年,Instagram加入Facebook两年后,Instagram的工程团队该将公司的基础设施从亚马逊网络服务(AWS)服务器迁移到了Facebook的数据中心。Facebook在欧美有多个数据中心,但直到最近Instagram才使用美国的数据中心。

[[247768]]

Instagram想把基础设施扩展到大洋彼岸的主要原因是,我们在美国已没场地可用。随着服务不断增多,Instagram已到了我们需要考虑利用Facebook建在欧洲的数据中心的地步。另一个好处是:本地数据中心意味着对欧洲用户来说延迟更低,这有望在Instagram上打造更好的用户体验。

2015年,Instagram将基础设施从一个数据中心扩展到了三个,以提供急需的弹性:我们的工程团队不想重蹈2012年AWS灾难的覆辙,当时弗吉尼亚州的一场大风暴导致其近一半的实例瘫痪。从三个数据中心扩展到五个很轻松;我们只是增加了复制因子,将数据复制到新的区域;然而当下一个数据中心远在另一个大陆时,扩展起来会更难。

了解基础设施

基础设施通常可分为两种类型:

  • 无状态服务通常用作计算,根据用户流量进行扩展(按需扩展)。Django Web服务器就是个例子。
  • 有状态服务通常用作存储,必须在数据中心之间保持一致性。比如包括Cassandra和TAO。

每个人都喜欢无状态服务,它们易于部署和扩展,可以随时随地根据需要来启动。事实上,我们还需要像Cassandra这样的有状态服务来存储用户数据。运行带有太多副本的Cassandra不仅增加了维护数据库的复杂性,还浪费了容量,更不用说越洋传输仲裁(quorum)请求有多慢了。

Instagram还使用TAO(面向社交图的分布式数据存储)作为数据存储系统。我们将TAO作为每个分片(shard)的单个主系统(master)来运行,没有任何从属系统(slave)为任何写入请求更新分片。它将所有写入内容转发到分片的主区域。由于所有写入都在位于美国的主区域进行,所以欧洲那边的写入延迟无法忍受。你可能注意到我们的问题反馈基本上是光速。

潜在解决方案

我们能否缩短请求越洋传输的时间(甚至使往返传输消失)?有两种方法可以解决这个问题。

1. 对Cassandra分区

为了防止仲裁请求越洋传输,我们在考虑将数据集分为两部分:Cassandra_EU和Cassandra_US。如果欧洲用户的数据存储在Cassandra_EU分区中,美国用户的数据存储在Cassandra_US分区中,用户的请求就不必远距离传输来获取数据。

比如说,假设美国有五个数据中心,欧盟有三个数据中心。如果我们通过复制当前集群而在欧洲部署Cassandra,复制因子将是8,仲裁请求必须与8个副本中的5个进行联系。

但是如果我们可以找到将数据分成两组的方法,就会有一个复制因子是5的Cassandra_US分区和一个复制因子是3的Cassandra_EU分区,每个分区可独立运行,而不影响其他分区。与此同时,每个分区的仲裁请求能够保持在同一个大陆,因而解决往返传输的延迟问题。

2. TAO仅限于写入到本地

为了缩短TAO写入的延迟,我们可以将所有EU写入限制于本地区域。这在最终用户看来几乎一样。我们向TAO发送写入时,TAO将在本地更新,不会阻止同步向主数据库发送写入;相反,它会在本地区域将写入放到队列中。在写入的本地区域,数据可立即从TAO获取,而在其他区域,数据将在从本地区域传播后可用。这类似今天的常规写入,数据从主区域传播。

虽然不同的服务可能会有不同的瓶颈,但如果致力于减少或消除越洋流量这个想法,我们能逐一解决问题。

经验教训

与每个基础设施项目一样,我们在此过程中汲取了一些重要的经验教训。以下是几个主要的。

  • 别急着搞新项目。开始在新数据中心配置服务器之前,确保你了解为什么需要在新区域部署服务、有什么样的依赖关系以及新区域投入使用时系统会如何运行。此外,别忘了反思灾难恢复计划,并进行必要的改动。
  • 别低估复杂性。总是在你的日程安排中留出足够的时间,因为要犯错误,要找出意外的阻碍因素,要学习你不了解的新的依赖关系。你可能发现自己无意中在重新设计构建基础设施的方式。
  • 明白取舍。成功总是要付出代价。我们对Cassandra数据库进行分区后,通过缩小复制因子,节省了大量存储空间。然而为了确保每个分区仍然准备好面对灾难,我们需要更多的前端Django容量,以接受来自故障区域的流量,因为现在分区无法彼此共享容量了。
  • 耐心一点。在开启欧洲数据中心的过程中,我不记得有多少次我们说过“哦,见鬼!”但事情总是最终得到了解决。可能比你预期的要更久,但要有耐心,整个团队要通力合作,这是超有意思的过程。

原文标题:How Instagram is scaling its infrastructure across the ocean,作者:Sherry Xiao

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:赵宁宁 来源: 51CTO.com
相关推荐

2010-10-19 14:55:55

惠普融合基础架构

2023-06-16 15:53:55

DevOps基础设施

2024-03-29 14:25:44

云计算人工智能

2020-04-28 10:21:58

基础设施硬件远程工作

2022-02-10 11:54:34

即时基础设施基础设施数字化转型

2015-05-27 09:03:46

IT基础设施IT基础设施监控

2020-05-28 10:34:43

超融合基础设施HCI服务器

2022-05-19 19:14:30

数据中心纵向扩展横向扩展

2009-12-18 17:14:25

惠普基础架构

2009-12-22 13:59:59

惠普基础设施运营

2015-03-18 14:30:09

2023-05-23 15:10:57

智慧城市IT物联网

2013-11-29 10:34:55

SDN网络基础设施

2019-09-27 15:48:32

网络5G无线基础设施

2013-11-28 09:24:57

SDN传统网络

2021-01-28 10:28:33

云计算基础设施自动化IT

2023-01-13 16:21:38

物联网

2023-07-17 18:43:26

测试基础设施开发

2015-09-08 10:30:48

单点故障风险评估虚拟化

2020-05-29 15:24:19

物联网5G技术
点赞
收藏

51CTO技术栈公众号