1、云存储技术和应用提纲 存储发展历史 云存储概念和技术 云存储应用存储的发展历史 直连存储DAS 存储区域网络SAN 网络附着存储NAS 对象存储设备OSD存储发展历史-直连存储DASnDirect-Attached Storagel概念:存储设备是通过电缆(通常是SCSI接口)直接到服务器的,I/O(输入/输入)请求直接发送到存储设备。存储发展历史-直连存储DASnDirect-Attached Storagel备份和恢复:占用服务器资源,数据量越大,备份和恢复的时间就越长lCPU发展速度比存储发展速度快,磁盘阵列容量增大,IO成为瓶颈l服务器或磁盘阵列扩展都需要停业务,电信和银行无法忍受l服
2、务器SCSI插槽数量有限,存储资源和数据无法服务器之间共享存储发展历史-存储区域网络SANnStorage Area Network l概念:SAN的概念是允许存储设备和CPU(服务器)之间建立直接的高速网络(与LAN相比)连接,通过这种连接实现只受光纤线路长度限制的集中式存储。光纤交换机存储发展历史-存储区域网络SANnStorage Area Network l独立于服务器网络的高速光纤存储网,适合大数据高速处理l存储资源全局多主机动态共享l备份与恢复:不需要服务器参与lIO带宽:多个服务器可以并行访问统一存储设备l在线升级:在线增加服务器或存储设备l扩展性:光纤交换机提供很多接口,也可以
3、连接其他交换机存储发展历史-块访问存储发展历史-块访问存储发展历史-网络附着存储NASnNetwork Attached Storagel概念NAS由SUN公司在上个世纪80年代中期推出NFS开始,是一种面向用户提供文件级服务的专用数据存储设备,存储系统不再通过I/O总线附属于某个特定的服务器或客户机,而是直接通过网络接口与网络直接相连,由用户通过网络访问。存储发展历史-网络附着存储NASnNetwork Attached Storagel容易部署:不需要依赖任何其他设备,只要有一个网络端口就可以在任何能上网的设备上使用l易于使用:文件接相对块接口更容易使用l文件共享:方便多个主机共享数据l长
4、距离传输:基于IP网络l易于扩展:简单的增加NAS设备到网络中即可l低成本:相对SAN价格便宜存储发展历史-文件访问存储发展历史-文件访问文件的Inode包含多个块,为了提高大文件操作效率还会将两个或三个块组合起来提供访问。存储发展历史-本地文件系统文件/目录管理 10%工作量块管理90%工作量存储发展历史-分布式文件系统通过NFS/CIFS接口访问存储发展历史-对象存储存储发展历史-对象存储设备OSDSCSIBlock InterfaceStorage DeviceBlock I/O ManagerObject InterfaceApplicationsFile SystemUser Com
5、ponentFile SystemStorage ComponentSystem Call InterfaceCPUApplicationsFile SystemUser ComponentSystem Call InterfaceCPUStorage DeviceBlock I/O ManagerFile SystemStorage Component存储发展历史-对象存储设备OSDManagers Object-based Storage DevicesMANAGEMENTEth switchSAN Access Request DATAClient存储发展历史-对象存储vs块存储存储发展
6、历史-对象存储vs文件存储存储自治:容量扩展负载均衡备份QoS、SLA感知和数据分组预取压缩/去冗余强安全/加密Compliance、Retention、secure delete可用性、副本自治愈存储发展历史-对象定义n对象的定义lObject ID:对象唯一标示lUser Data:对象的数据lMetadata:元数据,空间管理信息lAttributes:对象属性存储发展历史总结提纲 存储发展历史 云存储概念和技术 云存储应用云存储需求云存储需求2011年全球数据量将达1.8ZB,这人类将开始进入ZB时代云存储需求 高容量:海量,且可扩展 高性能:快速的访问、定位 高可用:个别磁盘失效,甚
7、至整个中心被毁 低成本:传统的NAS、SAN技术构建大规模存储系统成本很高云存储概念和特点 云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。高可用、可扩展、按需付费BigTableGoogle App EngineMapReduceLive Services SQL Services.NET ServicesSharepoint ServicesDynamic CRM ServicesHadoopD
8、B2Xen&PowerVMWebsphereTivoli SoftwareS3SimpleDBEC2Simple QueueEBS云存储有哪些?云存储的热点 分布式文件系统(Google GFS、Hadoop HDFS。)NoSQL数据库(Google BigTable、Facebook Cassandra。)对象存储(Amazon S3)分布式块存储(Amazon EBS)分布式文件系统应用场景 Google:搜索、AppEngine、Gmail、Youtube、Map。Baidu:Hadoop HDFS搜索、数据分析 Taobao:TFS存储图片网页 Hadoop HDFS数据分析GFS-
9、需求分析l 组件失效是常态l 文件规模一般都在几个G以上l Write once read many负载模型文件写入后,基本不需要重写操作文件被大量地连续读操作,随机读很少发生l 允许大量客户端并行追加写同一个文件,追加写操作必须是原子操作l 对海量数据处理来说,带宽是稀缺资源GFS-接口(API)l 提供文件系统接口 非标准的POSIX API 仅仅提供几种最基本的操作create,delete,open,close,read,write 利用写时拷贝(copy-on-write)技术实现快照功能GFS-体系结构l文件被切割成固定大小的块(Chunk)l一个主Master,多个Shadow
10、Masterl多个Chunkserver l多clientGFS-Master设计l 主master 将所有元数据保存在内存中,实现快速访问 同时提供chunk令牌管理、孤立块垃圾回收、块迁移、副本管理功能 定期与chunkserver发送心跳消息,收集chunkserver状态 任何对元数据的写操作都会保存到日志中 元数据在一段时间内会缓存在clients中l Shadow masters Master的状态(checkpoint和log)会定期复制到shadow masters中,以保证系统的可靠性。当master失效后,系统会尝试从shadow master中读取checkpoint和l
11、og进行数据恢复,恢复周期一般为秒级 即使master失效,shadow也能提供文件的只读访问。GFS-ChunkServer设计l 在linux系统中以实体文件存放chunkl 默认放置3个chunk副本,2个在同一个机架的不同机器,1个在另外的机架 平衡访问负载 平衡存储空间 提供可用性和可靠性 l 块数据不缓存l 块大小为64MB 减少元数据,每chunk对应64Bytes元数据,2P数据需要2G内存 减少网络开销,因为client往往对一个chunk进行多次操作,所以chunkserver可以在一段时间之类保持住一个client和chunkserver之间的TCP连接 小文件容易形成访
12、问热点,解决方案:为小文件准备更多的副本GFS-client设计 client是一组供上层应用调用文件系统的API,它向master请求元数据,向client请求数据 client在有限时间内缓存元数据 client不缓存数据,因为用户请求的数据往往很大或者是流式写操作,缓存没有意义Amazon S3 概念 数据模型 接口对象存储(应用场景)Amazon S3 Facebook hystack 盛大云分布式key-value存储l各种媒体文件,如图片,音乐,视频等等;l最终用户数据的存储,比如文档,数据表格,数据文件等;l数据备份和存档,如交易数据,log数据,用户访问的数据等;阿里云l基于O
13、SS,用户可以搭建出各种多媒体分享网站、网盘、个人企业数据备份等基于大规模数据的服务。l开通赠送5GB空间,按使用付费。l提供类S3 REST API接S3存储的发展025050075010001250Q1 2006Q1 2007Q1 2008Q1 2009Q1 2010S3存储对象数量(亿)1020数据来源:http:/www.snia.orgS3简介 S3(Simple Storage Service)是Amazon推出的简单存储服务,它提供简单的Web服务接口,随时随地地在网络上存取数据,使得开发人员进行网络规模的计算更容易 S3基于高扩展性、可靠、快速、廉价的数据存储基础设施运行它自己
14、的全球站点网络S3的价格 对象Objects 存储数据的基本实体,包含 对象数据部分和元数据部分 桶Buckets 容器是对象的集合,容器可以包含子容器 一个容器可以包含多个对象和子容器 关键字Keys 桶或对象的唯一标识 示例:访问容器photos下的对象family.jpg:http:/ RESTful Request&Response云存储容器容器容器S3数据模型Objects 对象是存储在 Amazon S3上的基本实体,这一实体包含对象数据部分和元数据部分 元数据是一套描述对象名-值(name-value)对。元数据包括一些默认的元数据和标准HTTP元数据,如:最后一次修改时间和内容
15、类型等,开发人员可以在对象存储时指定自定义的元数据Buckets一个桶就是一个存储在Amazon S3上的对象的容器,每个对象都包含在一个桶内。一个桶的所有权属于创建它的AWS帐户。每个AWS帐户能一次拥有多达100个桶,桶的所有权不可转移。但是,如果一个桶是空的,它可以被删除并且名字可以重新使用。一个桶中存储对象的数量没有限制而且使用多少个桶性能并没有变化。你可以把你所有的对象都存在一个桶中也可以把他们安排在多个桶中。桶不能嵌套,也就是说,不能在桶中创建桶。例如:如果名为photos/puppy.jpg的对象存储在johnsmith桶中,那么可以用http:/ 一个关键字是一个对象在一个桶中
16、的唯一标识符。每一个Amazon S3中的对象都可以通过服务端点、桶名和关键字的组合唯一地找到例如:在 http:/ 中,“doc”是一个桶名,2006-03-01/AmazonS3.wsdl是一个关键字S3接口:RESTful API HTTP协议不仅仅可以用来进行网络传输,而且可以用以下几种API来实现所有的Web操作 PUT=heres some new info(Create)GET=give me some info(Retrieve)POST=heres some update info(Update)DELETE=delete some info(Delete)HTTP API符
17、合CRUD(Create,Retrieve,Update,and Delete)原则REST GET示例GET/Nelson HTTP/1.1Host:Date:Wed,01 Jun 2010 12:00:00 GMTAuthorization:AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=HTTP/1.1 200 OKx-amz-id-2:j5ULAWpFbJQJpukUsZ4tfXVOjVZExLtEyNTvY5fe+hHIegsN5p578JLTVpkFrpLx-amz-request-id:BE39A20848A0D52BDa
18、te:Wed,01 Jun 2010 12:00:00 GMTx-amz-meta-family:MuntzLast-Modified:Sun,1 Jan 2010 12:00:00 GMTETag:828ef3fdfa96f00ad9f27c383fc9ac7f“Content-Type:text/plainContent-Length:5Connection:closeServer:AmazonS3ha-haRequestResponseNOSQL数据库 概念 Key-value Column Document GraphyWhat is NoSQL?NoSQL=Non relationa
19、l或者Not only SQL NoSQL是相对于RDBMS的,具有以下特征 非关系 分布式 开源 水平扩展 schema-free easy replication support simple API 最终一致性 支持海量数据(Huge Data)不支持ACID NoSQL于2009年发展迅速(http:/nosql-database.org)Why NoSQL?web2.0时代,数据量激增,对数据库技术提出了新的需求:High performance 对数据库高并发读写的需求 Huge Storage 对海量数据的高效率存储和访问的需求 High Scalability&High Ava
20、ilability 对数据库的高可扩展性和高可用性的需求 Low cost 对数据库低成本的需求 传统RDBMS无法满足,而一些关系特性无用武之地却严重限制了性能:数据库事务一致性 数据库的写实时性和读实时性 复杂的SQL查询,特别是多表关联查询 NoSQL放弃关系模型,弱化RDBMS一些非必要功能,提高扩展性、可用性,实现海量存储Why NoSQL?RDBMS数据量激增,并发量大性能下降?Scaling upScaling out不可能无限制Scaling up1.Sharding会丧失RDBMS的某些特性(ACID,实时性,表join困难)2.手工Sharding是件恶心的事,不灵活在很多
21、场合,关系数据库的某些特性无用武之地,反而限制性能:1.事务强一致性2.读写实时性3.复杂的SQL查询,尤其是跨表join放弃关系型模型NoSQLNoSQL应用现状公司应用NoSQL自研/应用应用场景GoogleBigTable自研Web indexing,Google Earth,Google FinanceFacebookCassandra自研收件箱搜索AmazonDynamo自研购物车新浪Redis应用微博淘宝OceanBase自研淘宝收藏夹,逐步在其他应用上线Tair自研登录/查看商品详情/淘江湖等视觉中国MongoDB应用视觉中国网站优酷MongoDB应用在线评论业务HBase应用运
22、营数据分析及挖掘处理Tokyo Tyrant应用搜索产品Redis应用频繁修改的在线业务中国移动HandlerSocket应用飞信空间豆瓣网BeansDB自研豆瓣社区NoSQL四大家族Key-ValueDynamoRiakMemcachedRedisTokyo Cabinet/TyrantVoldemortColumnBigTableHBaseCassandraHyperTableDocumentMongoDBCouchDBGraphNeo4jHyperGraphDB1)Key-Value 数据模型:简单的键值对 典型应用:Cache 高读写的简单存储 优势:简单、读写速度快 劣势:存储数据缺
23、少结构化,只能存储Key-Value对 复杂的结构需要上层应用处理Dynamon购物车问题n不开源,公布了papern技术特征:l一致性哈希l虚节点lVector ClocklHinted HandofflAnti-entropylMerkle TreelGossipMemcachedn 用作大型网站缓存系统n开源协议:BSDn开发语言:Cn协议:memcached协议(自定义的基于TCP的文本协议)n特性:协议简单基于libevent事件处理内存存储不相互通信的分布式2)Column-Oriented 数据模型:BigTable式表格,稀疏矩阵 典型应用:海量数据存储与分析 优势:查找列速度
24、快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限,对于跨表的join性能不高3)Document-Oriented 数据模型:灵感来源于Lotus Notes,JSON-like 典型应用:Web应用 优势:数据结构要求不严格,灵活 劣势:查询性能不高,而且缺乏统一的查询语法4)Graph-Oriented 数据模型:图模型 典型应用:基于网络的应用,地理位置信息(用作GIS)、社交网络(SNS)、网络拓扑等 优势:可以利用图结构相关算法 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案提纲 存储发展历史 云存储概念和技术 云存储应用设计一个网盘系统 需求:海量用户,系统
25、用户数上千万/上亿,由少到多 系统并发访问用户数上十万 用户访问可以通过PC、手机、Pad 系统刚开始用户数少,投资有限,随着用户增加追加投资 高可靠,7*24小时不中断 设计:设计一个系统,描述由哪些部分组成,每个部分的功能是什么,可以使用哪些技术实现 分组进行,每个小组出一个代表上来分享设计一个网盘系统 提示,从下面列表中选择可能是用到的技术完成系统的设计:iOS开发技术、Android开发技术、UI交互设计技术、美工、HTTP服务端技术、xml/jason技术、负载均衡技术、分布式缓存技术、分布式文件系统、分布式对象存储(类S3)、Oracle、mySQL、BerkerlyDB、DynamoDB、虚拟机技术、Java/C+/C/Objective C、php、html、mongodb、redis、memcache、Nginx(web负载均衡)、总结 存储概念:背景需求 发展历史 文件、块、对象存储 存储技术:分布式文件系统GFS 对象存储S3 分布式数据库NoSQL 存储应用:Sina微博系统设计