分布式存储不再依赖于传统专用硬件,大部分部署在通用服务器之上,通过软件定义的方式来实现核心存储逻辑,其优势在于:

稳定性低: 部分产品技术成熟度不够,硬件故障或系统异常场景下,存储性能易受影响。

超融合架构是一个包含计算、网络、存储的整体架构解决方案,其存储本身也是分布式存储。在超融合形态中,计算与存储是同一软件堆栈运行在通用服务器中的,其架构如图 4 所示,大多数超融合产品在其节点上会部署控制器虚拟机 CVM , CVM 会承担存储服务功能,而普通的虚拟机需与 CVM 通信才可访问数据存储。

超融合倾向于计算层和存储层可以很好耦合的设计理念,除了分布式存储的优点外,其优势还包括:

降低运维复杂度: 通过架构设计、部署、日常运维管理的简化,单一厂商可提供所有软硬件的支持。

而分布式存储的独立部署架构的优势在于资源自由调配、计算与存储层可独立部署扩展。这样来看,超融合的劣势如下:

性能问题: 计算与和存储会争抢服务器硬件资源和网络带宽,性能问题会更明显;

相比于集中式存储,分布式存储的复杂性更高,但更适应大规模的云部署场景,有必要深入了解其底层原理。分布式存储存在着独立部署和超融合的硬件架构差异,而从逻辑层面来看,不管是独立部署还是超融合架构,又主要分为分布式文件系统( DFS )和分布式键值( k-v )存储这两种存储技术。

云存储技术的复杂性还在于存储虚拟化技术,它屏蔽了数据 IO 与底层数据存储的映射与实现细节。如图 5 所示,分布式文件系统( DFS )是一种虚拟文件系统,本身有着文件目录结构特征。而 DFS 对外提供的存储单元则是由文件组成,这些文件又会被逻辑分片,再按照多数据副本分布算法分布到不同数据节点上。

基于 DFS 的云存储逻辑清晰,也有着比较广的应用范围,比如 GFS 、 HDFS 等典型应用,包括一些超融合底层存储也是基于 DFS 来实现的,但也存在着明显缺陷:

扩展性受限: 基于目录结构的文件系统,会成为 DFS 大规模扩展的瓶颈;

性能方面: 文件目录信息可以通过缓存到内存中来提高定位数据的速度,但是当文件数量达到一定量级时,硬件无法满足时,性能会急剧下降。

分布式文件系统的文件目录管理遵循着 map-reduce 的设计思路,化大为小,分而治之,再合并处理,其架构中需要元数据管理节点来协调,本质上还是一种中心化;分布式键值( k-v )存储是一种无中心化架构,解决了主节点本身的瓶颈,其架构设计思路则是均衡设计,所有节点的地位都是对等的,通过数据布局算法均衡分布在不同节点上。搜索引擎排名一致性 hash 算法和虚拟节点是一种通用做法,不同于简单散列 hash 将数据分布在一条直线上,而是采用首尾相连,将整个哈希值空间组织成一个虚拟圆环。

ceph 是一种典型基于分布式键值的存储系统,其 object 数据分布采用的是 crush 算法,是在一致性 hash 算法基础上,充分考虑多副本、故障域隔离等约束设计而来,其实现原理如图 6 所示。

与基于 DFS 的云存储相比,基于分布式 KV 的云存储可以支持更好的扩展性,但是也存在如下缺陷:

复杂度高: 基于分布式 KV 的云存储又增加了一层存储抽象,系统设计和运维复杂度都很高;

合适原则: 应与具体所处行业和应用场景相适应,考虑企业实际业务应用情况,注重成本、收益、风险三方面的平衡;

简单原则: 云存储架构框架本身具有很高的复杂度,架构设计和实际落地过程中更应注意循序渐进,化繁为简;

前瞻性原则: 应采用业界主流云存储技术,保持技术的先进性,考虑架构的扩展能力。

自顶向下方法是从云计算的整体架构出发,逐步求精,去分析设计云存储通用框架及其组成元素。该设计分析方法既需要对问题域有清晰的了解,对行业未来一段时间内的应用场景有清晰的认识,又需要能把控住求解域,对云存储技术发展和应用有深刻的认识。

自底向上方法则相反,针对实际需要解决的问题,去做云存储产品的技术选型,逐步搭建云存储架构框架,从具体到抽象。

云存储架构框架设计采用哪种方法是需要根据企业实际情况来定的,自顶向下方法需要更高的技术把控力,也需要更多的项目预算,落地前需要谋而后动,充分测试;而自底向上的方法则追求快速应用落地,但需要注意技术应用的连贯性,也需要考虑架构框架最终目标。

而以我司实际情况来看,更适合采用自低向上的方法,根据各种业务应用场景,去评估落地适合的云存储方案,降低试错成本,在不断的实践过程中,去推进云存储架构框架的演进。

不同行业、业务场景往往决定了云存储不同的应用场景,传统行业和互联网行业之间往往也有着明显差异:

核心业务应用场景: 传统行业核心业务逻辑的变化不频繁,核心系统的业务量增长是规律的,可预估的,系统架构稳定;而互联网行业来说,业务系统追求敏捷迭代,业务量起伏变化较大,系统架构从简单到复杂,要求弹性伸缩;

互联网业务应用场景: 对于传统行业来说,互联网是一种新的业务拓展渠道,是业务转型的方向,小欧视频不迷路,需要逐步试点开放的;

非结构化数据场景: 非结构化数据场景也有很大差异,在部分场景下,非结构化数据多是系统产生或收集的临时数据,一次写入多次读取,要求 IO 性能稳定,如个人网盘场景;另外一些场景下,非结构化数据要求长期存放,一次写入很少读取,逐渐成为冷数据,典型的如银行保险业务双录场景;

数据灾备与安全: 无论是传统行业还是互联网行业,都需要考虑业务连续性需求,建立数据灾备体系和敏感数据保护方案。而金融行业还有着更加严格的国家法律法规和金融监管部门要求,业务系统的 RTO 、 RPO 要求更加明确,重要、敏感数据需要安全可控,一般会审慎选择云存储的部署模式。

敏感数据情况决定了云存储的部署模式,对于涉及敏感数据较多的系统,一般采用私有部署模式;对于非敏感数据,云存储的成本往往是一个是重要的考虑点,公有云部署除了考虑数据存储费用外,也还需考虑存储流量费用。

综合考虑我司的业务应用场景,云存储排除了公有云模式,而是采用了私有部署模式。

存储访问接口对应的是云存储的功能需求,对于我司来说,包括块存储、 NAS 存储接口和对象存储 S3 接口。块存储对应于云服务器硬盘需求, NAS 存储对应于多个云服务器间的文件共享需求,对象存储 S3 接口对应于互联网类业务非结构化数据存储和冷数据归档需求。

数据存储分级可以在满足不同业务系统存储需求的基础上,降低整体云存储成本,结合我司业务情况分为:a ) . 核心业务类型系统及其数据库,需要最高的存储性能和可靠性;b ) . 其他轻量级数据库,需要较高的存储性能和可靠性;c ) . 互联网类新业务和其他非关键类应用,需要一定的存储性能和较好的扩展性;d ) . 非结构化类型业务数据,需要较高的扩展性,存储性能要求不高;e ) . 数据备份与归档,数据存储冷热分层;f ) . 开发测试系统,利旧存储。

从行业发展趋势和企业 IT 战略转型方向看,我司传统业务依然处于基础性的重要地位,这也决定了集中式存储架构将与分布式存储架构长期并存的状态。分布式存储架构主要用于新的线上业务场景,集中式 SAN 存储和 NAS 存储在传统业务场景依然占据重要地位。

