安防云存储大规模集群管理问题怎么破?
2019/7/17 11:41:07
浙江大华技术股份有限公司大数据研究院江文龙表示:针对安防行业的业务特性,云存储的以下两大技术方向需要重点突破:
1.元数据组织和框架构建,解决大规模集群管理和海量文件的问题。
整个分布式系统中需要管理的节点数成百上千台,用户的一个真实文件会被分布在多台节点上,由多台节点负责承载真实数据的写入。在读取时需要经过元数据管理服务器请求拿到数据位置信息,从而发起读取。而针对元数据请求的性能是逐级递归还是一次访问就能完成操作,是衡量整个系统性能的关键要素。
对于一个单独的大文件,是否能充分发挥读写性能,涉及拆分粒度问题。元数据服务作为核心,需要能在支持上千的节点、上万的客户端请求完成高速并发处理,这在基础的协议框架和信令交互模型上就需要考虑齐全,通过超高协议序列化和反序列化性能、可扩展的协议设计、网络框架模型、任务处理模型这些底层基础件上一层层向上,在每个环节中都做到处理。一个合理元数的组织结构可以采用类型对象存储的分桶方式,让数据hash分布,实现文件的简单管理,对于桶内数据不需要采用类似传统目录树形式进行逐级的遍历,仅需一次定位就可以完成操作。
对于文件的数据块组织管理,一方面要控制较好的粒度实现IO能充分发挥多节点多磁盘的优势,另一方面需要降低元数据的管理压力,提升管理的集群规模数和文件数量。在存储节点上存在用户的数据块被切分成一段段落在各个磁盘内,系统长期运行或者重启、掉电、字节跳变等,需要能够将节点管理的数据块和元数据中的数据块进行比较,查出差异项完成修正,对于损坏数据提早触发恢复,这就要求元数据在组织合理,能够快速的查找到对应节点的元数据信息,并在比较处理过程中不影响其他的元数据实时访问和新增。
2.明确的读写模型对提供业务使用语义,解决视频和图片不同写入和读取要求。
常见的读写并非提供一个接口就行,需要有明确的读写语义。比如文件系统提供的是文件操作语义,按open/write/read/close模式,并支持seek和修改、追加的语义;S3接口提供的是putObject/getObject接口,按照一次完成上传,上传后可以见的语义;HDFS提供的是类似文件系统的操作语义,但不支持修改。
对视频而言,应该按照文件的语义但又无需支持追加和修改,仅需支持流式的写入,并支持边写边读,避免业务层需要开大缓存或者将视频文件缓存本地才能上传。对于图片写入方式也是同理,也应支持文件流方式写入。虽然看上去图片可以一次写入一张,但是现在的图片高清化可以有1MB或者更大,仅通过设置缓存大小完成应用程序的一张图写入,会出现云存储的客户端内的内存占用过大或者写入不够平滑会存在一顿一顿的效果并引发缓存满出现图片丢失问题。在读取上,对一张图片内数据没写入完成无需可读,但是整张写入完成是要立即可读。
再从文件名角度看,由于每张图片对应一条前端的抓拍记录,因此对图片地址可以随结构化记录一起存储,对于用户来说无需关系图片地址生成方式,这意味着图片地址可以由系统返回进行生成。对于视频流存储后形成的录像文件来说,使用方可以无需记录每段录像文件名,通过云存储提供的文件名能力,按照自定义的业务逻辑生成文件名,后续按照规则进行查询即可完成录像列表或者录像文件的回放。