CAL(Central Application Logging)系统主要负责收集和处理 eBay 内部各个应用程序池的日志,日处理超过 3PB 的数据,供运维团队和开发团队日常监控使用 。
CAL 系统通 过 HTTP 接口接受应用产生的日志,将日志持久化到经 NFS 挂载 的网络存储上,用户(运维团队和开发团队)可以通过 CAL 系统方便地 查找、查看日志 。同时,日志也会被导入 Hadoop 进行进一步的分析形成报告 。该系统自 21 世纪初至今,已经有 10 多年 的历史了 。
CAL 从第一天起就运行在 Netapp 的商业存储 上 。随着业务的发展,业务产生的数据量急剧增加,单个存储集群已经无法承载 CAL 的流量和性能需求,存储团队和业务团队通过增加集群来解决性能问题 。一直到 2018 年 ,CAL 在每个数据中心已经需要 25 个 集群才能支撑起其性能需求 。
虽然统计上,CAL 只使用了 eBay 5% 的 NFS Filer 总容量,但实际上却消耗了 50% 的总性能 。性能和容量的巨大偏离,使得实际成本已经比该存储方案的 裸 $/GB 成本 高了一个数量级 。
高成本,叠加上由 eBay 业务驱动的每年 30% 自然增长,这套架构亟需重构优化 。
2014 年,eBay 存储团队开始在公司内将 Ceph 应用于生产环境 。第一阶段主要是 RBD 块设备服务 。
2017 年,Jewel 版本发布后,我们开始尝试提供 CephFS 分布式文件系统服务,多个天使应用从商业存储迁移到 CephFS 上,从中我们发现修复了 MDS 的多个 bug 并贡献回社区,也在社区首次完成了 MDS 的性能分析 。
2018 年,随着 MDS 多活功能的初步成熟,我们也和业务团队一起,开始了把 CAL 迁移到 CephFS 上的征程 。
2019 年初上线至今,Ceph 在大流量下稳定运行 。平均读写带宽同时超过了 3GB/S ,读写请求数合计超过 100K IOPS(每秒进行读写操作的次数), 文件系统元数据操作数超过 30K OP/S(每秒操作次数) 。
01 总体设计通过对 CAL 现有业务逻辑和历史性能数据的分析,我们明确了 设计目标 :
1)文件系统元数据路径,支持 100K OP/S,包括:create / getattr / lookup / readdir / unlink 等文件系统操作;并预留足够的升级空间满足业务发展 。
2)文件系统的数据路径,支持 150K IOPS(50% 读,50% 写),以及至少 6GB/S(50% 读,50% 写)的吞吐 。
3)单集群容量需求300TB 可用空间,满足性能需求的前提下尽可能降低存储成本 。
这个略显激进的设计目标,其实在很大程度上已经决定了我们的方案 。
- 基于我们之前针对 Ceph MDS 的性能研究,单 MDS 只能支持 2K ~ 4K OP/S, 要支持 100K OP/S, MDS 多活负载均衡集群 是唯一的路径 。至少需要 25 个 MDS Active-Active 组成集群 。同时,业务负载还要能相对均衡地分布到每个 MDS 上 。
- 150K IOPS 的读写性能, 如果单用机械硬盘 HDD ,需要至少 1500 块 盘,可用容量接近 3PB ,又回到了用尽性能而浪费容量的老路 。 如果全部用 SSD , 1PB 裸容量的 SSD 虽然能比商业存储省钱,但仍是一笔不小的数字 。针对日志数据有明显 冷热度 的特点,使用分层存储,把频繁访问的数据放在 SSD 上,相对冷的数据放在 HDD 上,才能达到最佳费效比 。
CAL 原先的目录层次如下图 1 所示,一共有 15 层,100 多万 个文件夹, 几乎违反了上面讨论的所有原则,目录过深且不均衡 。eBay 每个 pool 承担一个服务,每个服务的流量,服务器数量差异显著 。更糟糕的是整个目录树,在每个小时开始的时候,几乎完全重建(虚线部分),导致每小时开始时元数据操作风暴 。
文章插图
图 1(点击可查看大图)
针对这个问题,我们和 CAL 团队合作设计并实现了 一套新的目录层次 ,如图 2 所示:
推荐阅读
- 升了iOS14连奶茶都点不了?保姆级降级教程在这
- 淘宝店铺等级皇冠,钻级哪个等级更高 淘宝卖家的星级是皇冠是什么意思
- 茶饮品超级减肚法,茶走茶走的好处
- 淘宝联盟高级怎么刷 淘宝引流怎么做的
- 超级店长怎么用 超级店长的主要功能
- 碎银子在红茶里面啥等级?[红茶]
- 千牛怎么取消超级店长授权 淘宝超级店长怎么使用
- 描写雨的诗40首一年级?描写雨的诗40首三年级?
- 土豆|这4支国货才是黄皮离不开的口红,自然又高级, 素颜、化妆涂都好看
- 电脑盲目关闭系统升级,可能导致数据丢失,这样做才是最科学的