发布时间:2025-11-04 19:25:17 来源:技术快报 作者:IT科技类资讯
“内存是理论研新的硬盘,硬盘是究内新的磁带”此话出自图灵奖得主Jim Gray。
一、存新前言
我理解这句话的硬的磁带意思是,我们应该把随机IO都放到内存中去,盘硬盘新而把像磁带一样的理论研顺序IO留给硬盘(这里不包括SSD)。
如果应用没有达到一定的究内级别,可能我们看上面两句话都会觉得太geek,存新然而在应用数据量日益庞大,硬的磁带动态内容比例日益增大的盘硬盘新今天,再忽视这个基本准则将会是理论研一个灾难。
今天我们谈一下这一理论在NoSQL产品中的究内展现。
二、存新实现
问题一:宕机数据丢失
我们先看一下几个杰出的硬的磁带NoSQL代表,Cassandra,盘硬盘新MongoDB,Redis。他们几乎都使用了同一种存储模式,就是WordPress模板将写操作在内存中进行,定时或按某一条件将内存中的数据直接写到磁盘上。这样做的好处是我们可以充分利用内存在随机IO上的优势,而避免了直接写磁盘带来的随机IO瓶颈:磁盘寻道时间。当然,坏处就是如果遭遇宕机等问题时,可能会丢失一些数据。
解决宕机丢数据的问题有两个方法:
1.实时记录操作日志
这时通常的做法是当一个写操作到达,系统首先会往日志文件里追加一条写记录,成功后再操作内存进行写数据操作。而由于日志文件是不断追加的,因此也就保证了不会有大量的随机IO产生。
2.Quorum NRW
这一理论是基于集群式存储的,其原理是如果集群有N个结点,那么如果我们每次写操作需要至少同步到W个结点才算成功,而每次读操作只要从R个结点读数据就一定能保证其得到正确结果(如果某一结点有此数据,既成功,如果所有R个结点都无数据,b2b信息网则说明无此数据)。而NRW之间的关系必须满足N < R + W 。其实这一理论并不难理解,我们可以将这个不等式做一下移项:R > N – W ,我们有N个结点,写的时候最少写W个才算成功,也就是W个结点有这份数据,那么N-W就是说可能没有某一份数据的最大结点数。最多可能有N-W个结点没有某一数据,那如果我们进行数据读取操作时,读到大于N-W个结点,那么必然有一个以上的结点是有这份数据的。所以要求R > N-W。
所以可能你已经想明白了,为了防止数据丢失,我们采用的实际是简单的冗余备份的方法。数据写到多台机器会比写单台机器的磁盘快吗?对。相对于直接的磁盘操作,跨网络进行内存操作可以更快。云服务器其最简单的例子就是改进的一致性hash:
