节能环保物联网及智慧云服务平台应用示范工程项目建议书23页DOC23页Word下载.docx
- 文档编号:16473150
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:982.48KB
节能环保物联网及智慧云服务平台应用示范工程项目建议书23页DOC23页Word下载.docx
《节能环保物联网及智慧云服务平台应用示范工程项目建议书23页DOC23页Word下载.docx》由会员分享,可在线阅读,更多相关《节能环保物联网及智慧云服务平台应用示范工程项目建议书23页DOC23页Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
“节能环保物联网及智慧云服务平台”可广泛应用于政府、企业、家庭等各行业各类用户。
具有很强的通用性和示X性,可以在全省乃至全国X围内推广应用。
1.1云存储平台技术及系统方案
随着互联网、物联网技术和应用的高速发展,信息应用系统的数据规模也在急剧扩大,当今计量存储容量单位通常已是使用EBytes(1EB==1024PB)来计量,文件数量更是以亿为单位,传统的数据中心的高成本、数据分散存储模式已经不能满足海量数据规模的快速扩X要求。
对海量数据的高可靠、高性能、低成本的安全存储和处理已成为各行业信息化建设与发展的最基本的必要需求。
云创存储拥有的具有自主知识产权的cStor云存储技术产品。
经过不断的积累与更新,是一款软件与硬件相结合的高科技系统产品。
与国际上知名的云存储技术相比,具有极高性价比、超低功耗、高可靠、通用、安全等优势,可广泛应用于有大量数据存储需求的场合(如安防、广电、电信、互联网、物联网、银行等领域)。
1.1.1cStor系统特性
cStor系统实现了海量数据的云存储解决方案。
系统提供了高吞吐量,大容量,高可靠性的7*24小时的不间断存储服务,拥有如下重要先进特性。
超低功耗:
软硬件一体化设计,单个主板功耗已降至几瓦的数量级,处于国内外先进水平;
无限容量:
提供海量数据存储,容量无上限,根据存储数据需求,灵活增减存储节点;
灵活部署:
系统可动态伸缩,根据业务需要增加和减少存储节点,支持用户空间配额管理;
高性能:
元数据内存访问,带宽饱和利用实现了快速访问和高吞吐量的优越性能;
高可靠性:
高可靠的冗余备份机制,提供7*24小时不间断无故障存储服务;
通用性:
系统支持POSIX接口规X,与应用系统无缝集成,无需另行开发。
对于应用系统和操作本地文件系统完全一样;
高安全:
数据集中存储在云计算数据中心,数据安全统一控制,可针对用户进行访问控制,可结合云查杀等防病毒软件确保不同安全级别数据的安全;
易维护:
提供直观的系统状态监控和配置管理子系统,实时监控系统状态并进行异常告警。
1.1.2cStor系统框架
块数据存储节点:
将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每个Chunk都有一个对应的索引号(Index),数据块存储在块数据存储节点上,根据可靠性需求的不同,可设置备份块的数目,以实现在不同块数据存储节点上的冗余备份存储。
元数据管理节点:
元数据管理节点对文件名称、文件属性、数据块信息等元数据进行存储和管理。
云空间管理节点:
由一个元数据管理节点及多个块数据存储节点构成了一个云存储空间,简称云空间。
通过云空间管理节点将多个云空间虚拟为一个无限大的云数据存储空间,该节点提供针对用户端的云空间管理和分配。
用户挂载客户端:
通过用户挂载客户端实现将云空间映射到本地文件系统的目录,兼容POSIX接口,挂载后就和操作本地的文件系统一样。
配置与监控中心:
提供针对各存储节点的管理配置与状态监控告警功能。
1.1.3cStor系统关键技术
低功耗技术:
采用自主研发的低功耗主板,其功率已降至几瓦的数量级,处理国内外业界先进水平。
元数据分布式存储技术:
考虑热点数据的分布信息,通过将海量的元数据有效地分散存储在多个元数据服务器上来降低存储负载。
采用分级聚集机制来存储数据,来保证查询结果的有效性和准确性。
分析元数据多维属性信息的语义特征,将相关文件组织在相同或相近的组内,多个组构成语义R-tree结构,可实现多维数据的复合查询。
相关查询、添加/删除和更新操作可以在有限的小区域内完成,降低操作的执行代价。
低成本高可靠性技术:
针对数据存储节点主要是数据的读写访问的特性,而没有其它计算,因此设计的低功耗数据存储节点,一个主板最大能够支持16块硬盘;
从而实现硬件成本和能耗的大大降低。
针对数据块可设定备份因子数目,在不同的数据存储节点上的备份,从而实现数据的高顽存;
可针对不同目录,不同级别的数据进行不同的备份因子设置,如对可靠性级别较高的数据可将相应的备份因子设置高一些,从而达到最大的可靠性要求。
高速并发访问技术:
采用并发写入和读出分布式数据块,确保网络带宽饱和利用,确保读写访问速率。
可提供不同用户级别的带宽服务质量保证QoS,以确保高优先级应用的数据读写速率;
高速IO技术:
目前针对传统的硬盘,在万兆网卡的条件下,单用户的吞吐率理论上达到1GB/s,通过针对SSD(SolidStateDisk)固态硬盘读写IO驱动优化技术,从而实现访问存储空间时达到更高的存储读写吞吐率。
与目前的传统硬盘相较,具有低耗电、无噪音、产生热量低、耐震、稳定性高、耐低温等优点,缺点是目前价格稍高。
传统典型的硬盘驱动器只能在5到55℃X围内工作。
而大多数固态硬盘可在-10~70℃工作,一些工业级的固态硬盘还可在-40~85℃,甚至更大的温度X围下工作。
数据安全控制技术:
访问控制:
支持用户级别的数据访问认证,存储空间级别认证和目录级认证,确保数据的安全访问控制;
数据完整性:
通过上述高可靠性技术确保数据完整、可靠;
加密安全:
数据实现块级别加密存储,同时可自由结合安全加密软件、云查杀病毒软件等对数据进行最大的安全保护。
1.1.4cStor系统设计策略
元数据存储设计策略:
●为提供高速的客户端响应,元数据存储于元数据管理节点(Master)服务器的内存中,并于本机进行持久化备份;
●元数据管理节点为主备双机方式,提供高可靠不间断元数据管理服务,单机故障时可实现无缝快速切换;
●考虑大容量数据存储时文件数量多,元数据容量大的问题,系统将元数据进行分布式存储,采用多个元数据管理节点进行元数据管理;
●支持灵活的空间挂载,可根据业务划分灵活地将不同业务数据挂载到不同的分布式元数据管理节点和数据存储节点;
数据节点存储策略:
●文件数据在大于一定空间的情况被划分为多个数据块(chunk),数据块被分布存储到不同的数据节点服务器(DataNode)。
●每个块可被设置为备份一定的份数,块信息被元数据管理节点管理,数据备份时由数据节点进行串行复制到其它数据节点DataNode进行备份;
高可靠性策略:
●元数据管理节点Master为主从备份的双机高可靠实现方式;
●主从备份切换为几乎零延迟的高速切换方式,对数据操作访问可做到无影响;
●数据块在多个数据节点上进行冗余备份;
客户端访问策略:
●挂载客户端通过云空间管理节点获取云空间;
●挂载客户端与相应的云空间元数据节点Master建立通信连接和元数据操作,获得数据块节点存储信息;
●挂载客户端与相应的数据节点DataNode进行数据读写;
数据节点DataNode根据合适的备份策略向相应的其它数据节点发送块数据进行备份,参考下图:
1.1.5性能和容量支撑
元数据节点内存配置:
根据计算和测试,2.56亿文件元数据需要的内存约为80G,1600万条的元数据,Master元数据存储需要内存空间约为5G空间,可根据该参考值进行Master元数据节点个数的增减配置。
系统支撑容量:
系统存储节点可灵活伸缩,容量无上限,可根据业务需要增减数据节点或Master元数据节点。
100PB=100*1024*1024*1024MB
假定每个文件的大小为25M的小文件,则文件数约为40亿,元数据需要的内存约为1280G,若每个Master提供内存为32G,则配置40个Master元数据节点对应的云空间即可满足100PBytes的存储需求。
假定每个文件的大小为250M的较大文件,则文件数约为4亿,元数据需要的内存约为128G,若每个Master提供内存为32G,则配置4个Master元数据节点对应的云空间即可满足100PBytes的存储需求。
参见下表:
容量需求
文件大小
文件数
所需总内存
Master机器内存
Master集群数
100PBytes
25M
40亿
1280G
32G
40
250M
4亿
128G
4
对于单个Master元数据节点对应的云空间而言,文件越大支撑的容量越大。
系统吞吐速率:
经测试,单用户单客户端在千兆网卡条件下写入速率可达到100MB/秒;
理论上,单用户单客户端在万兆网卡条件下写入速率可达到1GB/秒。
1.2云数据管理平台技术及系统方案
CData是云创存储开发的基于cStor和Chubby的分布式存储系统。
互联网应用的很多数据,包括Web索引、卫星图像数据等在内的海量结构化和半结构化数据,都可以存储在CData中。
从实现上看,CData并没有什么全新的技术,但是如何选择合适的技术并将这些技术高效、巧妙地结合在一起恰恰是最大的难点。
CData在很多方面和数据库类似,但它并不是真正意义上的数据库。
下面对CData的数据模型、系统架构、实现以及它使用的一些数据库技术进行全面的介绍。
1.2.1cData设计动机与目标
云创存储设计CData的动机主要有如下三个方面。
(1)需要存储的数据种类繁多。
物联网或互联网应用需要处理的数据类型非常多。
(2)海量的服务请求。
云创存储运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的。
(3)商用数据库无法满足云创存储的需求。
一方面现有商用数据库的设计着眼点在于其通用性,根本无法满足云创存储的苛刻服务要求,而且在数量庞大的服务器上根本无法成功部署普通的商用数据库。
另一方面对于底层系统的完全掌控会给后期的系统维护、升级带来极大的便利。
CData开发团队调查了多种数据的存储需求后,确定CData设计应达到如下几个基本目标。
(1)广泛的适用性。
CData是为了满足一系列应用系统多种数据的存储需求而并非特定产品的存储要求。
(2)很强的可扩展性。
根据需要随时可以加入或撤销服务器。
(3)高可用性。
对于客户来说,有时候即使短暂的服务中断也是不能忍受的。
CData设计的重要目标之一就是确保几乎所有的情况下系统都可用。
(4)简单性。
底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来便利。
在目标确定之后,云创存储希望巧妙地结合各种数据库技术,扬长避短。
最终实现的系统也确实达到了原定的目标。
下面详细讲解CData。
1.2.2cData数据模型
CData是一个分布式多维映射表,表中的数据通过一个行关键字(RowKey)、一个列关键字(ColumnKey)以及一个时间戳(TimeStamp)进行索引。
CData对存储在其中的数据不做任何解析,一律看做字符串,具体数据结构的实现需要用户自行处理。
CData的存储逻辑可以表示为:
(row:
string,column:
string,time:
int64)→string
CData数据的存储格式如图2-12所示[8]。
图2-1CData数据模型
1.行
CData的行关键字可以是任意的字符串,但是大小不能够超过64KB。
CData和传统的关系型数据库有很大不同,它不支持一般意义上的事务,但能保证对于行的读写操作具有原子性(Atomic)。
表中数据都是根据行关键字进行排序的,排序使用的是词典序。
图2-1是CData数据模型的一个典型实例,其中.n.就是一个行关键字。
不直接存储网页地址而将其倒排是CData的一个巧妙设计。
这样做至少会带来以下两个好处。
(1)同一地址域的网页会被存储在表中的连续位置,有利于用户查找和分析。
(2)倒排便于数据压缩,可以大幅提高压缩率。
由于规模问题,单个的大表不利于数据的处理,因此CData将一个表分成了很多子表(Tablet),每个子表包含多个行。
子表是CData中数据划分和负载均衡的基本单位。
有关子表的内容在1.2.5节详细讲解。
2.列
CData并不是简单地存储所有的列关键字,而是将其组织成所谓的列族(ColumnFamily),每个族中的数据都属于同一个类型,并且同族的数据会被压缩在一起保存。
引入了列族的概念之后,列关键字就采用下述的语法规则来定义:
族名:
限定词(family:
qualifier)
族名必须有意义,限定词则可以任意选定。
在图2-1中,内容(Contents)、锚点(Anchor,就是HTML中的)都是不同的族。
而nsi.和my.look.ca则是锚点族中不同的限定词。
通过这种方式组织的数据结构清晰明了,含义也很清楚。
族同时也是CData中访问控制(AccessControl)的基本单元,也就是说访问权限的设置是在族这一级别上进行的。
3.时间戳
云创存储的很多服务比如网页检索和用户的个性化设置等都需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。
图2-1中内容列的t3、t5和t6表明其中保存了在t3、t5和t6这三个时间获取的网页。
CData中的时间戳是64位整型数,具体的赋值方式可以采取系统默认的方式,也可以用户自行定义。
为了简化不同版本的数据管理,CData目前提供了两种设置:
一种是保留最近的N个不同版本,图2-1中数据模型采取的就是这种方法,它保存最新的三个版本数据。
另一种就是保留限定时间内的所有不同版本,比如可以保存最近10天的所有不同版本数据。
失效的版本将会由CData的垃圾回收机制自动处理。
1.2.3cData系统架构
CData是在云创存储的另外三个云计算组件基础之上构建的,其基本架构如图2-2所示。
图中WorkQueue是一个分布式的任务调度器,它主要被用来处理分布式系统队列分组和任务调度,关于其实现云创存储并没有公开。
在前面已经讲过,cStor[9]是云创存储的分布式文件系统,在CData中cStor主要用来存储子表数据以及一些日志文件。
CData还需要一个锁服务的支持,CData选用了云创存储自己开发的分布式锁服务Chubby。
在CData中Chubby主要有以下几个作用。
(1)选取并保证同一时间内只有一个主服务器(MasterServer)。
(2)获取子表的位置信息。
(3)保存CData的模式信息及访问控制列表。
图2-2CData基本架构
另外在CData的实际执行过程中,云创存储的MapReduce和Sawzall也被用来改善其性能,不过需要注意的是这两个组件并不是实现CData所必需的。
CData主要由三个部分组成:
客户端程序库(ClientLibrary)、一个主服务器(MasterServer)和多个子表服务器(TabletServer),这三个部分在图2-2中都有相应的表示。
从图2-2可以看出,客户访问CData服务时,首先要利用其库函数执行Open()操作来打开一个锁(实际上就是获取了文件目录),锁打开以后客户端就可以和子表服务器进行通信了。
和许多具有单个主节点的分布式系统一样,客户端主要与子表服务器通信,几乎不和主服务器进行通信,这使得主服务器的负载大大降低。
主服务主要进行一些元数据的操作以及子表服务器之间的负载调度问题,实际的数据是存储在子表服务器上的。
1.2.4cData主服务器
主服务器的主要作用如图2-3所示。
图2-3主服务器的主要作用
当一个新的子表产生时,主服务器通过一个加载命令将其分配给一个空间足够的子表服务器。
创建新表、表合并以及较大子表的分裂都会产生一个或多个新子表。
对于前面两种,主服务器会自动检测到,因为这两个操作是由主服务器发起的,而较大子表的分裂是由子服务发起并完成的,所以主服务器并不能自动检测到,因此在分割完成之后子服务器需要向主服务发出一个通知。
由于系统设计之初就要求能达到良好的扩展性,所以主服务器必须对子表服务器的状态进行监控,以便及时检测到服务器的加入或撤销。
CData中主服务器对子表服务器的监控是通过Chubby完成的,子表服务器在初始化时都会从Chubby中得到一个独占锁。
通过这种方式所有的子表服务器基本信息被保存在Chubby中一个称为服务器目录(ServerDirectory)的特殊目录之中。
主服务器通过检测这个目录可以随时获取最新的子表服务器信息,包括目前活跃的子表服务器,以及每个子表服务器上现已分配的子表。
对于每个具体的子表服务器,主服务器会定期向其询问独占锁的状态。
如果子表服务器的锁丢失或没有回应,则此时可能有两种情况,要么是Chubby出现了问题(虽然这种概率很小,但的确存在,云创存储自己也做过相关测试),要么是子表服务器自身出现了问题。
对此主服务器首先自己尝试获取这个独占锁,如果失败说明Chubby服务出现问题,需等待Chubby服务的恢复。
如果成功则说明Chubby服务良好而子表服务器本身出现了问题。
这种情况下主服务器会中止这个子表服务器并将其上的子表全部移至其他子表服务器。
当在状态监测时发现某个子表服务器上负载过重时,主服务器会自动对其进行负载均衡操作。
基于系统出现故障是一种常态的设计理念(云创存储几乎所有的产品都是基于这个设计理念),每个主服务器被设定了一个会话时间的限制。
当某个主服务器到时退出后,管理系统就会指定一个新的主服务器,这个主服务器的启动需要经历以下四个步骤[8]。
(1)从Chubby中获取一个独占锁,确保同一时间只有一个主服务器。
(2)扫描服务器目录,发现目前活跃的子表服务器。
(3)与所有的活跃子表服务器取得联系以便了解所有子表的分配情况。
(4)通过扫描元数据表(MetadataTable),发现未分配的子表并将其分配到合适的子表服务器。
如果元数据表未分配,则首先需要将根子表(RootTablet)加入未分配的子表中。
由于根子表保存了其他所有元数据子表的信息,确保了扫描能够发现所有未分配的子表。
在成功完成以上四个步骤后主服务器就可以正常运行了。
1.2.5cData子表服务器
CData中实际的数据都是以子表的形式保存在子表服务器上的,客户一般也只和子表服务器进行通信,所以子表以及子表服务器是我们重点讲解的概念。
子表服务器上的操作主要涉及子表的定位、分配以及子表数据的最终存储问题。
其中子表分配在前面已经有了详细介绍,这里略过不讲。
在讲解其他问题之前我们首先介绍一下SSTable的概念以及子表的基本结构。
1.SSTable及子表基本结构
SSTable是云创存储为CData设计的内部数据存储格式。
所有的SSTable文件都存储在cStor上,用户可以通过键来查询相应的值,图2-4是SSTable格式的基本示意图。
图2-4SSTable结构
SSTable中的数据被划分成一个个的块(Block),每个块的大小是可以设置的,一般来说设置为64KB。
在SSTable的结尾有一个索引(Index),这个索引保存了SSTable中块的位置信息,在SSTable打开时这个索引会被加载进内存,这样用户在查找某个块时首先在内存中查找块的位置信息,然后在硬盘上直接找到这个块,这种查找方法速度非常快。
由于每个SSTable一般都不是很大,用户还可以选择将其整体加载进内存,这样查找起来会更快。
从概念上讲子表是表中一系列行的集合,它在系统中的实际组成如图2-5所示。
每个子表都是由多个SSTable以及日志(Log)文件构成。
有一点需要注意,那就是不同子表的SSTable可以共享,也就是说某些SSTable会参与多个子表的构成,而由子表构成的表则不存在子表重叠的现象。
CData中的日志文件是一种共享日志,也就是说系统并不是对子表服务器上每个子表都单独地建立一个日志文件,每个子表服务器上仅保存一个日志文件,某个子表日志只是这个共享日志的一个片段。
这样会节省大量的空间,但在恢复时却有一定的难度,因为不同的子表可能会被分配到不同的子表服务器上,一般情况下每个子表服务器都需要读取整个共享日志来获取其对应的子表日志。
云创存储为了避免这种情况出现,对日志做了一些改进。
CData规定将日志的内容按照键值进行排序,这样不同的子表服务器都可以连续读取日志文件了。
一般来说每个子表的大小在100MB到200MB之间。
每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右。
图2-5子表实际组成
2.子表地址
子表地址的查询是经常碰到的操作。
在CData系统的内部采用的是一种类似B+树的三层查询体系。
子表地址结构如图2-6所示。
所有的子表地址都被记录在元数据表中,元数据表也是由一个个的元数据子表(Metadatatablet)组成的。
根子表是元数据表中一个比较特殊的子表,它既是元数据表的第一条记录,也包含了其他元数据子表的地址,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 节能 环保 联网 智慧 服务 平台 应用 示范 工程项目 建议书 23 DOC23