SlideShare a Scribd company logo
1 of 42
How To Build
Cloud Storage Services
     张卫平 (Simon Zhang)
       with the team of
  武汉播思科技有限公司 (Hanborq Inc)
          June 2012
About me


• Simon Zhang 张卫平, CTO
 武汉播思科技有限公司 (Hanborq Inc.)

 simon.zhang@gmail.com
 @seymourz
About this talk


• This talk describes how to build an Amazon AWS S3 - like
  cloud storage service prototype based on Apache
  Hadoop stack;

• This talk also touches on how to build a Dropbox - like
  personal storage service, based on S3 - like cloud
  storage services.
Typical Cloud Storage Services


• Amazon AW3 S3
• Google AppEngine Cloud Storage

• Dropbox

• Instagram
• Pinterest
RockStor 对象云存储系统

 基于Hadoop生态系统实现
 提供S3-Like Rest-API
 Open Sourced (http://github.com/hanborq/rockstor/)
RockStor:引言
什么是对象存储系统?
 对象(Object)是对象存储的基本单元,每个Object是数据和数据属
 性集的综合体,数据属性可由系统用户自由扩充。

 对象存储系统是对象存储的载体,用户可通过对象存储系统完成对象
 的读写操作。

 用户通过对象存储系统保存数据的典型数据类型包括:
  多媒体,音乐,图片
  视频监控文件
  电话录音文件
  压缩log文件
  备份文件
  操作系统的镜像
  ……
                                        Slide 6
RockStor:引言
设计对象存储系统面临的问题
 功能
  数据的组织
  对象存储系统需要合理组织对象数据在分布式文件系统上的存储结构,以满足生产系统
  中大量随机读写对系统性能带来的挑战。
  元数据的组织
  合适的元数据存储引擎以及正确的Schema设计能使元数据的访问更加高效,此处的元数
  据既包括对象本身的元数据又包括对象的存储信息。

 性能
  吞吐
  对象存储系统需要满足在高并发访问下的稳定性能,无论是元数据还是数据的访问都不
  能成为系统性能的瓶颈。
  稳定性
  系统的性能不能随着系统运行时间的增长而下降,可靠稳定的系统实现应能够在系统长
  期运行中保持稳定,并能够应对系统硬件故障。
  可扩展性
  系统扩容应简单易行,性能可线性增长。
                                              Slide 7
RockStor:引言
为什么选择Hadoop
 HDFS
 HDFS是可靠稳定的分布式文件系统,具有高可靠,高并发等优点,且在一定条件下能够随着
 系统规模的扩大实现性能的线性增长。

 HBase
 HBase架设在HDFS之上,利用HDFS的特性保证数据的稳定可靠,HBase负责数据的组织和管理
 ,在Key-Value存储之上实现松散离散的数据表结构。

 ZooKeeper
 实现了全局锁服务,协调管理集群内各个计算和存储资源的状态,是大规模集群内部全局数
 据资源管理的绝佳工具。

 MapReduce
 分布式并行计算框架和数据并行处理的实现,使得对大数据的处理变得简单易行,随着计算
 节点的增加,分析处理的延时会大大降低。

 Hadoop生态环境的各个组件为我们实现分布式对象存储提供了基础架构。
                                                     Slide 8
RockStor:基本概念
Terminology
  User
  用户,即RockStor的使用者,User可以在RockStor上创建                            User
  Bucket,然后在Bucket中存取Pebble。
  Bucket
  Pebble的容器,Bucket与User是多对一的关系,Bucket只能由
  User删除。
  Pebble(Object)
  RockStor中的基本存储对象(Object),对User提供的最小存储     Bucket1    Bucket2          Bucket3      Bucket4
  单元,Pebble必须存放在Bucket中。
  Chunk
  Pebble实体数据的数据块,是Rock的组成单元,一个Pebble视
  其大小,可以有1个或多个Chunk组成。
                                             Object   Object     Object     Object    Object
  Rock
  用来存储Pebble的实体数据块的容器,每个Rock对应分布式文
  件系统上一个文件,每个Rock文件的大小根据配置有一个较大
  的上限,该文件用来存储大量的Chunk数据。                     Object   Object     Object     Object    Object

  Garbages                                  Rock
                                             &
  被删除或者未完成写操作的Chunk的管理容器。                  Chunks

                                                                                           Slide 9
RockStor:数据管理
数据存储引擎
 存储在哪里?
 HDFS是可靠稳定的数据存储容器,具有高可靠性高可扩展性等优点,适合大数据写入和读取
 ,对于大规模数据中心的部署亦提供了高可扩展性的保证。

 有什么问题?
 HDFS并不完美,可能并不能直接使用HDFS作为底层存储引擎
 1. HDFS的设计初衷只是面向大文件的文件系统(Part of Nutch);
 2. 单一的NameNode设计使得整个系统的NameSpace非常有限;
 3. 这不是一个实时的系统;
 4. ……

 如何解决?
 HDFS为数据的稳定可靠提供了保证,我们可以通过应用层实现封装,实现对大规模小文件的
 读写操作。

 HDFS是RockStor的数据存储引擎。

                                              Slide 10
RockStor:数据管理
HDFS中数据存储组织
             Logic            Physical                             Rock
                                                       DFS
  Bucket             Pebble              Part                      Chunk

                                                         Rock      Chunk
    Pebble            Part           Chunk
                                                         Chunk     Chunk

    Pebble            Part           Chunk               Chunk     Rock
                                                         Chunk     Chunk
    Pebble            Part           Chunk
                                                                   Chunk

                                                                   Chunk


 Bucket、Pebble和Part是逻辑存储单元,没有实体                 Rock和Chunk是物理存储单元,存储Pebble的实体
 数据文件;每个Bucket可容纳若干个Pebble;                     数据;
 Pebble由一个或多个Part组成;Part由一个或多个                  Rock对应DFS上的文件,Chunk是Rock文件中的组成
 Chunk组成。                                       部分;

 所有存储单元的元数据信息都保存在HBase中                                                          Slide 11
RockStor:数据管理
Rock存储结构
                                  Rock
 压缩存储
 Rock是RockStor在HDFS上的最大存储单位      RockHeader
 ,每个Rock在HDFS上对应一个文件,Rock
 由Rock头部和大量Chunk组成。Chunk在          chunk      4bit    Version
 Rock中存储是按照8字节对齐。                             32bit   Rock Id
                                   chunk
 Rock头描述                                      16bit   Rock Magic
 Version:Rock存储结构的版本号,根据           chunk      4bit    Padding
 该值便于系统升级或者降级时对Rock文件
 进行读写。                             ……
 Rock Id:Rock的唯一标识。
 Rock Magic:Rock Id字节数组。每个         chunk
 Chunk开始位置均写入该值。当chunk索引
 丢失时,可以通过该值搜寻Chunk起始位
 置。
 Padding:Chunk在Rock中按照8bytes对齐
 进行存储。
                                                                Slide 12
RockStor:数据管理
Chunk存储结构
 基本存储单元
 每个Chunk属于且仅属于一个Pebble,通常情况下,一           Rock Magic      16
 个Pebble的所有chunk仅存储在一个Rock中。本实现目
 前暂未考虑Data Dedup.                         ChunkId        16

 数据结构                                    TimeStamp        8
 Rock Magic:该值和所处Rock的Rock Magic相同。      Size             8
 Chunk Id:Chunk的标识。如果若干Chunk的Chunk Id相   Part Index       2
 同,表明它们属于同一Pebble。                       ChunkSeq         2
 Timestamp:Chunk创建的时间,亦可当作Chunk的版本       Data
                                                         size
 号。
 Size:Chunk的实体数据大小。
 Part Index:用户上传Chunk时赋予的序号。序号值从1
                                                      1-7 (padding)
 开始编号。对于普通模式上传的Pebble,Part Index默
 认为1。
 Data:Chunk的实体数据。
 Padding:填充字节。
                                                                      Slide 13
RockStor:元数据管理
元数据存储引擎
 存储在哪里?
 相对于数据存储来讲,对象的元数据更加结构化。
 HBase提供了稳定可靠的Key-Value存储机制,并能够根据用户创建的Schema提供丰富的上层
 表示,是可靠的结构化数据存储引擎。
 HBase的顺序写入性能和随机读取性能可以满足元数据读取的需求,并能够长期可靠的提供
 服务。

 HBase有什么不足?
 HBase底层采用Key-Value存储,虽然提供了数据表的Schema描述,但其本身无法提供RDMBS
 的所有功能。
 HBase和HDFS一样,存在单节点失效的问题(HMaster是单节点)。

 怎么处理?
 在相当一部分应用中,DBMS并不需要非常强的关系型数据库的特性,就像RockStor一样,读
 写性能是我们关注的关键。

 HBase是RockStor的元数据存储引擎。
                                                        Slide 14
RockStor:元数据管理
元数据存储模型
User               Bucket                          Pebble
RowKey UserId      RowKey BucketId                 RowKey PebbleId
CF                 CF                              CF
BucketName1        Owner                           Owner
BucketName2        Etag                            PartPrefix
……                 Acl                             PartNum
                        BucketId对应PebbleId是天然
                                                   Size
                        的映射,如:                     Etag
Rock
                        Bucket=testBucket          Mime
RowKey RockId           PebbleId=testbucket/pic/   Meta
CF M                    1.jpg
CreateTime
                        Chunk
Version                                            ChunkId
                        RowKey ChunkId
Retire                                             =MD5(“testbucket/pic/
                        CF
GarbageBytes                                       1.jpg”+0+(maxLong-
                        RockId
DeletedBytes                                       version))
                        ChunkOffset
CF G
                        ChunkSize
Garbage Offset 1
Garbage Offset 2
……
                                                                           Slide 15
RockStor:元数据管理
主要数据表
 User                               Rock
 RowKey为UserId,只有一个CF,每个Column      RowKey为RockId,与其他表的RowKey不同,
 存储一个BuckeId,实际上实现了User到            Rock表的RockKey由系统运行时生成,CF M的
 Bucket的映射。                         内容是系统Rock的常规属性,如创建时间等
                                    信息,CF G的内容是垃圾数据的信息,用于
 Bucket                             数据清理。
 RowKey为BucketId,只有一个CF,Column主
 要有Owner(所有者),Etag和ACL(访问权          Chunk
 限)。                                RowKey为ChunkId,其内容由Pebble表
                                    PartPrefix和PartNum计算得到,每个Pebble
 Pebble                             在Chunk表中至少有PartNum个Chunk存在,如
 RowKey为ObjectId,通过BucketId进行scan   果存在多个版本,则数量更多,Chunk表只有
 操作即可返回该Bucket下的所有Pebble对象          一个CF,记录的是该Chunk存储在哪个Rock以
 ,这张表只有一个CF,主要包含Pebble的对            及具体位置信息。
 象属性Mime和Meta等,以及存储位置属性
 PartPrefix和PartNum。
                                                                      Slide 16
RockStor:系统架构
系统总体架构
 RockStor提供完整的云对象存储平台系统和云对象存储服务能力,可以用于构建一个较为完
 整的类似Amazon AWS S3的云对象存储系统和服务,也可以在企业内部私网中对企业内部应
 用提供存储服务。
                               SDK (Java) for Developers


                                               RESTful API
                                             (Cloud Service)
       分布式云对象存储系统
                            RockStor Service Load Balancers
                           (访问请求负载均衡器,多点部署,LVS)
         Management
           Console
                                                                      RockMaster
          AAA, CAS                     RESTful API
                                        (Internal)


         RockServer       RockServer                 RockServer       RockServer




               分布式存储系统集群Hadoop                              分布式数据库集群HBase
                (存储和管理Rock文件)                                (存储和管理元数据)


                                                                                   Slide 17
RockStor:系统架构
系统总体架构
 RockServer
 分布式实现的RockServer集群,用于接收业务请求,实现了云对象存储服务的业务流程和逻
 辑,并实现数据块的组织。为了实现业务的负载均衡,系统采用前置的负载均衡器(如LVS
 )实现,负载均衡器会把业务请求均匀地调度到不同的RockServer上进行处理。

 RockMaster
 RockMaster的负载很轻,实现RockServer集群管理和垃圾清理调度工作。

 AAA和CAS
 AAA和CAS服务器实现用户管理数据库和安全认证功能。

 Management Console
 Management Console为用户提供一个通过Web浏览器管理自己的存储系统的窗口。

 API
 系统对外提供类似Amazon S3的REST API接口。

                                                  Slide 18
RockStor:系统实现
系统实现
  RockServer
  RockServer是整个系统的核心组件,实现了系统的接入管理,元数据
  和数据的管理及映射;
                 RockServer        RockServer

                                                    AAA, CAS     Management Console
Web Interface      RESTful           RESTful
                     API               API

                 Service Logics   Service Logics

                   Storage           Storage
Storage Layout     Module            Module         RockMaster




存储和分布式                               DFS             DDB
系统支撑层             ZooKeeper                                          MapReduce
                                  分布式文件系统          分布式数据库



                                                                                      Slide 19
RockStor:系统实现
RockServer
                                          RockServer
                                            Jetty Continuation Queue
  RESTFul
    API                                          ReactorPool
                          Request          Meta        Rock Data       HTTP Data
                         Dispatcher       Reader         Reader         Reader
                                                                                    Time
                                                                                    Out
              Jetty      Response         Meta         Rock Data       HTTP Data
             Servlet     Dispatcher       Writer        Writer          Writer
            Container

                         Platform Interface                        System Monitor
  HTTP                    MapReduce          Zookeeper
                                                                            JMX
                            Interface         Interface
                              HBase
                                            HDFS Interface                  ……
                            Interface



                                                                                           Slide 20
RockStor:系统实现
RockServer
  Jetty Servlet Container
  负责接收HTTP请求,并分发到相关的Servlet。
  Jetty Continuation Queue
  缓存未处理完成的HTTP请求,检查操作是否超时。
  ReactorPool
  每个Reactor可以有一个或多个工作线程,每个线程拥有一个任务队列,工作线程依次执行队列中的任
  务。
     RequestDispatcher:校验HTTP请求的合法性,生成并分发任务;
     ResponseDispatcher:负责发送Response给请求者;
     MetaReader:负责读取元数据;
     MetaWriter:负责写元数据;
     Rock DataReader:负责从DFS读取Chunk数据;
     Rock DataWriter:负责将Chunk数据写入DFS;
     HTTP DataReader:负责读取HTTP Request中携带的Chunk数据;
     HTTP DataWriter:负责将数据写入到HTTP Response;
     Timeout:负责处理timeout情况下,资源清理。
  Platform Interface
  负责与底层存储系统和分布式架构模块接口。
  System Monitor
  负责监控系统的各项指标。                                       Slide 21
RockStor:系统实现
实现流程示例:PutObject
     Jetty HTTP Message          ReqDispatch       HttpDataReader        RockDataWriter           MetaWriter   RespDispatch

   PutObject
                                                              连续从HTTP协议栈
                     PutObject                                读取数据,并写入
                                                              Rock
                                生成
                           PutObjectTask
 响应用户的
 REST消息           生成Task在不同
                  的状态间切换,
                  每个状态会有不
                  同的Reactor进
                                                                                                             返回操作成功
                  行处理                                                         读取完毕
                                                                              保存元数据
                                                                            Read OK
           Req Dispatch            Meta        Valid Req    HTTP Data                          RockData
                                  Reader                     Reader         More Data           Writer


                          Invalid Req                                       Re
                                                                              ad             No More Data
                                                                                 F   aile
                                                                                         d   /Write Failed


               Send Rsp          Response              Write OK/Failed                          Meta
                                 Dispatch                                                       Writer
                                                                                                                              Slide 22
RockStor:系统实现
实现流程示例:GetObject
     Jetty HTTP Message        ReqDispatch        MetaReader            RockDataReader    HttpDataWriter   RespDispatch

   GetObject

                      GetObject                                                  连续从Rock中读取
                                                                                 数据,并写入HTTP
                              生成                                                 Response
                         GetObjectTask
 响应用户的
 REST消息         生成Task在不同
                的状态间切换,                          读取元数据
                每个状态会有不                          找到对应的
                同的Reactor进                       Rock和Chunk                                           返回操作成功
                行处理


                                                                             Read OK
         Req Dispatch          Meta      Valid Req         Rock Data                     HTTP Data
                              Reader                        Reader           More Data    Writer


                      Invalid Req                    led
                                                  Fai
                                               ad
                                             Re
                                                                  ata
                                                            ore D
                                                       No M Failed
           Send Rsp                                          e
                             Response                   /Writ
                             Dispatch
                                                                                                                          Slide 23
RockStor:系统实现
REST Example




                               Slide 24
RockStor:小结
小结
 功能方面
 RockStor是一个用于存储和管理海量对象数据或文件的存储系统,系统建立在分布式存储集
 群上,实现海量对象存储能力和逻辑,提供REST访问接口。
 结构方面
 RockStor以分布式数据存储和分布式元数据存储为基础,实现了元数据和存储的分离,实现
 上使用了线程池-资源池的编程架构,提供高性能保证。
 特点方面
 Scalability:以分布式文件系统作为底层存储系统的强大Scalable能力,满足大规模数据
 的存储和扩展要求。
 High Availability:底层分布式文件系统的分布式架构和数据副本支持系统的稳定性和健
 壮性。
 Real-Time/Low-Latency:数据实时生效可见(Available)。
 High Throughput:强大的分布式系统支持很高的吞吐率。
 应用方面
 RockStor主要面向海量对象或文件存储,适用于互联网、企业用户的数据存储业务,在此基础
 上可构建完整的类似Amazon AWS S3的云存储服务。
 开源软件
 http://github.com/hanborq/rockstor                  Slide 25
Dropbox 面向个人用户的云存储服务

资源存储和分享平台
基于Amazon EC2 & S3
在桌面客户端、手机客户端和Web间实现资源同步
(http://www.udrop.net)
Dropbox:引言
Dropbox
  Dropbox是什么?
  Dropbox 是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务,
  通过云计算实现互联网上的文件同步,用户可以存储并共享文件和文件夹。Dropbox提供免
  费和收费服务,在不同操作系统下有客户端软件,并且有网页客户端。

  和传统意义上的网盘有什么不同?
  Dropbox提供了以下这些有意义的feature:
   数据在客户端本地和云端都存有备份;
   每次修改都能够自动同步推送到所有客户端上;
   单个文件具有多个版本,且能够恢复到之前的任何一个版本;
   已删除的文件也可以恢复;
   支持目录在好友间的共享,方便团队的协同操作;
   ……



                                                    Slide 27
Dropbox:功能
简单!方便!
 使用Dorpbox就像使用一个普通目录一样,可以拷贝、拖拽任何文件进来;

 所有的Dropbox目录下的文件都会被同步到云端,并被同步同一账号的其他客户端;

 同步成功后会显示同步成功的标志;

 采用安全可靠的传输方式(HTTPS);

 支持多种多样的客户端,在多种客户端上都能通过网络访问资源。




                                            Slide 28
Dropbox:功能
通过Web直接访问
 非常人性化的界面设计!
 无论是不是在自己的电脑旁,只有有浏览器,就能随时通过浏览器访问Dropbox上的资源。




                                               Slide 29
Dropbox:功能
多版本管理
 Dropbox会保存文件的所有修改记录,你可以恢复到任何你需要的版本!

 所有创建、删除、修改、更名操作都会被记录!




                                       Slide 30
Dropbox:功能
随时随地记录与分享
 通过手机客户端,能够将拍摄的照片同步到Dropbox。

 无论身处何地,都能够将需要保存的数据、文件保存起来。




                               Slide 31
Dropbox:功能
好友间的文件分享
 通过Web实现目录的共享,可以邀请好友一起分享目录下的资源。

 照片分享,协同工作!




                                  Slide 32
Dropbox:实现



                                              Softlayer Datacenter


            keep alive (http)



                            login (https)

                list, delete rename and sync (https)
                                                                     Dropbox Web Server
Client


    download and upload data (https)




                                               Amazon S3 & EC2
                                                                                          Slide 33
Dropbox:实现
主要模块
 元数据存储 @dropbox.com
 元数据由Dropbox自己的数据中心管理;
 主要管理用户信息以及维护每个用户的目录树结构;
 管理每个文件的Chunk信息。

 数据存储 @ec2.amazon.com
 每个文件都由一个个大小为4M的Chunk组成,所有这些Chunk都保存在Amazon S3上,利用S3
 提供的云存储空间保存用户数据;
 存储的控制逻辑通过EC2实现,客户端与运行在EC2上的dropbox的存储控制模块通信,在EC2
 上实现Chunk生成、拼接、存储等逻辑;
 通过EC2访问S3也和Amazon AWS的收费标准相关,节省Dropbox的运维成本。

 心跳服务 @softlayer.com
 心跳服务器部署在softlayer的数据中心;
 客户端和心跳服务器之间会维持一个长连接,使用心跳的response封装相关的通知信息,客
 户端判断是否需要更新目录树结构。

                                                       Slide 34
Dropbox:实现
同步数据到云端
 客户端监测Dropbox的目录,并将新增加的文件同步到云端。
                       3.通知元数据服务器:要
                       同步新文件啦!并得到相     5.同步成功
 1.Dropbox监测到了用户将      应的指令信息
 一个新文件放在其目录下




                           4.上传一个个
                           Chunk数据到
                           EC2,S3,并记
           切分
                           录每个Chunk的
                           元数据



    2.Dropbox对这个新文件按
    照4M大小进行切分
                                                Slide 35
Dropbox:实现
同步数据到云端
 Dropbox对旧文件的修改采用增量上传的方式,只同步“差量”到云端。
                       3.通知元数据服务器:文
                       件被修改啦!并得到相应       6.同步成功
 1.Dropbox监测到了用户目      的指令信息
 录下的一个文件被修改了




                                  5.恢复出完整文件



           计算           4.只上传差量
                        部分到云端
           Diff



    2.Dropbox计算修改后的文
    件与旧文件有什么不同
                                                  Slide 36
Dropbox:实现
   同步两个客户端的数据
     同一账号的两个客户端,可以通过Dropbox实现数据同步。

     两个账号可以通过共享目录实现数据同步。

1.客户端A同步了一个新文件                                 5.拼接成完整文
                                     3.获取元数据   件,同步完成




                              4.同步Chunk数据




                           2.客户端B通过心跳得知
                           有了新文件需要同步


                                                     Slide 37
Dropbox:我们的uDrop

                                                            Enterprise
                                                              Users
                      Native API
                                                            Individual/
                                                              teams
                                   uDrop/eDrop

                                                           Multi Devices
 Cloud Storage System

                     uDrop/eDrop (http://www.udrop.net/)
•是一个提供文件备份、存储及共享服务的网络存储空间
•底层存储采用分布式对象存储系统,提供安全的数据存储和访问
•多台电脑、终端之间文件自动同步更新
•文件夹共享,提高协同工作效率
•提供文件外链分享
•支持文件多版本,可恢复任意版本
•支持文件去重,节省存储空间
•支持文件增量上传,节省传输带宽
•Windows/Linux Client, Web,iPhone APP,Android APP
•uDrop for Teams (eDrop) : 更多企业方面的功能
Dropbox:小结
小结
 这是一个云存储服务
 Dropbox是一个面向个人用户的云存储服务,其本身依赖了Amazon AWS等云计算和云存储平
 台,对公众提供了稳定可靠的网络空间。

 Dropbox是一个简单的云存储服务,提供了最精简的功能,但用户却收获了最佳的体验,在
 同类产品中也是最成功的!


 欢迎使用我们的uDrop
 www.udrop.net




                                                    Slide 39
Further Readings

• Amazon AWS S3 Developer Guide
 (http://docs.amazonwebservices.com/AmazonS3/latest/dev/Welcome.html?r=3378)

• Amazon Patent on S3
  (http://www.freepatentsonline.com/y2007/0156842.html)




• Facebook Paper on Haystack for Photo Storage
  (http://static.usenix.org/events/osdi10/tech/full_papers/Beaver.pdf)
Homework (1)

• Install a Dropbox on your computer and Play with it;

• Look into its local SQLite on how Dropbox segments
  documents/files and how it represents them;

• Formulate the serve-side logic on how Dropbox re-assembles
  segments into a document.
Homework (2)


• What are the differences in objects’ meta data
   structures and organizations implementation between
   RockStor and S3?
  (You’d read into the codes of RockStor and patent
   presentation of S3 )

More Related Content

What's hot

网易海量数据存储平台的构建和运维
网易海量数据存储平台的构建和运维网易海量数据存储平台的构建和运维
网易海量数据存储平台的构建和运维锐 张
 
网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维guiyingshenxia
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研lorisjand
 
Zh Tw Introduction To H Base
Zh Tw Introduction To H BaseZh Tw Introduction To H Base
Zh Tw Introduction To H Basekevin liao
 
淘宝 任卿 打造高效能的Cdn系统
淘宝 任卿 打造高效能的Cdn系统淘宝 任卿 打造高效能的Cdn系统
淘宝 任卿 打造高效能的Cdn系统guiyingshenxia
 
Zh Tw Introduction To Map Reduce
Zh Tw Introduction To Map ReduceZh Tw Introduction To Map Reduce
Zh Tw Introduction To Map Reducekevin liao
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介振林 谭
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统Dai Jun
 
Zh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And HdfsZh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And Hdfskevin liao
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法mysqlops
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践drewz lin
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践Wensong Zhang
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
第4章 数据库管理
第4章 数据库管理第4章 数据库管理
第4章 数据库管理zhang shuren
 

What's hot (15)

网易海量数据存储平台的构建和运维
网易海量数据存储平台的构建和运维网易海量数据存储平台的构建和运维
网易海量数据存储平台的构建和运维
 
网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研
 
Zh Tw Introduction To H Base
Zh Tw Introduction To H BaseZh Tw Introduction To H Base
Zh Tw Introduction To H Base
 
淘宝 任卿 打造高效能的Cdn系统
淘宝 任卿 打造高效能的Cdn系统淘宝 任卿 打造高效能的Cdn系统
淘宝 任卿 打造高效能的Cdn系统
 
Zh Tw Introduction To Map Reduce
Zh Tw Introduction To Map ReduceZh Tw Introduction To Map Reduce
Zh Tw Introduction To Map Reduce
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统
 
Zh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And HdfsZh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And Hdfs
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
第4章 数据库管理
第4章 数据库管理第4章 数据库管理
第4章 数据库管理
 

Similar to How to Build Cloud Storage Service Systems

Mongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqlMongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqltaocheng1989
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renrend0nn9n
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1小新 制造
 
Squid cache原理和配置
Squid cache原理和配置Squid cache原理和配置
Squid cache原理和配置Pickup Li
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈Robbin Fan
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结ordinary2012
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇小新 制造
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华zhuozhe
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析frogd
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.pptjames tong
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oraclefrogd
 
Ext4 Bigalloc report public
Ext4 Bigalloc report publicExt4 Bigalloc report public
Ext4 Bigalloc report publicHao(Robin) Dong
 
Rethinkdb and tokudb research
Rethinkdb and tokudb research Rethinkdb and tokudb research
Rethinkdb and tokudb research mysqlops
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告iammutex
 

Similar to How to Build Cloud Storage Service Systems (15)

Mongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqlMongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosql
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1
 
Squid cache原理和配置
Squid cache原理和配置Squid cache原理和配置
Squid cache原理和配置
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.ppt
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracle
 
Ext4 Bigalloc report public
Ext4 Bigalloc report publicExt4 Bigalloc report public
Ext4 Bigalloc report public
 
Rethinkdb and tokudb research
Rethinkdb and tokudb research Rethinkdb and tokudb research
Rethinkdb and tokudb research
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 

More from Hanborq Inc.

Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to CassandraHanborq Inc.
 
Hadoop HDFS NameNode HA
Hadoop HDFS NameNode HAHadoop HDFS NameNode HA
Hadoop HDFS NameNode HAHanborq Inc.
 
Hadoop大数据实践经验
Hadoop大数据实践经验Hadoop大数据实践经验
Hadoop大数据实践经验Hanborq Inc.
 
Flume and Flive Introduction
Flume and Flive IntroductionFlume and Flive Introduction
Flume and Flive IntroductionHanborq Inc.
 
Hadoop MapReduce Streaming and Pipes
Hadoop MapReduce  Streaming and PipesHadoop MapReduce  Streaming and Pipes
Hadoop MapReduce Streaming and PipesHanborq Inc.
 
HBase Introduction
HBase IntroductionHBase Introduction
HBase IntroductionHanborq Inc.
 
Hadoop MapReduce Task Scheduler Introduction
Hadoop MapReduce Task Scheduler IntroductionHadoop MapReduce Task Scheduler Introduction
Hadoop MapReduce Task Scheduler IntroductionHanborq Inc.
 
Hadoop MapReduce Introduction and Deep Insight
Hadoop MapReduce Introduction and Deep InsightHadoop MapReduce Introduction and Deep Insight
Hadoop MapReduce Introduction and Deep InsightHanborq Inc.
 
Hadoop HDFS Detailed Introduction
Hadoop HDFS Detailed IntroductionHadoop HDFS Detailed Introduction
Hadoop HDFS Detailed IntroductionHanborq Inc.
 
Hanborq Optimizations on Hadoop MapReduce
Hanborq Optimizations on Hadoop MapReduceHanborq Optimizations on Hadoop MapReduce
Hanborq Optimizations on Hadoop MapReduceHanborq Inc.
 

More from Hanborq Inc. (12)

Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to Cassandra
 
Hadoop HDFS NameNode HA
Hadoop HDFS NameNode HAHadoop HDFS NameNode HA
Hadoop HDFS NameNode HA
 
Hadoop大数据实践经验
Hadoop大数据实践经验Hadoop大数据实践经验
Hadoop大数据实践经验
 
FlumeBase Study
FlumeBase StudyFlumeBase Study
FlumeBase Study
 
Flume and Flive Introduction
Flume and Flive IntroductionFlume and Flive Introduction
Flume and Flive Introduction
 
Hadoop MapReduce Streaming and Pipes
Hadoop MapReduce  Streaming and PipesHadoop MapReduce  Streaming and Pipes
Hadoop MapReduce Streaming and Pipes
 
HBase Introduction
HBase IntroductionHBase Introduction
HBase Introduction
 
Hadoop Versioning
Hadoop VersioningHadoop Versioning
Hadoop Versioning
 
Hadoop MapReduce Task Scheduler Introduction
Hadoop MapReduce Task Scheduler IntroductionHadoop MapReduce Task Scheduler Introduction
Hadoop MapReduce Task Scheduler Introduction
 
Hadoop MapReduce Introduction and Deep Insight
Hadoop MapReduce Introduction and Deep InsightHadoop MapReduce Introduction and Deep Insight
Hadoop MapReduce Introduction and Deep Insight
 
Hadoop HDFS Detailed Introduction
Hadoop HDFS Detailed IntroductionHadoop HDFS Detailed Introduction
Hadoop HDFS Detailed Introduction
 
Hanborq Optimizations on Hadoop MapReduce
Hanborq Optimizations on Hadoop MapReduceHanborq Optimizations on Hadoop MapReduce
Hanborq Optimizations on Hadoop MapReduce
 

How to Build Cloud Storage Service Systems

  • 1. How To Build Cloud Storage Services 张卫平 (Simon Zhang) with the team of 武汉播思科技有限公司 (Hanborq Inc) June 2012
  • 2. About me • Simon Zhang 张卫平, CTO 武汉播思科技有限公司 (Hanborq Inc.) simon.zhang@gmail.com @seymourz
  • 3. About this talk • This talk describes how to build an Amazon AWS S3 - like cloud storage service prototype based on Apache Hadoop stack; • This talk also touches on how to build a Dropbox - like personal storage service, based on S3 - like cloud storage services.
  • 4. Typical Cloud Storage Services • Amazon AW3 S3 • Google AppEngine Cloud Storage • Dropbox • Instagram • Pinterest
  • 5. RockStor 对象云存储系统 基于Hadoop生态系统实现 提供S3-Like Rest-API Open Sourced (http://github.com/hanborq/rockstor/)
  • 6. RockStor:引言 什么是对象存储系统? 对象(Object)是对象存储的基本单元,每个Object是数据和数据属 性集的综合体,数据属性可由系统用户自由扩充。 对象存储系统是对象存储的载体,用户可通过对象存储系统完成对象 的读写操作。 用户通过对象存储系统保存数据的典型数据类型包括: 多媒体,音乐,图片 视频监控文件 电话录音文件 压缩log文件 备份文件 操作系统的镜像 …… Slide 6
  • 7. RockStor:引言 设计对象存储系统面临的问题 功能 数据的组织 对象存储系统需要合理组织对象数据在分布式文件系统上的存储结构,以满足生产系统 中大量随机读写对系统性能带来的挑战。 元数据的组织 合适的元数据存储引擎以及正确的Schema设计能使元数据的访问更加高效,此处的元数 据既包括对象本身的元数据又包括对象的存储信息。 性能 吞吐 对象存储系统需要满足在高并发访问下的稳定性能,无论是元数据还是数据的访问都不 能成为系统性能的瓶颈。 稳定性 系统的性能不能随着系统运行时间的增长而下降,可靠稳定的系统实现应能够在系统长 期运行中保持稳定,并能够应对系统硬件故障。 可扩展性 系统扩容应简单易行,性能可线性增长。 Slide 7
  • 8. RockStor:引言 为什么选择Hadoop HDFS HDFS是可靠稳定的分布式文件系统,具有高可靠,高并发等优点,且在一定条件下能够随着 系统规模的扩大实现性能的线性增长。 HBase HBase架设在HDFS之上,利用HDFS的特性保证数据的稳定可靠,HBase负责数据的组织和管理 ,在Key-Value存储之上实现松散离散的数据表结构。 ZooKeeper 实现了全局锁服务,协调管理集群内各个计算和存储资源的状态,是大规模集群内部全局数 据资源管理的绝佳工具。 MapReduce 分布式并行计算框架和数据并行处理的实现,使得对大数据的处理变得简单易行,随着计算 节点的增加,分析处理的延时会大大降低。 Hadoop生态环境的各个组件为我们实现分布式对象存储提供了基础架构。 Slide 8
  • 9. RockStor:基本概念 Terminology User 用户,即RockStor的使用者,User可以在RockStor上创建 User Bucket,然后在Bucket中存取Pebble。 Bucket Pebble的容器,Bucket与User是多对一的关系,Bucket只能由 User删除。 Pebble(Object) RockStor中的基本存储对象(Object),对User提供的最小存储 Bucket1 Bucket2 Bucket3 Bucket4 单元,Pebble必须存放在Bucket中。 Chunk Pebble实体数据的数据块,是Rock的组成单元,一个Pebble视 其大小,可以有1个或多个Chunk组成。 Object Object Object Object Object Rock 用来存储Pebble的实体数据块的容器,每个Rock对应分布式文 件系统上一个文件,每个Rock文件的大小根据配置有一个较大 的上限,该文件用来存储大量的Chunk数据。 Object Object Object Object Object Garbages Rock & 被删除或者未完成写操作的Chunk的管理容器。 Chunks Slide 9
  • 10. RockStor:数据管理 数据存储引擎 存储在哪里? HDFS是可靠稳定的数据存储容器,具有高可靠性高可扩展性等优点,适合大数据写入和读取 ,对于大规模数据中心的部署亦提供了高可扩展性的保证。 有什么问题? HDFS并不完美,可能并不能直接使用HDFS作为底层存储引擎 1. HDFS的设计初衷只是面向大文件的文件系统(Part of Nutch); 2. 单一的NameNode设计使得整个系统的NameSpace非常有限; 3. 这不是一个实时的系统; 4. …… 如何解决? HDFS为数据的稳定可靠提供了保证,我们可以通过应用层实现封装,实现对大规模小文件的 读写操作。 HDFS是RockStor的数据存储引擎。 Slide 10
  • 11. RockStor:数据管理 HDFS中数据存储组织 Logic Physical Rock DFS Bucket Pebble Part Chunk Rock Chunk Pebble Part Chunk Chunk Chunk Pebble Part Chunk Chunk Rock Chunk Chunk Pebble Part Chunk Chunk Chunk Bucket、Pebble和Part是逻辑存储单元,没有实体 Rock和Chunk是物理存储单元,存储Pebble的实体 数据文件;每个Bucket可容纳若干个Pebble; 数据; Pebble由一个或多个Part组成;Part由一个或多个 Rock对应DFS上的文件,Chunk是Rock文件中的组成 Chunk组成。 部分; 所有存储单元的元数据信息都保存在HBase中 Slide 11
  • 12. RockStor:数据管理 Rock存储结构 Rock 压缩存储 Rock是RockStor在HDFS上的最大存储单位 RockHeader ,每个Rock在HDFS上对应一个文件,Rock 由Rock头部和大量Chunk组成。Chunk在 chunk 4bit Version Rock中存储是按照8字节对齐。 32bit Rock Id chunk Rock头描述 16bit Rock Magic Version:Rock存储结构的版本号,根据 chunk 4bit Padding 该值便于系统升级或者降级时对Rock文件 进行读写。 …… Rock Id:Rock的唯一标识。 Rock Magic:Rock Id字节数组。每个 chunk Chunk开始位置均写入该值。当chunk索引 丢失时,可以通过该值搜寻Chunk起始位 置。 Padding:Chunk在Rock中按照8bytes对齐 进行存储。 Slide 12
  • 13. RockStor:数据管理 Chunk存储结构 基本存储单元 每个Chunk属于且仅属于一个Pebble,通常情况下,一 Rock Magic 16 个Pebble的所有chunk仅存储在一个Rock中。本实现目 前暂未考虑Data Dedup. ChunkId 16 数据结构 TimeStamp 8 Rock Magic:该值和所处Rock的Rock Magic相同。 Size 8 Chunk Id:Chunk的标识。如果若干Chunk的Chunk Id相 Part Index 2 同,表明它们属于同一Pebble。 ChunkSeq 2 Timestamp:Chunk创建的时间,亦可当作Chunk的版本 Data size 号。 Size:Chunk的实体数据大小。 Part Index:用户上传Chunk时赋予的序号。序号值从1 1-7 (padding) 开始编号。对于普通模式上传的Pebble,Part Index默 认为1。 Data:Chunk的实体数据。 Padding:填充字节。 Slide 13
  • 14. RockStor:元数据管理 元数据存储引擎 存储在哪里? 相对于数据存储来讲,对象的元数据更加结构化。 HBase提供了稳定可靠的Key-Value存储机制,并能够根据用户创建的Schema提供丰富的上层 表示,是可靠的结构化数据存储引擎。 HBase的顺序写入性能和随机读取性能可以满足元数据读取的需求,并能够长期可靠的提供 服务。 HBase有什么不足? HBase底层采用Key-Value存储,虽然提供了数据表的Schema描述,但其本身无法提供RDMBS 的所有功能。 HBase和HDFS一样,存在单节点失效的问题(HMaster是单节点)。 怎么处理? 在相当一部分应用中,DBMS并不需要非常强的关系型数据库的特性,就像RockStor一样,读 写性能是我们关注的关键。 HBase是RockStor的元数据存储引擎。 Slide 14
  • 15. RockStor:元数据管理 元数据存储模型 User Bucket Pebble RowKey UserId RowKey BucketId RowKey PebbleId CF CF CF BucketName1 Owner Owner BucketName2 Etag PartPrefix …… Acl PartNum BucketId对应PebbleId是天然 Size 的映射,如: Etag Rock Bucket=testBucket Mime RowKey RockId PebbleId=testbucket/pic/ Meta CF M 1.jpg CreateTime Chunk Version ChunkId RowKey ChunkId Retire =MD5(“testbucket/pic/ CF GarbageBytes 1.jpg”+0+(maxLong- RockId DeletedBytes version)) ChunkOffset CF G ChunkSize Garbage Offset 1 Garbage Offset 2 …… Slide 15
  • 16. RockStor:元数据管理 主要数据表 User Rock RowKey为UserId,只有一个CF,每个Column RowKey为RockId,与其他表的RowKey不同, 存储一个BuckeId,实际上实现了User到 Rock表的RockKey由系统运行时生成,CF M的 Bucket的映射。 内容是系统Rock的常规属性,如创建时间等 信息,CF G的内容是垃圾数据的信息,用于 Bucket 数据清理。 RowKey为BucketId,只有一个CF,Column主 要有Owner(所有者),Etag和ACL(访问权 Chunk 限)。 RowKey为ChunkId,其内容由Pebble表 PartPrefix和PartNum计算得到,每个Pebble Pebble 在Chunk表中至少有PartNum个Chunk存在,如 RowKey为ObjectId,通过BucketId进行scan 果存在多个版本,则数量更多,Chunk表只有 操作即可返回该Bucket下的所有Pebble对象 一个CF,记录的是该Chunk存储在哪个Rock以 ,这张表只有一个CF,主要包含Pebble的对 及具体位置信息。 象属性Mime和Meta等,以及存储位置属性 PartPrefix和PartNum。 Slide 16
  • 17. RockStor:系统架构 系统总体架构 RockStor提供完整的云对象存储平台系统和云对象存储服务能力,可以用于构建一个较为完 整的类似Amazon AWS S3的云对象存储系统和服务,也可以在企业内部私网中对企业内部应 用提供存储服务。 SDK (Java) for Developers RESTful API (Cloud Service) 分布式云对象存储系统 RockStor Service Load Balancers (访问请求负载均衡器,多点部署,LVS) Management Console RockMaster AAA, CAS RESTful API (Internal) RockServer RockServer RockServer RockServer 分布式存储系统集群Hadoop 分布式数据库集群HBase (存储和管理Rock文件) (存储和管理元数据) Slide 17
  • 18. RockStor:系统架构 系统总体架构 RockServer 分布式实现的RockServer集群,用于接收业务请求,实现了云对象存储服务的业务流程和逻 辑,并实现数据块的组织。为了实现业务的负载均衡,系统采用前置的负载均衡器(如LVS )实现,负载均衡器会把业务请求均匀地调度到不同的RockServer上进行处理。 RockMaster RockMaster的负载很轻,实现RockServer集群管理和垃圾清理调度工作。 AAA和CAS AAA和CAS服务器实现用户管理数据库和安全认证功能。 Management Console Management Console为用户提供一个通过Web浏览器管理自己的存储系统的窗口。 API 系统对外提供类似Amazon S3的REST API接口。 Slide 18
  • 19. RockStor:系统实现 系统实现 RockServer RockServer是整个系统的核心组件,实现了系统的接入管理,元数据 和数据的管理及映射; RockServer RockServer AAA, CAS Management Console Web Interface RESTful RESTful API API Service Logics Service Logics Storage Storage Storage Layout Module Module RockMaster 存储和分布式 DFS DDB 系统支撑层 ZooKeeper MapReduce 分布式文件系统 分布式数据库 Slide 19
  • 20. RockStor:系统实现 RockServer RockServer Jetty Continuation Queue RESTFul API ReactorPool Request Meta Rock Data HTTP Data Dispatcher Reader Reader Reader Time Out Jetty Response Meta Rock Data HTTP Data Servlet Dispatcher Writer Writer Writer Container Platform Interface System Monitor HTTP MapReduce Zookeeper JMX Interface Interface HBase HDFS Interface …… Interface Slide 20
  • 21. RockStor:系统实现 RockServer Jetty Servlet Container 负责接收HTTP请求,并分发到相关的Servlet。 Jetty Continuation Queue 缓存未处理完成的HTTP请求,检查操作是否超时。 ReactorPool 每个Reactor可以有一个或多个工作线程,每个线程拥有一个任务队列,工作线程依次执行队列中的任 务。 RequestDispatcher:校验HTTP请求的合法性,生成并分发任务; ResponseDispatcher:负责发送Response给请求者; MetaReader:负责读取元数据; MetaWriter:负责写元数据; Rock DataReader:负责从DFS读取Chunk数据; Rock DataWriter:负责将Chunk数据写入DFS; HTTP DataReader:负责读取HTTP Request中携带的Chunk数据; HTTP DataWriter:负责将数据写入到HTTP Response; Timeout:负责处理timeout情况下,资源清理。 Platform Interface 负责与底层存储系统和分布式架构模块接口。 System Monitor 负责监控系统的各项指标。 Slide 21
  • 22. RockStor:系统实现 实现流程示例:PutObject Jetty HTTP Message ReqDispatch HttpDataReader RockDataWriter MetaWriter RespDispatch PutObject 连续从HTTP协议栈 PutObject 读取数据,并写入 Rock 生成 PutObjectTask 响应用户的 REST消息 生成Task在不同 的状态间切换, 每个状态会有不 同的Reactor进 返回操作成功 行处理 读取完毕 保存元数据 Read OK Req Dispatch Meta Valid Req HTTP Data RockData Reader Reader More Data Writer Invalid Req Re ad No More Data F aile d /Write Failed Send Rsp Response Write OK/Failed Meta Dispatch Writer Slide 22
  • 23. RockStor:系统实现 实现流程示例:GetObject Jetty HTTP Message ReqDispatch MetaReader RockDataReader HttpDataWriter RespDispatch GetObject GetObject 连续从Rock中读取 数据,并写入HTTP 生成 Response GetObjectTask 响应用户的 REST消息 生成Task在不同 的状态间切换, 读取元数据 每个状态会有不 找到对应的 同的Reactor进 Rock和Chunk 返回操作成功 行处理 Read OK Req Dispatch Meta Valid Req Rock Data HTTP Data Reader Reader More Data Writer Invalid Req led Fai ad Re ata ore D No M Failed Send Rsp e Response /Writ Dispatch Slide 23
  • 25. RockStor:小结 小结 功能方面 RockStor是一个用于存储和管理海量对象数据或文件的存储系统,系统建立在分布式存储集 群上,实现海量对象存储能力和逻辑,提供REST访问接口。 结构方面 RockStor以分布式数据存储和分布式元数据存储为基础,实现了元数据和存储的分离,实现 上使用了线程池-资源池的编程架构,提供高性能保证。 特点方面 Scalability:以分布式文件系统作为底层存储系统的强大Scalable能力,满足大规模数据 的存储和扩展要求。 High Availability:底层分布式文件系统的分布式架构和数据副本支持系统的稳定性和健 壮性。 Real-Time/Low-Latency:数据实时生效可见(Available)。 High Throughput:强大的分布式系统支持很高的吞吐率。 应用方面 RockStor主要面向海量对象或文件存储,适用于互联网、企业用户的数据存储业务,在此基础 上可构建完整的类似Amazon AWS S3的云存储服务。 开源软件 http://github.com/hanborq/rockstor Slide 25
  • 26. Dropbox 面向个人用户的云存储服务 资源存储和分享平台 基于Amazon EC2 & S3 在桌面客户端、手机客户端和Web间实现资源同步 (http://www.udrop.net)
  • 27. Dropbox:引言 Dropbox Dropbox是什么? Dropbox 是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务, 通过云计算实现互联网上的文件同步,用户可以存储并共享文件和文件夹。Dropbox提供免 费和收费服务,在不同操作系统下有客户端软件,并且有网页客户端。 和传统意义上的网盘有什么不同? Dropbox提供了以下这些有意义的feature:  数据在客户端本地和云端都存有备份;  每次修改都能够自动同步推送到所有客户端上;  单个文件具有多个版本,且能够恢复到之前的任何一个版本;  已删除的文件也可以恢复;  支持目录在好友间的共享,方便团队的协同操作;  …… Slide 27
  • 28. Dropbox:功能 简单!方便! 使用Dorpbox就像使用一个普通目录一样,可以拷贝、拖拽任何文件进来; 所有的Dropbox目录下的文件都会被同步到云端,并被同步同一账号的其他客户端; 同步成功后会显示同步成功的标志; 采用安全可靠的传输方式(HTTPS); 支持多种多样的客户端,在多种客户端上都能通过网络访问资源。 Slide 28
  • 33. Dropbox:实现 Softlayer Datacenter keep alive (http) login (https) list, delete rename and sync (https) Dropbox Web Server Client download and upload data (https) Amazon S3 & EC2 Slide 33
  • 34. Dropbox:实现 主要模块 元数据存储 @dropbox.com 元数据由Dropbox自己的数据中心管理; 主要管理用户信息以及维护每个用户的目录树结构; 管理每个文件的Chunk信息。 数据存储 @ec2.amazon.com 每个文件都由一个个大小为4M的Chunk组成,所有这些Chunk都保存在Amazon S3上,利用S3 提供的云存储空间保存用户数据; 存储的控制逻辑通过EC2实现,客户端与运行在EC2上的dropbox的存储控制模块通信,在EC2 上实现Chunk生成、拼接、存储等逻辑; 通过EC2访问S3也和Amazon AWS的收费标准相关,节省Dropbox的运维成本。 心跳服务 @softlayer.com 心跳服务器部署在softlayer的数据中心; 客户端和心跳服务器之间会维持一个长连接,使用心跳的response封装相关的通知信息,客 户端判断是否需要更新目录树结构。 Slide 34
  • 35. Dropbox:实现 同步数据到云端 客户端监测Dropbox的目录,并将新增加的文件同步到云端。 3.通知元数据服务器:要 同步新文件啦!并得到相 5.同步成功 1.Dropbox监测到了用户将 应的指令信息 一个新文件放在其目录下 4.上传一个个 Chunk数据到 EC2,S3,并记 切分 录每个Chunk的 元数据 2.Dropbox对这个新文件按 照4M大小进行切分 Slide 35
  • 36. Dropbox:实现 同步数据到云端 Dropbox对旧文件的修改采用增量上传的方式,只同步“差量”到云端。 3.通知元数据服务器:文 件被修改啦!并得到相应 6.同步成功 1.Dropbox监测到了用户目 的指令信息 录下的一个文件被修改了 5.恢复出完整文件 计算 4.只上传差量 部分到云端 Diff 2.Dropbox计算修改后的文 件与旧文件有什么不同 Slide 36
  • 37. Dropbox:实现 同步两个客户端的数据 同一账号的两个客户端,可以通过Dropbox实现数据同步。 两个账号可以通过共享目录实现数据同步。 1.客户端A同步了一个新文件 5.拼接成完整文 3.获取元数据 件,同步完成 4.同步Chunk数据 2.客户端B通过心跳得知 有了新文件需要同步 Slide 37
  • 38. Dropbox:我们的uDrop Enterprise Users Native API Individual/ teams uDrop/eDrop Multi Devices Cloud Storage System uDrop/eDrop (http://www.udrop.net/) •是一个提供文件备份、存储及共享服务的网络存储空间 •底层存储采用分布式对象存储系统,提供安全的数据存储和访问 •多台电脑、终端之间文件自动同步更新 •文件夹共享,提高协同工作效率 •提供文件外链分享 •支持文件多版本,可恢复任意版本 •支持文件去重,节省存储空间 •支持文件增量上传,节省传输带宽 •Windows/Linux Client, Web,iPhone APP,Android APP •uDrop for Teams (eDrop) : 更多企业方面的功能
  • 39. Dropbox:小结 小结 这是一个云存储服务 Dropbox是一个面向个人用户的云存储服务,其本身依赖了Amazon AWS等云计算和云存储平 台,对公众提供了稳定可靠的网络空间。 Dropbox是一个简单的云存储服务,提供了最精简的功能,但用户却收获了最佳的体验,在 同类产品中也是最成功的! 欢迎使用我们的uDrop www.udrop.net Slide 39
  • 40. Further Readings • Amazon AWS S3 Developer Guide (http://docs.amazonwebservices.com/AmazonS3/latest/dev/Welcome.html?r=3378) • Amazon Patent on S3 (http://www.freepatentsonline.com/y2007/0156842.html) • Facebook Paper on Haystack for Photo Storage (http://static.usenix.org/events/osdi10/tech/full_papers/Beaver.pdf)
  • 41. Homework (1) • Install a Dropbox on your computer and Play with it; • Look into its local SQLite on how Dropbox segments documents/files and how it represents them; • Formulate the serve-side logic on how Dropbox re-assembles segments into a document.
  • 42. Homework (2) • What are the differences in objects’ meta data structures and organizations implementation between RockStor and S3? (You’d read into the codes of RockStor and patent presentation of S3 )