大数据背景下的分布式存储

随着人工智能、机器学习领域技术的持续进步,以及国家“新基建”战略的推进,新的技术和应用,加快了传统行业数字化转型,数据呈几何级增长。海量数据在被分析、挖掘中创造出无限价值。

互联网企业纷纷对数据存储和管理,出重金加大数据中心的建设,阿里投2000亿用于云操作系统、服务器、芯片等技术的研发事项,以应对海量数据的到来,腾讯乘胜追击出资5000亿……,存储技术是这场“数据战”中的核心问题。随着物联网、人工智能、5G的迅速发展,预测到2023年,存储架构中或40%都是分布式架构。

分布式存储架构

分布式存储最早是由谷歌提出来的,其目的是解决大规模以及高并发场景下,高效Web访问问题。

分布式存储就是将用户需要存储的数据,存储到不同的存储服务器中,利用多台存储服务器分担存储压力,将这些分散的存储空间,作为一个虚拟的数据存储设备,当用户想要获取数据时,按照规则把数据从对应的磁盘空间中取出来。简单来说,可以理解为,大量PC机通过网络互联,对外作为一个整体提供存储服务。

分布式存储的必要性

一个存储方式的优越性,在于其本身对于各种数据的存取表现,关于数据存储有这样几个点:

海量:大数据背景下,海量数据涌现,数据显示2025年全球新创数据达175ZB。
多元:文本、图片、视频等非结构化的数据,对数据存储提出考验
实时:如交通自动驾驶这样的智能网络场景,需要依赖快速实时的数据采集、分析、存储。
上云:未来将有大多数的企业会选择多云部署模式。
空间:目前只有约0.2%的数据,被用于数据分析,说明我国在数据存储方面的能力存在缺口。

分布式存储的几大提升

1、高性能
分布式存储将热点区域数据投射到高速存储中,当这些区域不再是热点区域的时候,那么系统会自动将他们移除高速存储,以此来减少反应时间。

2、支持分级存储
因为分布式存储是通过网络进行耦合连接的方式,分布式存储可以将高速存储和低速存储分开来部署。在不可预测的使用场景下或者对实时要求较高的应用情况下,这种分级存储的方式解决了提取数据延迟高,从而造成整体性能抖动的问题。

3、弹性扩展
因为网络强大的扩展性,分布式存储可以弹性扩展存储容量,理论上节点可以扩充到几千个,并且节点扩展后,旧的数据会自动的迁移到新节点,让整体负载更加均衡,避免单点过热的情况。

4、存储系统标准化
分布式存储,多采用行业标准接口进行存储。通过将异构存储资源抽象化,将操作封装成面向存储资源的操作,从而实现了存储资源的集中管理,并且能自动执行创建、回收、变更等整个存储流程。这样用户可以实现跨不同介质的进行容灾,从而降低存储采购。

5、可应对云存储和大数据的发展
移动端的存储空间有限,且在多个设备之间共享资源的需求很频繁,所以网盘、云相册等云存储流行了起来,云存储的核心其实还是后端的大规模分布式存储。大数据则更进一步,除了需要存储海量的数据,还需要通过工具对这些数据进行分析,这都离不开分布式存储。除此之外,其实互联网后端架构也和分布式存储相关,掌握了它,对于其他技术的理解也很有帮助。

分布式数据存储三要素

1、数据种类

我们需要存储的数据,通常分为三类:

结构化数据
通常是指数据之间有很强的关联性的数据,比如姓名、性别、年龄等,是由二维表结构来进行逻辑表达和实现,颜色遵循数据格式和长度规范。一般采用分布式关系数据库进行存储和查询。

半结构化数据
所谓半结构化数据,是介于结构化数据和非结构化数据之间的数据类型,它是结构化的数据,但是结构变化很大。比如HTML文档,半结构化数据大多可以采用键值对形式来表示。一般采用分布式键值系统进行存储和使用。

非结构化数据
突破了关系数据库不易改变和数据定长的限制,其特征是数据之间关联不大。文本内容、报表、视频这些都属于非结构化数据。通过ElasticSearch进行检索。

2、数据分片和数据复制

数据分片,具象的说,是将一个数据分为两个或者多个小块,分片间不共享任何的服务器资源。将数据存储到相对应的存储节点中,或者到相对应的存储节点中获取想要的数据。其好处就是可以帮助促进水平扩展,同时帮助加速查询响应的时间,降低延迟,提升用户体验。

当在某个节点出现故障时,如果这时只采用了分片技术,那这个节点的数据很可能就会丢失,所以,数据复制在分布式存储系统中是不可缺少的。实际中,在分布式存储系统中,数据分片和数据复制通常共存。

3、存储数据

针对三种不同类型的数据,有三种对应的存储方式:

分布式数据库,通过表格存储结构化数据。常用的分布式数据库有 MySQL Sharding、Microsoft SQL Azure、Alibaba OceanBase 等。

分布式键值系统,通过键值对来存储半结构化数据。常用的分布式键值系统有 Redis、Memcache 等。

分布式存储系统,通过文件、块、对象等,存储非结构化的数据。常见的分布式存储系统有 Ceph、GFS、Swift 等。

了解更多~