金天骄(中国移动通信集团浙江有限公司,浙江杭州 310030)
近年来,国内运营商高举“去IOE”大旗,对传统的IT架构进行了大刀阔斧的改革。去“I”方面,通过应用改造将系统迁移至x86 资源池,完成应用系统“去I”;通过将OLTP 型核心系统数据库迁移至一体机,非核心迁移至x86资源池,将OLAP型数据库迁移至大数据平台,完成数据库系统“去I”。去“O”方面,通过区分在线交易、联机分析和实时查询等不同场景,引入PostgreSQL、MySQL、Hadoop和Gbase等技术组件,逐步替换Oracle 数据库。去“E”方面,这些年通过大规模引入分布式存储,停止采购集中式存储,部分运营商省分公司集中式存储容量占比已降至20%以下。在分布式存储替代集中式存储的过程中,尤其是分布式存储经过多年的业务场景历练,准备向高性能、核心业务场景覆盖的关键时刻,本文对分布式存储技术进行了深入思考,分析现阶段分布式存储是否能够全面取代集中式存储,并且对未来存储的发展方向提出观点。
软件定义存储(SDS——Software-defined storage)是一种数据存储方式,使用通用的x86 设备组成分布式存储替换传统集中式存储,是一种新的高性价比的存储技术解决方案。某运营商省分公司自2015 年开始对国内几个大厂商的分布式存储产品进行功能及可靠性测试,2016 年初开始在虚拟化资源池进行小范围部署,2017 年扩大部署规模并接入重要业务系统,根据2018年的年中统计,目前分布式存储承载的核心系统包含中心化、CBOSS、CRM、统一开通等;非核心系统包含日志分析、数据稽核、统一认证和渠道管理系统等。
目前现网由H 公司和T 公司2 个厂家的分布式存储产品提供服务。在使用过程中,2 家公司的产品集群产生了相同的故障,其中最主要的3 类故障如表1所示。
表1 分布式存储产品故障表
通过故障分析总结,目前现网分布式存储存在的问题可分为集群本身的性能和软件成熟度两大类问题,再结合现状深入剖析发现这两大类问题又包含以下5个具体问题,具体如表2所示。
表2 分布式存储问题分析表
根据上述分布式存储存在的问题,结合目前分布式存储的使用现状,从性能、软件成熟度和成本估算3个维度对集中式存储和分布式存储进行了全方位的对比分析,具体如表3所示。
表3 集中式存储和分布式存储总体对比分析表
2.2.1 时延
集中式存储由控制器与磁盘柜组成,主要部件包括各类控制、数据处理芯片以及高速缓存。分布式存储系统采用可扩展的系统结构,利用多台存储服务器资源构成一个虚拟的存储设备。由于架构不同,集中式存储和分布式存储的IO 路径和时延也存在差异,通过对比发现前者的IO 写时延有较大优势,具体如表4所示。
表4 集中式存储和分布式存储时延对比表
综上所述,集中式存储由于写入环节较少,在写时延方面明显优于分布式存储。读时延方面集中式存储和分布式存储均相对较低,但通过对比发现集中式存储通过专用设备优化,在读时延上依然有一定的优势。
2.2.2 IO吞吐
IO 吞吐包括IOPS 和带宽2 项指标,集中式存储取决于硬盘的类型数量、控制器、缓存等硬件配制,而分布式存储性能取决于单个节点性能和节点数量。理论上分布式存储可通过增加节点来线性增加IO 吞吐,但在实际使用中鉴于稳定性、管理成本、时延等因素,各分布式存储厂商对于实际生产中集群规模的建议一般是20~40个节点。
a)稳定性考虑:一个资源池节点数过多,发生故障的概率也随之增加,发生故障后数据需要进行重平衡,平衡过程对系统感知影响极大。节点数增多会使集群复杂度增加,进而导致集群IO 调度开销增加,加上时延等因素导致性能提升偏离线性曲线。
b)硬件及管理成本考虑:随着集群中节点数量不断增加,存储集群的硬件成本和管理成本会随之增加,内存资源、网络资源、故障域管理复杂度都会呈几何倍数增加。
c)时延考虑:业界分布式存储的最佳实践是20~40 个节点,通过1 台48 端口标准交换机进行组网。集群规模越大,节点越多,整个集群需要横跨更多交换机,导致时延增加。
综上所述,由于集群节点数量并不能真正线性扩展,因此资源池的性能也就有了上限。比如常见的40个节点分布式存储集群性能可到50万IOPS、5 ms左右时延,高端配制可超过80 万IOPS,2 ms 左右时延。目前相同容量的主流高配集中式存储性能接近200 万IOPS、1.3 ms 左右时延。分布式存储相比集中式存储还是有一定差距的。此外,由于分布式存储的三副本特性,一份数据需要写入3 份,额外占用IO 资源,因此对于写密集型应用,分布式存储在性能上不如集中式存储。
2.2.3 数据重平衡
当存储介质磁盘出现故障损坏或进行修复时,存储软件均会进行数据重构以保证数据的多副本可靠性。数据重构周期与存储的硬件性能、重构数据量、前端业务压力有关。综合对比分析分布式存储和集中式存储在数据重构上的性能,得出如表5所示结论。
表5 集中式存储和分布式存储数据重平衡对比表
集中式存储在IT 架构中长期扮演重要角色,久经市场和时间考验;而分布式存储作为近年来的新技术产品,本身发展起步较晚,成熟度还需要不断提高,加之硬件非定制化,通用软件结合通用x86 硬件的稳定性还需要进一步验证。两者在成熟度方面的对比分析如表6所示。
表6 集中式存储和分布式存储成熟度对比表
集中式存储成本取决于控制器数量、配置规格、硬盘数量和类型,以及各种附带软件功能特性,因此单位容量成本需考虑的因素较多。同样分布式存储也取决于x86 服务器的CPU、内存、硬盘数量及类型、分布式软件特性。表7 和表8 分别是普通配置和全闪存配置的集中式存储和分布式存储价格对比。
表7 普通配置集中式存储和分布式存储价格对比
表8 全闪存配置集中式存储和分布式存储价格对比
在性能相近的基础上,分布式存储采用三副本机制保障系统可靠性,相比集中式存储整体利用率较低且需要较高的软件授权费用,仅在低性能场景中价格稍占优势,在高性能场景的全闪存配置上,分布式存储价格要略高于集中式存储。
综上所述,目前分布式存储实测结论与部分业界流行观点偏差较大,分布式存储相比集中式存储在某些方面的优势并不明显。然而,上述结论的依据为产品现阶段的实测数据,后续随着分布式存储技术的不断成熟,分布式存储软件license 的不断降低,结论也会随之发生变化。
传统集中式存储虽然有技术封闭、商务绑定等风险,但软硬一体化及成熟度高的特点使其在运维、性能、稳定性等方面有不容忽视的优势。分布式存储虽然在软硬件解耦、价格方面有优势,但目前其在性能和稳定性方面还存在着诸多不成熟之处。现阶段分布式存储需要通过升级软硬件技术和整合维护体系来解决目前遇到的问题。
由于现阶段集中式存储在时延、稳定性和软件成熟度方面有明显优势,因此较适合应用于有数据强一致性要求、高IOPS、低时延的OLTP 类交易业务场景;而分布式存储适用于海量数据、大数据块、顺序读写、时延不敏感的场景。这2类存储技术的使用建议如表9所示。
表9 集中式存储和分布式存储使用建议表
根据分布式存储在生产中遇到的问题,结合第2章中集中式存储和分布式存储的对比分析,分布式存储需要从性能和成熟度2方面不断进行优化改进。具体措施如表10所示。
表10 分布式存储优化思路表
近年来分布式存储技术的发展及广泛应用,是因为网络技术的飞速进步以及闪存SSD 盘的大量应用,解决了存储高时延和单节点IO 性能瓶颈两大问题。将来随着硬件的不断发展和分布式软件功能的不断成熟完善,相信分布式存储定会逐步从中低端存储市场走向高端存储市场。
本文建议国内运营商在现阶段扩大分布式存储使用范围,但短期内不宜完全舍弃集中式存储,尤其对于技术研发力量较弱的单位,应当根据应用场景合理规划存储类型,确保生产系统稳定运行。同时在分布式存储的日常运维过程中要加强架构管控,确保分布式存储单节点以及集群整体的性能,加强兼容性评估测试,定期升级软件版本,加紧核心技术课题攻关,培养出新一代的能创新、善思考的技术团队,加强核心能力内化,为运营商后续业务快速迭代创新奠定扎实的IT基础。