速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Instagram 如何跨大洋拆分有状态服务

  • 2018-12-01
  • 本文字数:1321 字

    阅读完需:约 4 分钟

Instagram如何跨大洋拆分有状态服务

在最近举行的 Large Installation System Administration(LISA)2018 大会上,Instagram 产品工程师 Sherry Xiao 解释了他们的团队如何将 Instagram 服务分散在美国和欧洲的数据中心。他们使用了 Facebook 工程团队的工具,在有状态服务(Cassandra 和 TAO)中解决了数据本地性(locality)问题。


Facebook 在 2012 年收购了 Instagram,后者迁移到了 Facebook 的基础设施上。Instagram 的基础设施只部署在美国,而 Facebook 的数据中心位于美国和欧洲。Instagram 的技术栈主要包括 Django、Cassandra、TAO 分布式数据存储、Memcached 和 Celery 异步作业。他们不得不在美国和欧盟数据中心之间拆分服务,以解决数据存储空间限制问题。Cassandra quorum 调用的高延迟,为数据本地性划分数据集,在欧盟区域内进行故障转移以及为 TAO 进行主副本同步,这些都是团队在进行服务拆分时必须克服的挑战。



图片来源——https://www.youtube.com/watch?v=2GInt9E3vrU


Instagram 使用 Cassandra 作为通用的键值存储服务。他们将 Cassandra 与其他组件从 AWS 转移到 Facebook 自己的数据中心。Cassandra 在数据中心使用法定数量的副本来实现读写一致性。维护欧洲数据中心的数据副本会导致存储浪费,而 quorum 请求需要跨洋,延迟太高,不可取。Instagram 团队改为使用名为 Akkio 的工具对数据进行分区,这样美国用户的数据位于美国数据中心,欧盟用户的数据位于欧盟的三个数据中心。Akkio 是一款由 Facebook 开发的数据布局工具,可以对数据检索进行优化。它通过将数据分组为逻辑集来实现布局,然后将逻辑集存储在最靠近经常访问它们的最终用户的数据中心。Xiao 说,Akkio“跟踪最终用户的访问模式并触发数据迁移”。


这种架构消除了在每个数据中心存储所有数据副本的必要。美国和欧盟的数据中心可以独立运作,quorum 请求可以留在同一个大陆。Instagram 还使用 Social Hash 分区器将请求路由到正确的存储桶,尤其是对于拥有大量关注者的帐户。


Instagram 也使用了 Facebook 的 TAO 来存储社交图数据。在分片模式下,TAO 的每个分片都有一个主节点。写入操作只会被转发给运行在美国数据中心的主节点,副本是只读的。该团队修改了 TAO,让它可以将写入操作传给欧盟地区的本地主节点,避免跨洋调用。为什么不在这里使用 Akkio?Xiao 解释说,“与 Cassandra 相比,TAO 拥有不同的数据模型。大多数用例都是使用用户 ID 作为键,数据属于用户”。相比之下,TAO 处理的对象可以被全球各地的用户访问,因此 Akkio 无法实现最佳的数据本地性。


在最终的架构中,在前端有一个无状态的 Django 层,后面是分区的 Cassandra 和 TAO,数据被写入本地主节点。迁移需要改变灾难恢复(DR)计划,因为延迟以及不同的数据集会导致无法实现跨洋的灾难恢复。Xiao 说,每个地区都能够通过在每个数据中心保持 20%的空闲容量来处理来自故障数据中心的负载。


查看英文原文:https://www.infoq.com/news/2018/11/instagram-across-continents

相关推荐


12 月 7 日北京 ArchSummit 全球架构师峰会上,来自 Google、Netflix、BAT、滴滴、美团 等公司技术讲师齐聚一堂,共同分享“微服务、金融技术、前端黑科技、智能运维等相关经验与实践。详情点击 https://bj2018.archsummit.com/schedule


2018-12-01 13:572009
用户头像

发布了 731 篇内容, 共 451.6 次阅读, 收获喜欢 2002 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

软件测试/测试开发 | 一步一步学测试平台开发-Vue restful请求

测试人

软件测试 自动化测试 测试开发 测试平台

OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划

阿里巴巴中间件

阿里云 开源 云原生 OpenKruise

2022 IoTDB Summit:阿里白渐《迈向物联网时代大数据计算平台——MaxCompute 基于IoTDB构建解决方案》

Apache IoTDB

大数据 时序数据库 IoTDB

Apache IoTDB v0.13.4 发布|优化监控功能

Apache IoTDB

IoTDB

数据库革新拐点已来——MatrixOne Beta Program Recap

MatrixOrigin

云原生 分布式数据库 MatrixOrigin MatrixOne

下一站,冠军|走进2022 OceanBase数据库大赛12强

OceanBase 数据库

数据库 oceanbase

微服务引擎 MSE 企业版全新升级

阿里巴巴中间件

阿里云 微服务 云原生

使用metrics-server监控k8s的资源指标

tiandizhiguai

DevOps 微服务 云原生 k8s

重磅通知!OpenAI又放大招:官宣开放API接口-3.5版本 需求大涨,机遇与挑战并存,谁能拔得头筹?

加入高科技仿生人

人工智能 开源 openai ChatGPT

新思科技为三星SDS公司开源使用和风险管理提供自动治理解决方案

InfoQ_434670063458

开源 软件开发 新思科技 软件安全

隐私计算技术路线介绍及对比

隐语SecretFlow

隐私计算

基于Python+UIautomation的WindowsGUI自动化测试实战(二)-计算器

Python 自动化测试 GUI UIaotumation

首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估

阿里巴巴中间件

阿里云 容器 云原生

what量化合约系统开发&源码丨clear合约量化系统开发技术(Demo案例)

I8O28578624

ChatGPT潜能很大,问题也是

引迈信息

人工智能 低代码开发 应用开发 ChatGPT JNPF

软件测试/测试开发 | 测试平台开发-前端开发之Vue.js 框架的使用

测试人

新思科技发布《2023年开源安全和风险分析》报告

InfoQ_434670063458

开源 新思科技 软件安全

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

自动化测试 GUI UIaotumation

ICLR 2023 | 网易伏羲3篇论文入选,含强化学习、自然语言处理等领域

网易伏羲

小程序容器作为软件中间件技术不可忽视的价值

FinFish

小程序容器 小程序技术 软件中间件

Soul 云原生网关最佳实践

阿里巴巴中间件

阿里云 云原生 实践 云原生网关

Tuxera NTFS2023版读写NTFS磁盘功能工具

茶色酒

Tuxera NTFS2023

【云图说】 | 第268期 初识开天企业工作台MSSE

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

ChatGPT辅助编程

鲸品堂

ChatGPT 企业号 3 月 PK 榜

开心档之Swift 访问控制访问控制

雪奈椰子

开心档

瓴羊Quick BI与Power BI之争:数据大屏优势明显

对不起该用户已成仙‖

为企业全方位解决进销存管理难题的ERP套件

力软低代码开发平台

引领云数仓创新浪潮 HashData闪耀PostgreSQL中国技术大会

酷克数据HashData

软件测试/测试开发 | 测试平台开发-前端开发之Vue router路由设计

测试人

软件测试 测试开发 测试平台

Apache IoTDB v1.0.1 发布|修复分区计算,优化集群启停流程

Apache IoTDB

IoTDB

Instagram如何跨大洋拆分有状态服务_架构_Hrishikesh Barua_InfoQ精选文章