分布式在线存储系统
分布式存储系统应该具备的能力
大数据同生活息息相关,大量数据的出现对分布式存储提出了更高的需求,具体表现为以下方面:
(1) 高可靠,这是存储系统需要满足的最关键需求,既要保证数据在读写过程中不能发生错误,同时还要保证数据进入到系统后硬件失效不会导致数据丢失。随着集群规模的增大,遇到硬件错误概率会随之变高,存储系统需要有能力保证在任何对数据做转换的时候有无缝的数据检查机制保证数据不会出错,在硬件失效后可以及时补充数据防止硬件损坏引起的数据丢失。
(2) 高可用,存储系统必须具备连续提供对外服务的能力。在系统运行过程中,软件升级、软件缺陷、供电和网络系统维护、硬件失效都有可能中断系统服务。为了实现高可用,软件方面,系统模块之间需要做到低耦合,模块内部做成高可用,保证在某个集成或者某一个模块的一批进程出现异常时系统其他组件仍然可用;硬件方面,可以根据硬件的拓扑结构来分布数据,防止某个硬件故障导致任何数据不可用,例如采用数据跨机架、跨数据中心分布等策略。
(3) 高性能,存储系统软件的实现需要释放硬件技术进步带来的性能提升。现在高速存储设备再不断降低延迟增加吞吐,如果还使用传统的TCP网络和内核的CPU调度,将不能充分发挥硬件的性能。例如现在NVMe SSD设备的写入延时小于10微秒,RDMA网络小数据包传输延时小于5微秒,如果采用传统的多线程编程技术和传统的TCP网络模型会导致软件时间消耗是硬件消耗的几倍甚至几十倍,完全体现不出硬件发展带来的技术红利。
(4) 低成本,随着云计算的蓬勃发展,数据爆炸式增长,粗放的堆设备的发展方式最终会让公司失去竞争力。存储系统在保证高可靠、高可用、高性能的前提下如何做到更低的成本会从根本上提高产品的竞争力。在存储行业一般采用的通用方法是数据编解码、分级存储等技术。
(5) 好用,存储系统面临的用户多种多样,如何能服务好这些用户是系统能否广为使用的前提。在存储系统接口上需要多种多样,传统用户使用最多的是块设备和文件系统,同时互联网新应用需要的是对象存储、分布式表格存储等形式,如何在一套系统中提供这样丰富的接口,既对存储架构的灵活性有比价高的要求,同时还需要有很好的抽象能力。
HBase
ACID 是指数据库事务正确执行的四个基本要素的缩写,其包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)。