最终确立了统一纳管异构存储资源,提供多种类型数据接口、面向海量数据场景的云存储架构,如图 7 所示 . 可通过引入超融合架构来构建私有云 IaaS 平台,实现 IT 基础架构云化转型,分别构建开发测试、互联网类新业务应用等超融合集群。而海量的半结构化和非结构化数据需要通过分布式对象存储来构建可弹性扩容的数据湖,采用基于策略的数据全生命周期管理,提供热、温、冷不同资源池,实现数据在不同资源池以及云平台间的流动和分层。

云存储架构设计是否合理,需要从敏感点、权衡点以及架构风险点这三个方面去评估:

敏感点对应于不同数据存储的共有的一些特性,比如存储的软硬件成本、可靠性、存储 IO 性能、架构复杂度、灵活扩展能力、资源孤岛、故障域隔离和可管理性等属性;

权衡点则是影响多个架构质量属性的敏感点,需要架构师评估取舍的部分。比如存储架构是集中式还是分布式决定了存储的架构复杂度和灵活扩展能力;存储的软硬件成本也很大程度上决定了存储的可靠性和性能;资源孤岛虽然会造成资源浪费,但合理规划好,也是故障域隔离的前提。

对于架构师来说,最需要关注的往往是架构中的风险点,是架构设计成败的关键。分布式存储架构存在着复杂度高、新技术引入风险以及版本迭代速度快等风险点;超融合架构还面临着扩展性受限、资源孤岛等风险;而传统存储架构主要风险点在于难以应对海量数据存储扩展,成本较高,与新技术的适配度也不高。

对应于我司的云存储架构设计,传统 SAN 存储性能稳定, IO 延时低,成本高,不易扩展,但适合于核心业务场景;NAS 存储性能不高,但易于使用和文件共享,成本也不高,适合于绝大多数文件共享访问场景;分布式对象存储性能一般,架构复杂度高,但可以灵活扩展,支持海量数据存储,成本低,适合于海量结构化数据存储和互联网业务场景;而超融合架构可以很好地与计算资源融合,架构简单,成本低,虽然有扩展性受限和资源孤岛问题,但结合公司业务和计算资源配比建立不同超融合集群,可以做好数据存储分级,隔离不同的故障域。

按照云存储架构设计评估,我司还需要分别引入分布式对象存储和超融合两种不同硬件架构的云存储方案。结合云存储底层存储技术的分析,分布式对象存储更适宜采用基于分布式键值存储的产品,性能需求不高,扩展性更强;超融合则倾向于基于分布式文件系统的产品,逻辑架构更加清晰,并不追求超大规模部署,而小规模部署下性能更有优势。

对于传统行业来说,开源云存储技术并不能拿来即用,是不适应不同业务系统的存储需求的。要在云存储这样的基础架构领域做到技术自主是非常困难的,也缺乏相应的技术积累、人才队伍建设和研发资源投入。因此大多数传统企业都需要选择不同厂商的云存储产品,做技术选型也就是在筛选不同厂商产品。

不同厂商的分布式存储都会有其清晰的市场定位和优势场景,其中厂商对于存储产品核心技术的把控能力是最重要的,其次是厂商的售后服务水平,当然还要看产品的定价水平。对于我司这样的中小企业来说,更倾向于跟随策略,筛选市场份额前列、有大规模的同行业落地案例的厂商产品。

在筛选出了厂商产品之后,技术层面还需要做好 POC 测试,同城约爱是真是假啊,来验证技术选型。对于云存储产品来说,选型测试还需要考虑以下六点:

业务类型决定了数据存储分级标准,数据类型决定了使用存储连接方式以及云存储产品类型等功能需求,数据容量则决定了云存储的扩展性能力要求;

对于云存储产品来说,软硬件的兼容性是一个重要指标,包括通用服务器选型、设备微码驱动版本、操作系统版本、不同虚拟化平台等的兼容性;

IO 性能也是云存储是产品是否适配业务应用场景的另一个重要考量点,相比于通用的存储性能指标数据,业务场景下的测试更有说服力;

分布式架构复杂度高,云存储的易管理性关系到运维人员是否能很好地管控云存储;