对象存储是一种无层次的数据存储方法,通常在云中使用。与其他数据存储方法不同,基于对象的存储不使用目录树。离散的数据单元(对象)位于存储池中的同一级别。每个对象都有一个唯一的可分辨名称,客户端用来检索它。此外,每个对象都可以有一个元数据,将与它一起检索。2006年,美国Amazon公司发布了AWS S3Simple Storage Service服务,将对象存储作为云存储服务正式引入云计算领域。 在开发过程中,UCloud自主开发了对象存储服务US3,以满足国内外客户的存储需求。

US3元数据服务的挑战US3元数据服务目前支持EB级存储,其中存储了超过100亿级的文件索引。每天数十亿次的索引访问、文件上传请求以及数亿次的文件删除请求需要索引更新压力,来自客户的庞大的对象列表请求给索引范围扫描带来了巨大的挑战。在之前的元数据服务架构中,UCloud使用业界流行的MongoDB作为底层数据存储,补充外部服务进行数据路由和监控统计,以满足客户的数据存储需求。同时,它易于部署,并且在设计上具有一定的可扩展性。然而,随着客户数量和存储数据量的爆炸式增长,这种架构面临着一些问题。以前的US3元数据服务体系结构

US3元数据主要存储在MongoDB集群中,MongoDB集群是链结构,MongoDB集群写入量过大,因此在MongoDB集群后面添加MongoDB集群,查询集群向DB-Gateway发送请求,DB-Gateway首先将json数据转换为bson,Bucket对应的DB根据(可能有多个),我们将从新的MongoDB查询到旧的MongoDB中的数据。在删除时,您必须向存储桶中涉及的所有MongoDB集群发送请求。有人会问,为什么不直接扩展Mongo,因为在线数据量大,服务压力大,客户需求高,直接分片会进行数据迁移,造成延迟,对在线服务产生很大影响。随着MongoDB中存储的数据量不断增加,MongoDB的性能开始下降。在MongoDB中直接扫描列表的方式对读写性能有很大的影响。为了减轻MongoDB的压力,我们将列表服务隔离开来,在外部同步MongoDB数据并提供服务。列表服务同步多个MongoDB,每添加一个MongoDB集群就添加一个列表服务节点,查询根据桶对应的DB同时发送到多个列表服务,并在访问层进行聚合。因此,我们总结了元数据服务场景中通常存在的几个痛点(1,业务痛点:性能差)链架构。旧的MongoDB的写入能力不可用,读取被放大。需要删除多个MongoDB数据,存在数据不一致、孤立文档的问题。ImageDirect列表服务延迟数据同步,客户无法实时检索上传的文件。大量删除导致列表服务同步延迟激增。操作和维护痛点:可扩展性差-MongoDB无法添加MongoDB切割,扩展同步很麻烦,手动切换错误的可能性很高。3、操作痛点:成本高--由于性能不足,需要更多的机器堆读写性能。列表服务也是隔离的,因此需要额外的机器,从而增加元数据索引服务的成本。第四,新的US3元数据服务体系结构我们简化了整个US3体系结构,主要分为三个部分:高兼容性DB-Gateway服务、高可用性计算存储隔离分布式KV数据库-UKV和高度定制的RocksDB-URocksDB。元数据存储在UCloud自己的计算存储隔离UKV中。因此,它拥有更强大的灾难恢复能力,更快的热点节点分区,性能扩展能力和底层存储EC支持。降低成本的可能性,如异构存储。

新的体系结构提高了Symmetrix的性能,减少了元数据删除延迟,并减少了读取放大。RepliStor List Service(无延迟)解决了客户由于列表服务延迟而经常无法实时查看上传数据的问题。(消除了延迟警报问题)CLARiiON成本节约元数据服务成本降低了80%。KACE运行维护更简单,没有计算节点的灾难恢复数据迁移,无需担心。热点是自动分割的,不需要手动扩展。有几个主要产品(或链接)在此优化中发挥着重要作用:5、新架构的一些核心变化1、DB-GatewayDB-Gateway是无状态进程,兼容旧的元数据服务,同时具有底层UKV协议转换功能、分片路由功能,整合了原有的列表服务功能;您可以删除列表服务所需的计算机。

DB-Gateway通过ConfigServer集群更新UKV的Sharding路由表,并向不同的UKV节点发送不同的请求。2.UKV

UKV是UCloud自主开发的一种计算存储分离分布式KV存储系统。其存储基础是分散存储Manul,Manul是具备数据平衡、媒体存储、EC存储等的高性能、高、分散存储服务。UKV提供集群管理服务、快速备份等常规功能,为US3元数据服务设计数据结构,在UCloud日常业务场景中提供更好的性能。UKV使用UCloud自己的URocksDB作为计算节点,该数据库是从开源RocksDB定制的,并依靠Manul来实现主从热备、快速分割热点节点等功能。由于空间的限制,我们不会在这里讨论UKV的架构设计和功能,所以请期待下一次分享。