How To BuildCloud 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...
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是数据和数据属 性集的综合体,数据属性可由系统用户自由扩充。 对象存储系统是对象存储的载体,用户可通过对象存储系统完成对象 的读写操作。 用户...
RockStor:引言设计对象存储系统面临的问题 功能  数据的组织  对象存储系统需要合理组织对象数据在分布式文件系统上的存储结构,以满足生产系统  中大量随机读写对系统性能带来的挑战。  元数据的组织  合适的元数据存储引擎以及正确的Sch...
RockStor:引言为什么选择Hadoop HDFS HDFS是可靠稳定的分布式文件系统,具有高可靠,高并发等优点,且在一定条件下能够随着 系统规模的扩大实现性能的线性增长。 HBase HBase架设在HDFS之上,利用HDFS的特性保证数...
RockStor:基本概念Terminology  User  用户,即RockStor的使用者,User可以在RockStor上创建                            User  Bucket,然后在Bucket中存取Pe...
RockStor:数据管理数据存储引擎 存储在哪里? HDFS是可靠稳定的数据存储容器,具有高可靠性高可扩展性等优点,适合大数据写入和读取 ,对于大规模数据中心的部署亦提供了高可扩展性的保证。 有什么问题? HDFS并不完美,可能并不能直接使用...
RockStor:数据管理HDFS中数据存储组织             Logic            Physical                             Rock                           ...
RockStor:数据管理Rock存储结构                                  Rock 压缩存储 Rock是RockStor在HDFS上的最大存储单位      RockHeader ,每个Rock在HDFS上对...
RockStor:数据管理Chunk存储结构 基本存储单元 每个Chunk属于且仅属于一个Pebble,通常情况下,一           Rock Magic      16 个Pebble的所有chunk仅存储在一个Rock中。本实现目 前...
RockStor:元数据管理元数据存储引擎 存储在哪里? 相对于数据存储来讲,对象的元数据更加结构化。 HBase提供了稳定可靠的Key-Value存储机制,并能够根据用户创建的Schema提供丰富的上层 表示,是可靠的结构化数据存储引擎。 H...
RockStor:元数据管理元数据存储模型User               Bucket                          PebbleRowKey UserId      RowKey BucketId          ...
RockStor:元数据管理主要数据表 User                               Rock RowKey为UserId,只有一个CF,每个Column      RowKey为RockId,与其他表的RowKey不同...
RockStor:系统架构系统总体架构 RockStor提供完整的云对象存储平台系统和云对象存储服务能力,可以用于构建一个较为完 整的类似Amazon AWS S3的云对象存储系统和服务,也可以在企业内部私网中对企业内部应 用提供存储服务。  ...
RockStor:系统架构系统总体架构 RockServer 分布式实现的RockServer集群,用于接收业务请求,实现了云对象存储服务的业务流程和逻 辑,并实现数据块的组织。为了实现业务的负载均衡,系统采用前置的负载均衡器(如LVS )实现...
RockStor:系统实现系统实现  RockServer  RockServer是整个系统的核心组件,实现了系统的接入管理,元数据  和数据的管理及映射;                 RockServer        RockServe...
RockStor:系统实现RockServer                                          RockServer                                            Jet...
RockStor:系统实现RockServer  Jetty Servlet Container  负责接收HTTP请求,并分发到相关的Servlet。  Jetty Continuation Queue  缓存未处理完成的HTTP请求,检查操...
RockStor:系统实现实现流程示例:PutObject     Jetty HTTP Message          ReqDispatch       HttpDataReader        RockDataWriter      ...
RockStor:系统实现实现流程示例:GetObject     Jetty HTTP Message        ReqDispatch        MetaReader            RockDataReader    Htt...
RockStor:系统实现REST Example                               Slide 24
RockStor:小结小结 功能方面 RockStor是一个用于存储和管理海量对象数据或文件的存储系统,系统建立在分布式存储集 群上,实现海量对象存储能力和逻辑,提供REST访问接口。 结构方面 RockStor以分布式数据存储和分布式元数据存...
Dropbox 面向个人用户的云存储服务资源存储和分享平台基于Amazon EC2 & S3在桌面客户端、手机客户端和Web间实现资源同步(http://www.udrop.net)
Dropbox:引言Dropbox  Dropbox是什么?  Dropbox 是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务,  通过云计算实现互联网上的文件同步,用户可以存储并共享文件和文件夹。Dropbox提...
Dropbox:功能简单!方便! 使用Dorpbox就像使用一个普通目录一样,可以拷贝、拖拽任何文件进来; 所有的Dropbox目录下的文件都会被同步到云端,并被同步同一账号的其他客户端; 同步成功后会显示同步成功的标志; 采用安全可靠的传输方...
Dropbox:功能通过Web直接访问 非常人性化的界面设计! 无论是不是在自己的电脑旁,只有有浏览器,就能随时通过浏览器访问Dropbox上的资源。                                               ...
Dropbox:功能多版本管理 Dropbox会保存文件的所有修改记录,你可以恢复到任何你需要的版本! 所有创建、删除、修改、更名操作都会被记录!                                       Slide 30
Dropbox:功能随时随地记录与分享 通过手机客户端,能够将拍摄的照片同步到Dropbox。 无论身处何地,都能够将需要保存的数据、文件保存起来。                               Slide 31
Dropbox:功能好友间的文件分享 通过Web实现目录的共享,可以邀请好友一起分享目录下的资源。 照片分享,协同工作!                                  Slide 32
Dropbox:实现                                              Softlayer Datacenter            keep alive (http)                 ...
Dropbox:实现主要模块 元数据存储 @dropbox.com 元数据由Dropbox自己的数据中心管理; 主要管理用户信息以及维护每个用户的目录树结构; 管理每个文件的Chunk信息。 数据存储 @ec2.amazon.com 每个文件都...
Dropbox:实现同步数据到云端 客户端监测Dropbox的目录,并将新增加的文件同步到云端。                       3.通知元数据服务器:要                       同步新文件啦!并得到相     ...
Dropbox:实现同步数据到云端 Dropbox对旧文件的修改采用增量上传的方式,只同步“差量”到云端。                       3.通知元数据服务器:文                       件被修改啦!并得到相应...
Dropbox:实现   同步两个客户端的数据     同一账号的两个客户端,可以通过Dropbox实现数据同步。     两个账号可以通过共享目录实现数据同步。1.客户端A同步了一个新文件                           ...
Dropbox:我们的uDrop                                                            Enterprise                                    ...
Dropbox:小结小结 这是一个云存储服务 Dropbox是一个面向个人用户的云存储服务,其本身依赖了Amazon AWS等云计算和云存储平 台,对公众提供了稳定可靠的网络空间。 Dropbox是一个简单的云存储服务,提供了最精简的功能,但用...
Further Readings• Amazon AWS S3 Developer Guide (http://docs.amazonwebservices.com/AmazonS3/latest/dev/Welcome.html?r=3378...
Homework (1)• Install a Dropbox on your computer and Play with it;• Look into its local SQLite on how Dropbox segments  do...
Homework (2)• What are the differences in objects’ meta data   structures and organizations implementation between   RockS...
Upcoming SlideShare
Loading in …5
×

How to Build Cloud Storage Service Systems

1,689 views

Published on

RockStor vs. S3.
uDrop vs. Dropbox
在北航云计算公开课的演讲

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,689
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

How to Build Cloud Storage Service Systems

  1. 1. How To BuildCloud Storage Services 张卫平 (Simon Zhang) with the team of 武汉播思科技有限公司 (Hanborq Inc) June 2012
  2. 2. About me• Simon Zhang 张卫平, CTO 武汉播思科技有限公司 (Hanborq Inc.) simon.zhang@gmail.com @seymourz
  3. 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. 4. Typical Cloud Storage Services• Amazon AW3 S3• Google AppEngine Cloud Storage• Dropbox• Instagram• Pinterest
  5. 5. RockStor 对象云存储系统 基于Hadoop生态系统实现 提供S3-Like Rest-API Open Sourced (http://github.com/hanborq/rockstor/)
  6. 6. RockStor:引言什么是对象存储系统? 对象(Object)是对象存储的基本单元,每个Object是数据和数据属 性集的综合体,数据属性可由系统用户自由扩充。 对象存储系统是对象存储的载体,用户可通过对象存储系统完成对象 的读写操作。 用户通过对象存储系统保存数据的典型数据类型包括: 多媒体,音乐,图片 视频监控文件 电话录音文件 压缩log文件 备份文件 操作系统的镜像 …… Slide 6
  7. 7. RockStor:引言设计对象存储系统面临的问题 功能 数据的组织 对象存储系统需要合理组织对象数据在分布式文件系统上的存储结构,以满足生产系统 中大量随机读写对系统性能带来的挑战。 元数据的组织 合适的元数据存储引擎以及正确的Schema设计能使元数据的访问更加高效,此处的元数 据既包括对象本身的元数据又包括对象的存储信息。 性能 吞吐 对象存储系统需要满足在高并发访问下的稳定性能,无论是元数据还是数据的访问都不 能成为系统性能的瓶颈。 稳定性 系统的性能不能随着系统运行时间的增长而下降,可靠稳定的系统实现应能够在系统长 期运行中保持稳定,并能够应对系统硬件故障。 可扩展性 系统扩容应简单易行,性能可线性增长。 Slide 7
  8. 8. RockStor:引言为什么选择Hadoop HDFS HDFS是可靠稳定的分布式文件系统,具有高可靠,高并发等优点,且在一定条件下能够随着 系统规模的扩大实现性能的线性增长。 HBase HBase架设在HDFS之上,利用HDFS的特性保证数据的稳定可靠,HBase负责数据的组织和管理 ,在Key-Value存储之上实现松散离散的数据表结构。 ZooKeeper 实现了全局锁服务,协调管理集群内各个计算和存储资源的状态,是大规模集群内部全局数 据资源管理的绝佳工具。 MapReduce 分布式并行计算框架和数据并行处理的实现,使得对大数据的处理变得简单易行,随着计算 节点的增加,分析处理的延时会大大降低。 Hadoop生态环境的各个组件为我们实现分布式对象存储提供了基础架构。 Slide 8
  9. 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. 10. RockStor:数据管理数据存储引擎 存储在哪里? HDFS是可靠稳定的数据存储容器,具有高可靠性高可扩展性等优点,适合大数据写入和读取 ,对于大规模数据中心的部署亦提供了高可扩展性的保证。 有什么问题? HDFS并不完美,可能并不能直接使用HDFS作为底层存储引擎 1. HDFS的设计初衷只是面向大文件的文件系统(Part of Nutch); 2. 单一的NameNode设计使得整个系统的NameSpace非常有限; 3. 这不是一个实时的系统; 4. …… 如何解决? HDFS为数据的稳定可靠提供了保证,我们可以通过应用层实现封装,实现对大规模小文件的 读写操作。 HDFS是RockStor的数据存储引擎。 Slide 10
  11. 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. 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. 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. 14. RockStor:元数据管理元数据存储引擎 存储在哪里? 相对于数据存储来讲,对象的元数据更加结构化。 HBase提供了稳定可靠的Key-Value存储机制,并能够根据用户创建的Schema提供丰富的上层 表示,是可靠的结构化数据存储引擎。 HBase的顺序写入性能和随机读取性能可以满足元数据读取的需求,并能够长期可靠的提供 服务。 HBase有什么不足? HBase底层采用Key-Value存储,虽然提供了数据表的Schema描述,但其本身无法提供RDMBS 的所有功能。 HBase和HDFS一样,存在单节点失效的问题(HMaster是单节点)。 怎么处理? 在相当一部分应用中,DBMS并不需要非常强的关系型数据库的特性,就像RockStor一样,读 写性能是我们关注的关键。 HBase是RockStor的元数据存储引擎。 Slide 14
  15. 15. RockStor:元数据管理元数据存储模型User Bucket PebbleRowKey UserId RowKey BucketId RowKey PebbleIdCF CF CFBucketName1 Owner OwnerBucketName2 Etag PartPrefix…… Acl PartNum BucketId对应PebbleId是天然 Size 的映射,如: EtagRock Bucket=testBucket MimeRowKey RockId PebbleId=testbucket/pic/ MetaCF M 1.jpgCreateTime ChunkVersion ChunkId RowKey ChunkIdRetire =MD5(“testbucket/pic/ CFGarbageBytes 1.jpg”+0+(maxLong- RockIdDeletedBytes version)) ChunkOffsetCF G ChunkSizeGarbage Offset 1Garbage Offset 2…… Slide 15
  16. 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. 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. 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. 19. RockStor:系统实现系统实现 RockServer RockServer是整个系统的核心组件,实现了系统的接入管理,元数据 和数据的管理及映射; RockServer RockServer AAA, CAS Management ConsoleWeb Interface RESTful RESTful API API Service Logics Service Logics Storage StorageStorage Layout Module Module RockMaster存储和分布式 DFS DDB系统支撑层 ZooKeeper MapReduce 分布式文件系统 分布式数据库 Slide 19
  20. 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. 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. 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. 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
  24. 24. RockStor:系统实现REST Example Slide 24
  25. 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. 26. Dropbox 面向个人用户的云存储服务资源存储和分享平台基于Amazon EC2 & S3在桌面客户端、手机客户端和Web间实现资源同步(http://www.udrop.net)
  27. 27. Dropbox:引言Dropbox Dropbox是什么? Dropbox 是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务, 通过云计算实现互联网上的文件同步,用户可以存储并共享文件和文件夹。Dropbox提供免 费和收费服务,在不同操作系统下有客户端软件,并且有网页客户端。 和传统意义上的网盘有什么不同? Dropbox提供了以下这些有意义的feature:  数据在客户端本地和云端都存有备份;  每次修改都能够自动同步推送到所有客户端上;  单个文件具有多个版本,且能够恢复到之前的任何一个版本;  已删除的文件也可以恢复;  支持目录在好友间的共享,方便团队的协同操作;  …… Slide 27
  28. 28. Dropbox:功能简单!方便! 使用Dorpbox就像使用一个普通目录一样,可以拷贝、拖拽任何文件进来; 所有的Dropbox目录下的文件都会被同步到云端,并被同步同一账号的其他客户端; 同步成功后会显示同步成功的标志; 采用安全可靠的传输方式(HTTPS); 支持多种多样的客户端,在多种客户端上都能通过网络访问资源。 Slide 28
  29. 29. Dropbox:功能通过Web直接访问 非常人性化的界面设计! 无论是不是在自己的电脑旁,只有有浏览器,就能随时通过浏览器访问Dropbox上的资源。 Slide 29
  30. 30. Dropbox:功能多版本管理 Dropbox会保存文件的所有修改记录,你可以恢复到任何你需要的版本! 所有创建、删除、修改、更名操作都会被记录! Slide 30
  31. 31. Dropbox:功能随时随地记录与分享 通过手机客户端,能够将拍摄的照片同步到Dropbox。 无论身处何地,都能够将需要保存的数据、文件保存起来。 Slide 31
  32. 32. Dropbox:功能好友间的文件分享 通过Web实现目录的共享,可以邀请好友一起分享目录下的资源。 照片分享,协同工作! Slide 32
  33. 33. Dropbox:实现 Softlayer Datacenter keep alive (http) login (https) list, delete rename and sync (https) Dropbox Web ServerClient download and upload data (https) Amazon S3 & EC2 Slide 33
  34. 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. 35. Dropbox:实现同步数据到云端 客户端监测Dropbox的目录,并将新增加的文件同步到云端。 3.通知元数据服务器:要 同步新文件啦!并得到相 5.同步成功 1.Dropbox监测到了用户将 应的指令信息 一个新文件放在其目录下 4.上传一个个 Chunk数据到 EC2,S3,并记 切分 录每个Chunk的 元数据 2.Dropbox对这个新文件按 照4M大小进行切分 Slide 35
  36. 36. Dropbox:实现同步数据到云端 Dropbox对旧文件的修改采用增量上传的方式,只同步“差量”到云端。 3.通知元数据服务器:文 件被修改啦!并得到相应 6.同步成功 1.Dropbox监测到了用户目 的指令信息 录下的一个文件被修改了 5.恢复出完整文件 计算 4.只上传差量 部分到云端 Diff 2.Dropbox计算修改后的文 件与旧文件有什么不同 Slide 36
  37. 37. Dropbox:实现 同步两个客户端的数据 同一账号的两个客户端,可以通过Dropbox实现数据同步。 两个账号可以通过共享目录实现数据同步。1.客户端A同步了一个新文件 5.拼接成完整文 3.获取元数据 件,同步完成 4.同步Chunk数据 2.客户端B通过心跳得知 有了新文件需要同步 Slide 37
  38. 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. 39. Dropbox:小结小结 这是一个云存储服务 Dropbox是一个面向个人用户的云存储服务,其本身依赖了Amazon AWS等云计算和云存储平 台,对公众提供了稳定可靠的网络空间。 Dropbox是一个简单的云存储服务,提供了最精简的功能,但用户却收获了最佳的体验,在 同类产品中也是最成功的! 欢迎使用我们的uDrop www.udrop.net Slide 39
  40. 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. 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. 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 )

×