Twitter的支撑架构:扩展网络与存储并提供服务——架构原则:一次性将事情做对,NFL原则 LSM+B+存储替代cassandra

简介:

Twitter工程团队近期提供了Twitter核心技术的演进和扩展的详细资料,这些核心技术支撑了Twitter自营数据中心的系统架构,用于提供社会媒体服务。他们分享的关键经验包括:超越原始规格和需求进行系统架构,并在流量趋向设计容量上限时迅速做出大刀阔斧的改进;不存在所谓的“临时更改或变通方案”,因为变通方案会成为技术债务;聚焦于为任务提供适合的工具,但这意味合理领会所有可能的用例;对内部的和社区最佳实践的文档工作已成为一种“力量倍增器”。

根据近期Twitter工程博客上的一篇博文,Twitter作为社会网络和在线新闻服务创建于2006年,在那个时期,“统治数据中心”的是企业级实体厂商所提供的硬件。在Twitter运行的头十年中,快速增长的用户群已对硬件层提出了很多工程上的挑战。虽然Twitter在公共云上“运行良好”,但是他们已经开始重点投资自身的私营架构。至2010年,Twitter已从第三方的主机托管服务迁移到自身私营的数据中心架构,该数据中心架构在随后六年中“持续地设计和更新……有效地利用了技术和硬件的最新开放标准”。

至2010底,Twitter最终完成了首个内部网络架构,从设计上解决了在第三方主机托管架构中所遇到的扩展性和服务问题。最初,深度缓冲(Deep Buffer)机柜顶部(ToR,Top of Rack)交换机和电信级核心网络交换机的使用,使Twitter支持了2014年世界杯这样的全球事件所产生的前所未有的每秒交易(TPS,Transaction Per Second)量。在随后数年中,Twitter架构团队在五大洲部署了网络服务提供点 (PoPs,point-of-presence)。2015年,Twitter从传统的层次数据中心网络拓扑结构迁移到使用边界网关协议(BGP,Border Gateway Protocol)路由的Clos网络Clos方法的显著优点包括:更小的设备单点故障的“波及范围”、更好的水平带宽扩展能力,以及由更低的CPU开销导致的更高路由性能。

在Twitter网络架构扩展的过程中,Twitter的工程团队汲取到一些重要的经验教训:

  • 超越原始规格和需求进行系统架构,并在流量趋向设计容量上限时迅速做出大刀阔斧的改进。
  • 根据数据和指标做出正确的技术设计决策,并确保这些指标可被网络操作人员理解。这对于托管主机和云环境是尤为重要的。
  • 并不存在所谓的“临时更改或变通方案”的东西。在很多情况下,变通方案会成为技术债务。

在Twitter架构中,45%的规模用于存储和消息。架构团队为内部用户提供了多种服务,包括:Hadoop集群、Twitter的Manhattan (Apache Cassandra-esque)分布式数据库集群、FlockDB图存储集群(使用了Gizzard和共享MySQL)、Blobstore集群、Twemcache及“Nighthawk”共享Redis缓存集群、DistributedLog消息集群(用于Heron的处理)以及关系存储(MySQL、PostgreSQL和Vertica)。在2010年曾使用Cassandra作为度量数据存储的解决方案,但是在2015年4月启用Manhattan后,就禁用了Cassandra。

几乎全部的Twitter主缓存已从“裸机”迁移到大规模部署开源集群管理系统Apache Mesos上(Twitter也是Mesos代码库的主要贡献者之一)。推文的时间线缓存Haplo是尚未部署到Mesos的最重要组件。Haplo使用定制版的Redis实现。对于该缓存,最严峻的挑战在于可扩展性和性能,因为Twitter运行上百个集群,合计包速率可达3.2亿包/每秒,每秒为客户提供120GB的内容。为达到高吞吐量和低延迟的服务水平目标(SLO,Service Level Objective),工程师要持续测量系统的性能,寻找优化效率的方法。例如,Twitter工程师创建了一个测试缓存性能的开源工具rpc-perf,使用它可以更好地了解各种负载场景下缓存系统的运行情况。

存储和缓存实现中的主要经验教训包括:

  • 为更好地处理特定的流量模式,Twitter的Manhattan分布式数据库中采用了额外的存储引擎(LSM,B+树等)。通过发送背压信号并允许查询过滤,防止了对存储层的滥用。
  • 聚焦于为任务提供适合的工具,这意味合理领会所有可能的用例。“适合各种场景”的解决方案是很少起作用的。对个别极端案例的处理采用临时解决方案即可,无需过多考虑如何能省时省力。
  • 迁移到Mesos对于Twitter是一个“巨大的运营成就”,这允许了对架构配置的编纂整理,并使得规划部署成为可能。规划部署用于维持缓存命中率,并避免导致持久化存储层故障的问题。
  • 根据用户、推文、时间线等对缓存做逻辑分区,通常每个缓存集群都根据特定的用途做了优化。

Twitter使用Puppet实现所有的系统配置管理和kickstart后的软件包安装,Puppet的代码有500多个模块,1000多个角色,每个月都有100多位提交者。Puppet有三个被其称为环境的分支,分别允许实现受控测试、金丝雀测试(Canarying)以及最终推动变更到生产环节。对于不断增长中的Pupper代码库,到目前为止影响最大的更改是代码查错(Code Linting)、代码模式检查钩(Style Check Hook)、最佳实践的文档化以及正常办公时间保持:

  • 考虑到整个公司内有100多名Puppet提交者,对内部和社区最佳实践的文档工作已经成为“力量倍增器”。
  • 归一的参考文档改进了代码交付的质量和速度。
  • 当任务单和交流通道不足以满足交流的需要,或是不能表述要完成的工作整体情况时,需要保持正常的办公时间,这样员工可以提请援助(有时需要邀请),可进行一对一的交流。

更多扩展Twitter平台架构的相关信息,参见Twitter工程博客帖子“Twitter后台架构:扩展”。前期补充的博客帖子“Twitter后台架构:效率和优化”内容聚焦于Twitter私有平台即服务(PaaS)的演进。

 
















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6380621.html,如需转载请自行联系原作者



相关文章
|
9月前
|
人工智能 运维 安全
配置驱动的动态 Agent 架构网络:实现高效编排、动态更新与智能治理
本文所阐述的配置驱动智能 Agent 架构,其核心价值在于为 Agent 开发领域提供了一套通用的、可落地的标准化范式。
4775 115
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
241 1
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
9月前
|
人工智能 安全 数据可视化
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
本文系统性地提出并阐述了一种配置驱动的独立运行时Agent架构,旨在解决当前低代码/平台化Agent方案在企业级落地时面临困难,为Agent开发领域提供了一套通用的、可落地的标准化范式。
702 18
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
|
8月前
|
监控 区块链 数据中心
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
376 0
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
|
8月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
577 1
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
562 61
|
10月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
272 0
|
网络协议 区块链 KVM
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
426 2
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
|
12月前
|
存储 关系型数据库 MySQL
成本直降30%!RDS MySQL存储自动分层实战:OSS冷热分离架构设计指南
在日均订单量超500万的场景下,MySQL数据年增200%,但访问集中在近7天(85%)。通过冷热数据分离,将历史数据迁移至OSS,实现存储成本下降48%,年省72万元。结合RDS、OSS与Redis构建分层架构,自动化管理数据生命周期,优化查询性能与资源利用率,支撑PB级数据扩展。
812 3

热门文章

最新文章