• 授权协议:-
  • 开发厂商:爱奇艺
  • 软件语言:Google Go
  • 更新日期:2018-06-17
Auklet

Auklet 是 OpenSwift Swift 对象服务器的重新实现,旨在解决在 OpenStack Swift 中存储大量小文件时的问题。Auklet 基于 OpenStackSwift 和Hummingbird,由爱奇艺开源。针对复制引擎的惰性迁移,可从现有的 Swift 复制引擎进行零迁移工作。爱奇艺作为一家视频公司,自然而然的 Swift 一开始主要也是用来存储视频文件,随着公司业务的高速发展,除了视频之外,一些其他的类型的存储需求也大了起来,比如说图片,文本等。对象删除采用文件打洞的方式,因此删

Auklet OpenStack Swift 海量小文件解决方案 项目简介

Auklet 是 OpenSwift Swift 对象服务器的重新实现,旨在解决在 OpenStack Swift 中存储大量小文件时的问题。Auklet 基于 OpenStack Swift 和 Hummingbird,由爱奇艺开源。功能特性保留大部分 OpenStack Swift 特性有效解决 LOSF 问题对大型的对象存储进行优化针对复制引擎的惰性迁移(lazy migration),可从现有的 Swift 复制引擎进行零迁移工作。不过仍处于实验性阶段限制不支持 ECOpenStack Swift 是一个开源的分布式对象存储系统,爱奇艺自从2012年便开始使用 Swift,其所具有的简单易运维等特点,非常适合爱奇艺的业务,因此其在爱奇艺发挥了非常重要的作用。爱奇艺作为一家视频公司,自然而然的 Swift 一开始主要也是用来存储视频文件,随着公司业务的高速发展,除了视频之外,一些其他的类型的存储需求也大了起来,比如说图片,文本等。当这些类型的图片存得越来越多的时候,一些对性能非常敏感的业务就反映性能变得很差。究其原因,是由于 OpenStack Swift 底层持久层的架构所致,对于每个上传的对象,在 Swift 后台都会单独保存成一个 POSIX 文件,更糟糕的是,每个对象都会有一个多级目录,因此每次上传一个对象,都要先创建相关目录,再创建新的文件来保存对象。当文件系统上的对象越来越多,这些操作就会越来越耗时,如果对象很大,那么这部分开销相对于整个读写过程来说是可以忽略的,但是当对象很小的时候,这个问题就会被凸显出来。Auklet 通过以下方式来解决问题:对象数据存在大文件上对象元数据保存在 RocksDB 中对象在大文件中的偏移量保存到 RocksDB 中每个 Swift partition 对应一个大文件,这样通过 hash 计算就能知道对象所在大文件的位置,避免了通过中心节点去查询大文件的位置对象删除采用文件打洞的方式,因此删除一个对象时,空间能够实现即时回收。Auklet pack engine(打包引擎)架构:性能比较项目介绍整理自:爱奇艺技术产品团队

Auklet OpenStack Swift 海量小文件解决方案 评论内容