同程旅行对象存储实践:架构演进与未来展望

news/2025/2/23 3:48:56

在数字化转型的浪潮中,同程旅行作为旅游行业的佼佼者,面临着海量数据存储与管理的挑战。为了应对这一挑战,同程旅行研发中心架构师周祝群及其团队开展了一系列对象存储实践,旨在构建一个可扩展、高可用、高性能且低成本的存储解决方案。

背景介绍

同程旅行的业务涉及图片、视频、文件、容器仓库、CSS/JS等静态资源,以及网盘服务。数据量之大令人瞩目:图片超过20亿张,JS/CSS资源千万以上,视频存储达100+TB,容器仓库和静态资源各占200+TB和100+TB。为了有效管理这些数据,同程旅行早期采用了FastDFS、Redis和Hbase的存储方案。

系统设计与落地

为了满足业务需求,同程旅行设定了以下设计目标:

  1. 可扩展性:支持至少30亿+对象数,具备水平扩展能力。
  2. 高可用性:实现隔离、多租户、限流、灾备/双活等能力。
  3. 高性能:追求快速响应,作为分布式文件存储的底座。
  4. 低成本:以低于Ceph的成本支持所有业务。
  5. 接入简单:支持主流对象存储S3协议接入。
  6. 无缝升级:业务无感知的情况下,稳定、无缝迁移。

在选型过程中,团队对比了MinIO和SeaweedFS,最终选择基于SeaweedFS构建新的对象存储服务。新OSS服务的架构包括Proxy层、存储层和管控平台,实现了强大的可扩展性和高可用性。

基于S3的其它存储落地场景

同程旅行还探索了基于S3协议的其它存储落地场景,如ClickHouse和Prometheus,主要用于数据TTL(Time To Live)管理,进一步优化了数据存储效率。

未来展望

展望未来,同程旅行计划进一步拓展分布式文件存储的能力,以应对不断增长的数据存储需求。这将涉及更深入的技术探索和创新,旨在为用户提供更加高效、可靠的存储服务。

结语

同程旅行的对象存储实践,不仅展现了其在技术领域的深厚实力,也为整个行业提供了宝贵的经验和启示。随着技术的不断进步,我们可以期待同程旅行在存储领域带来更多创新和突破。


http://www.niftyadmin.cn/n/5862941.html

相关文章

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑫】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase12 作者:车端域控测试工程师 更新日期:2025年02月18日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-012测试用例 用例ID测试场景验证要点参考条款预期结果TC…

Linux、Docker、Redis常见面试题

1. Linux 什么是Linux? Linux是一种基于UNIX的操作系统,最初是由Linus Torvalds引入的。它基于Linux内核,可以运行在由Intel,MIPS,HP,IBM,SPARC和Motorola制造的不同硬件平台上。Linux中另一个…

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度

前言 最近在做项目时遇到一个需求,需要将升级的文件压缩成zip,再进行传输; 通过网络调研,有许多方式可以实现,例如QT私有模块的ZipReader、QZipWriter;或者第三方库zlib或者libzip或者quazip等&#xff1…

【华为】报文统计的技术NetStream

什么是NetStream NetStream是一项基于“流”来提供报文统计的技术。它根据报文的目的IP地址、目的端口号、协议号、源IP地址等关键值来区分流信息,并针对流信息进行数据流统计,再将统计信息发送至服务器供分析。通过分析这些统计信息,网络管…

C++面试题,进程和线程方面(1)

文章目录 前言进程和线程有什么不同进程,线程的通讯方式什么是锁为什么说锁可以使线程安全加锁有什么副作用总结 前言 这是个人总结进程和线程方面的面试题。如果有错,欢迎佬们前来指导!!! 进程和线程有什么不同 进程…

【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model

下载PDF或阅读论文,请点击:LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 我们推出了TESS 2,这是一种通用的指令跟随扩散语言模型,其性能优于当代的指令调整扩散模型,有…

数据结构:动态数组vector

vector 是 C 标准库的动态数组。 在C语言中一般初学者会使用malloc,int[n]等方式来创建静态数组,但是这种方式繁琐且容易出错。我们做算法题一般使用动态数组vector, 并且在刷题网站的题目给的输入一般也是vector类型。 示例:vect…

【GPU驱动】OpenGLES图形管线渲染机制

OpenGLES图形管线渲染机制 OpenGL/ES 的渲染管线也是一个典型的图形流水线(Graphics Pipeline),包括多个阶段,每个阶段都负责对图形数据进行处理。管线的核心目标是将图形数据转换为最终的图像,这些图像可以显示在屏幕…