传统银行IT基础架构对高端存储设备依赖比较严重,如果进行分布式存储改造,那么如何解决分布式存储数据一致性问题?性能如何保障?是否能够满足银行业务数据IO大并发的要求?
实际上不同的分布式存储产品对数据一致性的要求不一样,当然银行对数据一致性的要求是最高的。SmartX 在这方面做了很多工作保证数据一致性。SmartX 系统本身通过 MetaServer 和 Zookeeper 的机制保证多个副本强一致性,zookeeper 防止脑裂的情况发生;journal 日志机制可保证节点意外掉电后可通过日志回放保证数据一致性;datacheck sum 可以通过校验数据修复因硬盘故障导致的副本不一致的问题,相关的机制还有蛮多的,有机会可以深入了解。另外关于性能部分, SmartX 提供 NVMe SSD 缓存加速,冷热数据分层,充分发掘硬件性能;支持高速网络(10Gb、RDMA 25Gb 或以上),有效降低副本写入延时;支持多个节点并发访问存储。
不过需要说明的是,分布式存储目前还并不是传统高端存储的替代者,是否能满足业务要求还需要通过实际的性能数字才能评估。
1、关于数据一致性问题,由于分布式架构受限于CAP理论,即数据一致性,容错性和可用性无法同时兼顾,所以数据一致性是分布式架构中比较难解决的问题。为了保证分布式架构的可用性,在数据一致性问题上,通常会做出一定的牺牲,不会严格实行集中式架构的实时一致性的做法,因为做不到或者是成本太高,也违背了分布式架构设计的初衷。所以在数据一致性上,通常会采用最终一致性的解决方案,即不要求数据实时一致,需要从银行业务上进行分析,识别哪些业务操作是可以放宽的,哪些操作是必须保持一致的,基于“最终一致性”的原则,分析事务的优先级别,在架构设计上进行取舍。在银行系统中,交易类业务的数据完整性和一致性要求最高,而且也需要进行实施保证,而通讯类业务要求上则没有那么高,可以选择不需要支持事务的消息中间件来解决数据一致性问题。这是一种异步的信息交互方式,在网络和系统故障情况下,消息也会被持久化,在系统恢时实现数据最终一致性。当然,这只是一种解决数据一致性的方案,可以根据实际业务来进行数据一致性处理。
2、分布式存储虽然不能完美的解决数据一致性问题,但是却可以提供高性能的存储服务。由于采用分布式架构,性能是可以接近于线性增长的,在节点数量足够多的情况下,其性能甚至可以超过传统的集中存储。因为传统的集中式存储是有控制器+盘柜组成的。在盘柜数量增加的情况下,性能受控制器限制,性能是会存在瓶颈的。而分布式架构的存储不会存在这样的问题。完全可以满足银行业务IO大并发的要求。