• 字节缓存方法总结


      在字节缓存中我们需要考虑缓存比,为了达到缓存的效果,我们需要对数据包的内容进行切分。目前学术上的切分方法如下:

      上图中的9种方法可以根据方法自身的特性分为三类。
    第一类:位置分类法,此方法按固定大小将数据切分。其方法的优势的计算开销很小,但是对数据变化很敏感。
    第二类:取样法,MODP、WINN、MAXP、SAMPLEBYTE、DYNABYTE均属于此类。由于计算指纹的时候是按字节递增取块计算,因此
    指纹的数量会很多,考虑到内存和磁盘的压力,取样法根据全局条件、局部条件、统计结果来取样数据块。
    第三类:全局缓存,MRC和PACK属于此类,此类方法按照一定的方法将数据块切分,再对切分后的数据块计算hash值并存储。
    剩下的FBC方法[6]的创新点是评估出使用频率高的块,以此来节省内存与磁盘的开销。
     
    1.FIXED
         按固定大小划分数据的最大问题对数据修改十分敏感,一旦某一个位置的数据修改后,其后所有数据的hash值均发生了变化。
     
    2.MODP 
         此方法由论文[1]于2000年提出。其系统架构如下:
    MODP的实现:
         MODP是通过指纹来找到重复的数据。 
    1. 指纹通过Rabin指纹算法计算。
    2. 对数据包计算了所有指纹之后,由于数据量巨大,我们需要取样。取样对指纹二进制表示时最后几位为0的指纹。
    3. 采用hash表来存放指纹,对相同的指纹采用FIFO的方式处理。如果查询到相同的指纹,向两边扩散比较。
    MODP的伪代码如下:
    效果分析:
         可以通过伪代码中的参数p来控制取样的数目,如果取样的数目很少的话,就会效果很差,因为大量的数据没有取样。
    如果取样很多的话,那么就会让MODP接近于FIXED方法。而且我们以全局的参数p来定义划分的条件,因此有可能很多
    区域并没有取样。
     
    3.WINN
         此方法由论文[2]提出, 此方法可以保证在一定范围的hash值中一定会取一个局部最小或局部最大的hash值。此方法的优势
    在于可以让取样均匀分布,可用于解决MODP中的大范围取样失效。
     
    4.MAXP
         在MODP和WINN中,我们计算了大量的指纹,但是很多指纹并没有被取样。MAX会选择局部数据内容的最大值而不是WINN的
    局部指纹的最大值,MAX选择出最大值后在计算指纹。此方法由论文[3]提出。
     
    5.SAMPLEBYTE 
         此方法的伪代码如下:
    对于此方法[4]使用取样的字节来设置切割点,由上图可知,取样的自己存放于SMPLETABLE数组。
    在第6行,一旦确认需要取样,就设置取样点并将i滑动p/2字节。 在离线方式下,数组SMPLETABLE是
    通过对MAXP的结果进行排序得到。在实验中验证,其方法效果并没有很大改善,原因可能是:取样出来
    字节和重复的部分并不一定有联系。
     
    6.DYNABYTE
         由于SAMPLEBYTE存在SMPLETABLE数组大小是固定和需要预先对数据进行训练这两个问题,论文[5]提出了
    DYNABYTE方法,此方法类似于SAMPLEBYTE,但是可以自适应的动态对查询表进行调整。
     
    7.MRC
         块的大小直接影响着缓存比,磁盘性能和内存压力。更小的块可能达到更好的缓存比,随之而来的是增加内存
    压力和磁盘访问量。更大的块在使用内存和磁盘方面有优势,但是缓存比就低了,因此[9]提出了MRC方法。
    如上图,MRC方法以树的方式对块进行规划,在磁盘中MPC将各层的数据均保存,这样实现的原因是:
    1. 磁盘价格因素
    2. 减少磁盘访问量  和 内存压力

    上图是MRC和其他方法做对比,SRC代表:single-resolution chunking。MRC-Small方法是指只存储最小块,以最小
    块来重建最大块。MRC-Large方法是指只存储最大块并依赖索引信息来构建最小块。
         
     
    参考文献:
    [1]《A Protocol-Independent Technique for Eliminating Redundant Network Traffic》October 2000 
    [2]  《Winnowing: Local Algorithms for Document Fingerprinting》  2003
    [3]《CONTENT-DEPENDENT CHUNKING FOR DIFFERENTIAL COMPRESSION, THE LOCAL MAXIMUM APPROACH》August 2007
    [4]《EndRE: An End-System Redundancy Elimination Service for Enterprises》 2010 
    [5]《DYNABYTE: A Dynamic Sampling Algorithm  for Redundant Content Detection》2011
    [6] 《Frequency Based Chunking for Data De-Duplication》  Aug. 2010
    [7] 《Wide-area Network Acceleration for the Developing World》 2009
  • 相关阅读:
    clientHeight和offsetHeight
    bus事件总线传值
    解决英文溢出不换行
    小程序熏染可滑动动态导航
    个人样式小结
    数组删除元素
    vue封装swiper
    大佬的接口玩玩
    Java探针技术-JVM的动态agent机制:在main函数启动之后运行agent
    Java探针技术-Instrumentation与ClassFileTransformer--字节码转换工具
  • 原文地址:https://www.cnblogs.com/lxgeek/p/4736755.html
Copyright © 2020-2023  润新知