本文来自微信公众号“twt企业IT社区”,作者/孙伟光,某金融科技公司资深集成工程师。
一、交易类数据特征与IO特点
交易数据一般指的是各个行业在业务运营过程中内部或外部事件的交易记录,多以事务数据(Transactional Data)为主,例如:销售订单、转账交易流水、通话记录等数据。有的业务同时还会产生一部分如影像票据之类的非结构化数据,这类非结构化数据来自业务流程中产生的扫描票据、保单等业务凭证,随着业务的发展,其数据量迅速增长。这类非结构化数据具有和交易数据(结构化数据)所不同的文件小、数量大、空间占用多等特点。
结构化数据存储架构一般采用共享集群架构,全共享式数据集中的紧耦合集群架构是一种既有Scale Out横向扩展能力也有Scale Up纵向扩展能力的系统架构。既支持紧耦合的联机交易处理,也能保证实时信息的真实可靠性,同时无需通过应用层跨系统的措施来保证数据和交易的一致性,而且在应用时不需要考虑跨数据源的完整性、恢复性等。因此对于应用的开发人员来说,节省了许多集成层面和管理层面的烦恼。如表1所示。
表1:交易类数据架构对比
二、交易类数据生命周期特点
日常生活中我们每个人都是数据的生产者,每天通过参与各种业务产生海量的交易业务数据,但并非所有的数据都会完整地经历整个生命周期,数据产生、传输、存储、处理、删除所经历的生命周期是由实际的业务场景所决定的。
图1:交易类数据生命周期图
如图1所示,交易产生的数据随着业务流程进入到云平台存储池的不同存储区域(例如高速闪存存储池、分布式存储池、对象存储池等),随后根据业务和管理需求,部分数据又被重新利用进入到其他存储区域,有的用来备份归档、有的用来参与大数据分析和报表、有的则用作开发测试数据,最终直至数据被删除消失。
生产数据通常被定义为三种类型:
在线数据:业务系统需要随时调用、频繁读写的热点数据。
近线数据:业务系统访问频率较低,但要求具备能够随时提供访问能力的数据。
离线数据:业务系统几乎不访问,法规要求长期保存的数据。
为实现存储数据生命周期管理,分级存储通常会分为在线存储、近线存储和离线存储3种模式,并从物理承载方式上分为以下三个级别:
1)在线存储:一般采用高端SAN架构闪存磁盘系统(高IOPS,主要是SSD固态硬盘或高速SAS盘),承载需要频繁读取、快速访问的数据及关键应用的核心生产业务数据。
2)近线存储:一般采用中低速大容量磁盘(SATA/低速SAS盘),承载访问频度较低但仍会被随机读写的数据。近线存储模式的要求是寻址迅速、传输率高,因此其对读写性能要求较低,但由于数据体量一般较大,其对容量要求较高。
3)离线存储:一般选用物理磁带,承载近线存储环境中达到一定保存时限需要进行归档的长期历史数据,以防范可能发生的数据灾难。
三、存储架构选型依据和方法论
云环境下来自于IT基础架构和业务方面诉求已经是当下构建存储架构以及存储选型的重要依据。当前,IT技术层面存在一些典型且突出的问题:例如,存储设备繁多孤立、资源利用率不高、多厂商存储设备共存、日常运维管理难度大、存储日常维护管理复杂等,管理存储往往需要通过多个控制台去管理存储,经常需要对数据或者存储进行迁移扩容。由于各个业务系统使用的都是单一存储,因此存储性能和容量也很难做出整体可靠有效的评估。
而在云环境下,业务的诉求主要体现在以下几个方面:一是存储系统难以支撑业务快速变化的要求,应对存储容量的快速增长;二是存储系统需要灵活的资源调配和资源扩展;三是存储性能需要进一步优化,以缩短业务交易处理时间;四是业务系统需要对数据进行再利用,用多重保护技术来保证业务数据可回溯性。
根据当前面临的问题和业务诉求,笔者整理了一些通用的存储选型方法论,希望给同行带来参考:
图2:存储选型方法论
如图2所示的存储选型方法论可以作为云平台存储架构选型上的参考依据,而对于交易数据存储,在云平台存储架构选型中,到底是选择分布式存储还是SAN/NAS存储,要依据存储数据服务的种类来做出判断,需要考虑以下几个问题:
1)是块存储还是文件存储?
2)对性能要求比较高的应用如OLTP,以及对存储空间有着高要求的互联网应用应该如何从应用角度去评估性能和容量?
3)通过何种技术手段来实现99.999%的高可用性,是可靠的硬件还是有效的系统管理手段?
4)如何在保障交易数据数据安全情况下实现在云环境上数据安全性、数据加密……等等。
四、构建云环境下交易类数据存储设计最佳实践
云数据中心建设目标要满足业务连续性总体要求,结构化数据一般采用高端SAN全闪存储架构。对于非结构化数据的存储架构,一般采用自建或者商业化分布式存储或NAS存储。云计算存储资源池在架构设计上要充分考虑结构化数据(数据库)和非结构化数据(影像文件)的存储需求。
在分布式存储的架构下,如果业务需求ACID,则需要从应用层面满足。应用的复杂度或带来业务处理流程的复杂度。分级存储是优化存储资源利用率和性价比的重要技术手段。
分级存储策略是提高存储资源利用率以达到性价比最大化、集约化管理的有效手段。根据数据的实时性、访问频度、存储时长等因素,从管理策略、存储介质性能两个角度出发,实现多层次、跨越不同数据生命周期的数据存储及管理,通过将访问频度较低的数据自动迁移至存储层次中较低配置的层次,释放出较高成本的高速存储空间给更频繁访问的数据,从而获得更高的性价比。分级存储策略的实现除考虑选配不同类别(SSD/SAS/SATA)磁盘的选取,还分为设备级分级存储部署及磁盘级分级存储部署。
图3:不同业务应用场景对存储架构需求特征分析
按照应用需求、数据类型原则分成若干个资源池,分别为高端SAN存储资源池、NAS存储资源池、分布式存储资源池及对象存储池。根据应用对IO的负载需求,可以将应用分成不同的类型。轻量级、可分布式的应用可整体部署在分布式存储池中,重量级、紧耦合的应用需考虑整体部署在高端SAN存储池中。对于大部分应用来说,可以将应用进行层次拆解,从不同层次来分析应用的入池需求。
图4:云平台存储资源池架构图
云平台存储资源池的架构如图4所示:
•高端SAN闪存池存储主要用来存放所有生产业务系统结构化数据
•中端存储池主要用来X86服务器虚拟化的云平台共享数据
•分布式存储用来存储所有业务系统的非结构化性数据
•NAS或者对象存储池用来存放相关的备份归档数据
以业务和应用需求为导向的存储架构规划,需考虑的要点是存储需要有很好的兼容性、高性能、数据高可用、功能丰富、管理方便等的特点。
考虑到后端存储架构整体IO性能、稳定性、组网复杂度、TCO等因素,在架构设计中OLTP应用建议选取SAN存储技术,NAS架构作为SAN的有益补充,可以实现面向文件系统级别的数据共享及传输,采用NFS/CIFS数据传输协议,适用于共享文件访问及大量并发访问非结构化数据(影像、文档等)的相关系统(保单系统、OA档案系统等),对于互联网平台大量海量非结构数据建议采用对象存储架构,通过科学合理的应用存储架构来满足未来多样复杂的实际应用需求。