CN107888687A - 一种基于分布式存储系统的代理客户端存储加速方法及系统 - Google Patents
一种基于分布式存储系统的代理客户端存储加速方法及系统 Download PDFInfo
- Publication number
- CN107888687A CN107888687A CN201711129486.9A CN201711129486A CN107888687A CN 107888687 A CN107888687 A CN 107888687A CN 201711129486 A CN201711129486 A CN 201711129486A CN 107888687 A CN107888687 A CN 107888687A
- Authority
- CN
- China
- Prior art keywords
- read
- write
- data
- client
- agent client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于分布式存储系统的代理客户端存储加速方法及系统,通过使用内存映射和读写事务的方式,提高客户端数据的读写性能和数据安全性,减少对物理机的内存依赖。并且通过使用本发明提出的一种数据预留算法,可以较大的提升单一客户端读写的缓存命中率,进而提高单一客户端的读写性能。本发明向上层应用的单一客户端提供底层标准的POSIX的读写接口,向上兼容所有的块,对象,文件存储接口使用。
Description
技术领域
本发明属于计算机领域,特别涉及一种基于分布式存储系统的代理客户端存储加速方法及系统。
背景技术
由于时代的发展,信息量的巨增,大数据时代已经到来。为了应对海量数据的存储,传统的存储方式已经不能再满足业务和用户的要求。为了满足海量数据的存储,新兴的分布式存储解决方案,由于其存储可以自动伸缩,自动数据修复,支持PB甚至EB级别的海量存储,因此受到了很用厂商和用户的青睐。但是目前的分布式存储的架构,都是基于客户端和服务器的模式。对于所有的读写流程都要经过客户端向远端服务器发送读写请求,在远端服务器得到应答后才返回。这种客户端和服务器的架构方式对于网络的要求比较高,受制于网络的带宽和远端服务器的存储能力。因此,与传统的集中式存储服务相比,有一定的性能损坏。
为了解决上述提到的性能损耗的问题,目前一些厂商提供了一种基于内存的客户端加速技术。但是,这种客户端的加速技术,没有任何数据安全性的保证,对于系统掉电的情况,完全依赖于底层硬件的掉电保护,否则就有数据丢失的风险。并且,其缓存的容量还受制于内存的容量的限制,在大量读写的情况下,其性能成线性下降。而且,目前的解决技术,主要主要针对单一的接口,并没有对所有的存储接口提供一种通用的好的解决方案。
例如:中国专利公开号为CN106874459A,名称为流式数据存储方法及装置,提供了一种流数据的存储方式,其通过数据库来保存数据的存储信息。进而通过查询数据库可以快速查到数据的存储位置。对于海量数据的存储,频繁的数据库操作将是瓶颈。随着存储数据的增加,数据库表的暴涨,其读写性能,以及数据库本身的数据日志的存放,都将是其瓶颈所在。
中国专利公开号为CN106776375A,名称为一种磁盘内部的数据缓存方法及装置,提出了一种基于内存映射文件用户存储缓存的方式,通过该方式可以提升硬盘的缓存空间,通过该方式来提升所能存储的数据数量,通过缓存的数量提升来提高命中率,最后提升读写速度。该发明专利是单纯的通过增大的缓存的方式来增加命中率,没有考虑系统掉电后的数据安全,以及数据在缓存中留存的时间,一些经常不被访问的数据留在缓存中,并不会带来性能的提升;而且缓存数据量剧增时,对于缓存数据的查找,也会是性能瓶颈的所在。
中国专利公开号为CN107197050A,名称为一种分布式存储系统中文件写入的方法及系统,提出了一种针对小文件大量输入时,针对文件存储接口,通过客户端和服务器的消息交互,将小文件在客户端先写入缓存,在缓存中将小文件进行合并后在写到远程服务器。该方案只针对文件接口,而且只有在大量的小文件写入时性能才会有提升。对于对象存储和块存储,以及大文件写入没有考虑。同时,缓存的大小受制于内存的空间,写入缓存的数据不能避免系统掉电丢失的危险。每次写之前都需要客户端和服务器的交互,增加不必要的延迟和性能损耗。
综上所述,现有的分布式存储系统中,客户端进行读写操作时,存在加速瓶颈。基于内存的缓存加速,受制于本地的物理机内存限制;并且没有数据安全,数据安全依赖于物理机硬件的掉电保护;数据缓存命中率不高,单一客户端读写性能差。
发明内容
本发明提出了一种基于分布式存储系统的代理客户端存储加速方法及系统,其目的在于,克服现有技术中,现有的分布式存储系统,在单一客户进行读写的时候,存在的各种瓶颈和弊端,通过使用内存映射和读写事务的方式,提供客户端数据的读写性能和数据安全性,减少对物理机的内存依赖。
一种基于分布式存储系统的代理客户端存储加速方法,包括以下步骤:
步骤1:上层客户端经过标准POSIX读写接口将读写请求发送给代理客户端;
步骤2:对待读写数据进行哈希计算,查看待读写数据的哈希值在代理客户端的元数据中是否包含,通过元数据获取待读写数据存储位置;
代理客户端依据接收的上层客户端读写请求的待读写数据,查找上层客户端发出的待读写数据是否存在于代理客户端中的元数据中;
若存在,则利用与所述待读写数据匹配的元数据,获取所述待读写数据的存放位置,进入步骤3;
若不存在,则利用代理客户端向远端服务器发送读写请求,并将远端服务器的应答信息返回给上层客户端,若应答信息为读写请求成功,则将从远端服务器获取到的待读写数据,加载到代理客户端的缓存中,同时获取事务锁,进入步骤4,若应答信息为读写请求失败,则返回步骤1,等待下一次读写请求;
步骤3:获取事务锁;
对读操作加读共享锁,对写操作加独占的排它锁;同时,对读操作和写操作同时进行事务的原子操作,等待获取事务锁,若无法获得事务锁,则重复步骤3,直到获得事务锁,进入步骤4;
对于多线程并发访问的数据,为了保护数据的ACID(Atomicity、Consistency、Isolation、Durability)特性,所以访问前要获得事务锁。
步骤4:采用kv数据库查找更新上层客户端当前IO读写请求中的元数据信息,如果更新成功执行步骤5,如果执行失败继续执行步骤4;
同时,按照设定的刷盘周期,对代理客户端中缓存的读写请求数据进行刷盘;
所述元数据信息包括读写请求中元数据的优先级值、在代理客户端缓存中存放的位置以及读写访问次数;
所述读写请求中元数据的优先级值Qi按照以下公式计算:
其中,Ki为排序比例因子,取值范围为0到1;t为采样时间的预热间隔,取值范围为1分钟到1小时之间,用户根据使用场景和读写数据的类型动态调整;Tinput和Ttouch分别为当前待计算优先级的数据的第一次写入到本地缓存的时间和最后一次读写访问时间,Tcurrent为系统的当前时间,w和r分别为读写请求中元数据所有的写访问次数和所有的读访问次数,Wt和Rt分别为当前客户端t时间内的写IO次数和读IO次数;
用户可以在生产环境中动态调整相关的比例因子,来影响内存映射中的数据的排列方式,进而影响缓存的读写命中率。用户在实际使用中根据根据具体的业务模型来动态调整Ki值。
步骤5:代理客户端中的元数据信息和本次读写操作的代理客户端数据信息通过内存映射的方式进行保存,成功更新代理客户端元数据信息后,基于元数据查询本次读写操作的代理客户端数据存放位置;
对于上层客户端端发送的读请求,直接返回查找到数据;对于写请求,直接修改查到的数据,完成上层客户端的读写访问操作。
分配空间根据实际应用的物理服务器的硬件配置进行确定,不同的硬件服务器有不同的配置方式,一般按照5%的空间用户存放元数据,95%的空间用来存储用户数据。
加速体现在读写数据在通过共享内存映射的空间中命中的情况,直接在本地客户端读写访问就可以了,不需要到远端服务器来进行修改配置。根据不同的业务场景,针对不同的读写业务模型,例如多读少写,多写少读等,可以通过动态调整预留算法的比例因子来满足具体业务模型的需要,来提高缓存的命中率,进而提高读写性能。
进一步地,所述元数据信息采用比特位的方式存储。
节省空间,提高效率;
进一步地,按照优先级值排列,从优先级值最低的对代理客户端缓存的读写请求数据进行刷盘。
进一步地,采用布隆过滤器对待读写数据的哈希值是否存在于代理客户端的元数据中存在进行判断。
基于布隆过滤器和哈希的元数据计算查找,可以快速在海量小文件数据本地缓存时,找到用户(代理客户端)的数据。
一种基于分布式存储系统的代理客户端存储加速系统,包括:
读写请求数据管理模块,用于对上层客户端发出的读写请求数据内存映射中的分配以及内存垃圾回收;
元数据管理模块,用于管理每次读写修改的元数据以及读写请求数据的存储分配位置信息;
代理客户端读处理模块,用于处理上层客户端的读请求;
代理客户端写处理模块,用于处理上层客户端的写请求;
数据存放调整模块,用于按照优先级值从低到高的顺序存放写入缓存中的读写请求数据,同时,将读写请求数据的优先级值存储于代理客户端的元数据中;
数据刷盘模块,将经过事务写入内存映射的待读写数据进行后端的刷盘操作,将待读写数据由代理客户端刷到远端服务器;
硬盘存储模块,用作代理客户端的读写数据的缓存;
远端服务器,用于与代理客户端进行数据传输。
进一步地,当系统掉电重启时,将写入代理客户端缓存中的数据按照优先级值由高到低的顺序,重新加载至硬盘存储模块中。
进一步地,还包括哈希计算模块和布隆过滤器模块;
所述哈希计算模块用于对待读写数据进行哈希计算,所述布隆过滤器用于在代理客户端的元数据中判断待读写数据的哈希值是否存在:
如果存在,表示待读写的数据可能存在代理客户端的缓存中,进一步判断以代理客户端数据的哈希计算值作为key值是否存在代理客户端的元数据key-value数据中,如果代理客户端的元数据key-value数据中不存在,表示待读写的数据不存在代理客户端缓存中,否则,表示待读写的数据存在代理客户端缓存中;
如果不存在,表示待读写的数据不存在代理客户端缓存中。
有益效果
本发明提出了一种基于分布式存储系统的代理客户端存储加速及系统,通过使用内存映射和读写事务的方式,提高客户端数据的读写性能和数据安全性,减少对物理机的内存依赖;同时通过提出的一种数据预留算法,较大的提升单一客户端读写的缓存命中率,进而提高单一客户端的读写性能;此外,该方法能够向上层应用单一客户端提供底层标准的POSIX的读写接口,以及向上兼容所有的块,对象,文件存储接口。
1通过使用代理客户的方式提供底层标准的POSIX读写接口,向上兼容所有的块,对象,文件存储客户端,对于客户端的读写访问透明,感知不到代理客户端的存在,上层应用使用本发明所述方法时无需大的改动。
2通过内存映射的方式提供缓存,使得不在依赖本地物理机的内存,并且数据的安全性得到保障。基于事务的读写操作,以及系统掉电后,代理客户端进行数据的重新加载,保障上层应用的数据安全。
3通过内存映射的方式,减少数据在读写时,数据从用户态到内核态,内核态再到用户态的两次拷贝。并且使用本专利提出的预留算法,提高客户端读写时在本地的缓存的命中率,提高上层应用的读写性能。
4通过比特位特性的存储方式,可以节省元数据存储所占用的空间。
5代理客户端缓存没有命中的情况,直接转发请求到远端服务器。之后对于获取到的数据,重新异步加载到本地缓存。在不影响用户读写性能的情况下,提高下次随机读写的缓存命中率。
6通过本发明专利提出的预留算法,针对不同的读写业务模型,例如多读少写,多写少读等,可以通过动态调整预留算法的比例因子来满足具体业务模型的需要。
附图说明
图1为本发明所述系统的架构示意图;
图2为本发明所述方法的流程示意图;
图3为本发明所述的数据刷盘流程示意图。
具体实施方式
下面将结合附图和实施例对本发明做进一步地说明。
如图2所示,一种基于分布式存储系统的代理客户端存储加速方法,包括以下步骤:
步骤1:上层客户端经过标准POSIX读写接口将读写请求发送给代理客户端;
步骤2:依据代理客户端的元数据是否包含待读写数据,获取待读写数据存储位置;
代理客户端依据接收的上层客户端读写请求的待读写数据,查找上层客户端发出的待读写数据是否存在于代理客户端中的元数据中;
若存在,则利用与所述待读写数据匹配的元数据,获取所述待读写数据的存放位置,进入步骤3;
若不存在,则利用代理客户端向远端服务器发送读写请求,并将远端服务器的应答信息返回给上层客户端,若应答信息为读写请求成功,则将从远端服务器获取到的待读写数据,加载到代理客户端的缓存中,同时获取事务锁,进入步骤4,若应答信息为读写请求失败,则返回步骤1,等待下一次读写请求;
步骤3:获取事务锁;
对读操作加读共享锁,对写操作加独占的排它锁;同时,对读操作和写操作同时进行事务的原子操作,等待获取事务锁,若无法获得事务锁,则重复步骤3,直到获得事务锁,进入步骤4;
对于多线程并发访问的数据,为了保护数据的ACID(Atomicity、Consistency、Isolation、Durability)特性,所以访问前要获得事务锁。
步骤4:采用kv数据库查找更新上层客户端当前IO读写请求中的元数据信息,如果更新成功执行步骤5,如果执行失败继续执行步骤4;
同时,按照设定的刷盘周期,对读写请求数据进行刷盘;
所述元数据信息包括读写请求中元数据的优先级值、在代理客户端缓存中存放的位置以及读写访问次数;
所述读写请求中元数据的优先级值Qi按照以下公式计算:
其中,Ki为排序比例因子,取值范围为0到1;t为采样时间的预热间隔,取值范围为1分钟到1小时之间,用户根据使用场景和读写数据的类型动态调整;Tinput和Ttouch分别为当前待计算优先级的数据的第一次写入到本地缓存的时间和最后一次读写访问时间,Tcurrent为系统的当前时间,w和r分别为读写请求中元数据所有的写访问次数和所有的读访问次数,Wt和Rt分别为当前客户端t时间内的写IO次数和读IO次数;
用户可以在生产环境中动态调整相关的比例因子,来影响内存映射中的数据的排列方式,进而影响缓存的读写命中率。用户在实际使用中根据根据具体的业务模型来动态调整Ki值。
例如:对于多读少写的场景,可以提高K4的比例因子,提高读命中率高的数据在代理客户端的缓存中,对于多写少读的场景,可以提高K3的比例因子。对于多读少写,并且顺序读为主的场景,可以提高K2和K4的比例因子。不同的业务场景,可以在生成环境中动态调整上述比例因子的值,来提高缓存的命中率,进而提高读写性能。
步骤5:代理客户端中的元数据信息和代理客户端数据信息通过内存映射的方式进行保存,成功更新代理客户端元数据信息后,基于元数据查询本次读写操作的代理客户端数据存放位置;
对于上层客户端端发送的读请求,直接返回查找到数据;对于写请求,直接修改查到的数据,完成上层客户端的读写访问操作。
分配空间根据实际应用的物理服务器的硬件配置进行确定,不同的硬件服务器有不同的配置方式,一般按照5%的空间用户存放元数据,95%的空间用来存储用户数据。
若未成功写入,则从远端服务器获取经过刷盘操作存至远端服务器到的待读写数据,加载到代理客户端的缓存中,获取事务锁后,重复步骤5。
加速体现在读写数据在通过共享内存映射的空间中命中的情况,直接在本地客户端读写访问就可以了,不需要到远端服务器来进行修改配置。根据不同的业务场景,针对不同的读写业务模型,例如多读少写,多写少读等,可以通过动态调整预留算法的比例因子来满足具体业务模型的需要,来提高缓存的命中率,进而提高读写性能。
所述元数据信息采用比特位的方式存储,节省空间,提高效率;
按照优先级值排列,从优先级值最低的对读写请求数据进行刷盘。
对于代理客户端将数据由本地缓存刷向远端服务器的刷盘操作,如图3所示,其具体流程如下:
步骤301:由代理客户端数据刷盘模块,执行将数据由本地缓存写到到远端服务器的操作,进入步骤302;
步骤302:当数据写入到指定阈值时,代理客户端数据读写模块会唤醒睡眠的代理客户端刷盘线程;如果被唤醒执行步骤304,否则执行步骤303;
步骤303:查看后端刷盘模块的线程是否到达睡醒的时间,如果到达执行步骤304,否则执行步骤301;
步骤304:查看是否到达刷盘的门限值,如果到达刷盘的门限值,执行步骤305,否则执行步骤301;
步骤305:后端硬盘管理模块开始进行刷盘操作,刷盘数据优先值较低的数据,开始准备刷盘清理,进入步骤306;
步骤306:开始进行事务的处理,获得事务锁后开始执行步骤307,得不到继续执行步骤305;
步骤307:通过查询元数据,知道数据存储的真实位置,执行步骤308;
步骤308:将本地的客户端的数据,更新到远端的服务器上。如果执行成功执行步骤309,如果执行失败执行步骤306;
步骤309:删除数据预留中保存的此数据的相关信息,包括分配的元数据以及用户数据所在的配置,进入步骤310;
步骤310:更新用户的元数据,将此数据的元数据进行事务删除,执行成功执行步骤311。否则执行步骤306;
步骤311:更新用户的数据,将用户分配的空间进行垃圾回收,执行成功执行步骤312,否则执行步骤306;
步骤312:数据刷盘的操作全部成功,结束此次操作。
如图1所示,一种基于分布式存储系统的代理客户端存储加速系统,包括:
读写请求数据管理模块,用于对上层客户端发出的读写请求数据内存映射中的分配以及内存垃圾回收;
元数据管理模块,用于管理每次读写修改的元数据以及读写请求数据的存储分配位置信息;
代理客户端读处理模块,用于处理上层客户端的读请求;
代理客户端写处理模块,用于处理上层客户端的写请求;
数据存放调整模块,用于按照优先级值从低到高的顺序存放写入缓存中的读写请求数据,同时,将读写请求数据的优先级值存储于代理客户端的元数据中;
数据刷盘模块,将经过事务写入内存映射的待读写数据进行后端的刷盘操作,将待读写数据由代理客户端刷到远端服务器;
硬盘存储模块,用作代理客户端的读写数据的缓存;
远端服务器,用于与代理客户端进行数据传输。
当系统掉电重启时,将写入代理客户端缓存中的数据按照优先级值由高到低的顺序,重新加载至硬盘存储模块中。
该系统还包括哈希计算模块和布隆过滤器模块;
所述哈希计算模块用于对待读写数据进行哈希计算,所述布隆过滤器用于在代理客户端的元数据中判断待读写数据的哈希值是否存在:
如果存在,表示待读写的数据可能存在代理客户端的缓存中,进一步判断以代理客户端数据的哈希计算值作为key值是否存在代理客户端的元数据key-value数据中,如果代理客户端的元数据key-value数据中不存在,表示待读写的数据不存在代理客户端缓存中,否则,表示待读写的数据存在代理客户端缓存中;
如果不存在,表示待读写的数据不存在代理客户端缓存中。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (7)
1.一种基于分布式存储系统的代理客户端存储加速方法,其特征在于,包括以下步骤:
步骤1:上层客户端经过标准POSIX读写接口将读写请求发送给代理客户端;
步骤2:对待读写数据进行哈希计算,查看待读写数据的哈希值在代理客户端的元数据中是否包含,通过元数据获取待读写数据存储位置;
代理客户端依据接收的上层客户端读写请求的待读写数据,查找上层客户端发出的待读写数据的哈希值是否存在于代理客户端中的元数据中;
若存在,则利用与所述待读写数据匹配的元数据,获取所述待读写数据的存放位置,进入步骤3;
若不存在,则利用代理客户端向远端服务器发送读写请求,并将远端服务器的应答信息返回给上层客户端,若应答信息为读写请求成功,则将从远端服务器获取到的待读写数据,加载到代理客户端的缓存中,同时获取事务锁,进入步骤4,若应答信息为读写请求失败,则返回步骤1,等待下一次读写请求;
步骤3:获取事务锁;
对读操作加读共享锁,对写操作加独占的排它锁;同时,对读操作和写操作同时进行事务的原子操作,等待获取事务锁,若无法获得事务锁,则重复步骤3,直到获得事务锁,进入步骤4;
步骤4:采用kv数据库查找更新上层客户端当前IO读写请求中的元数据信息,如果更新成功执行步骤5,如果执行失败继续执行步骤4;
同时,按照设定的刷盘周期,对代理客户端中缓存的读写请求数据进行刷盘;
所述元数据信息包括读写请求中元数据的优先级值、在代理客户端缓存中存放的位置以及读写访问次数;
所述读写请求中元数据的优先级值Qi按照以下公式计算:
<mrow>
<msub>
<mi>Q</mi>
<mi>i</mi>
</msub>
<mo>=</mo>
<msub>
<mi>K</mi>
<mn>1</mn>
</msub>
<mfrac>
<mrow>
<mi>T</mi>
<mi>i</mi>
<mi>n</mi>
<mi>p</mi>
<mi>u</mi>
<mi>t</mi>
</mrow>
<mrow>
<mi>T</mi>
<mi>c</mi>
<mi>u</mi>
<mi>r</mi>
<mi>r</mi>
<mi>e</mi>
<mi>n</mi>
<mi>t</mi>
</mrow>
</mfrac>
<mo>+</mo>
<msub>
<mi>K</mi>
<mn>2</mn>
</msub>
<mfrac>
<mrow>
<mi>T</mi>
<mi>t</mi>
<mi>o</mi>
<mi>u</mi>
<mi>c</mi>
<mi>h</mi>
</mrow>
<mrow>
<mi>T</mi>
<mi>c</mi>
<mi>u</mi>
<mi>r</mi>
<mi>r</mi>
<mi>e</mi>
<mi>n</mi>
<mi>t</mi>
</mrow>
</mfrac>
<mo>+</mo>
<msub>
<mi>K</mi>
<mn>3</mn>
</msub>
<mfrac>
<mi>w</mi>
<msub>
<mi>W</mi>
<mi>t</mi>
</msub>
</mfrac>
<mo>+</mo>
<msub>
<mi>K</mi>
<mn>4</mn>
</msub>
<mfrac>
<mi>r</mi>
<msub>
<mi>R</mi>
<mi>t</mi>
</msub>
</mfrac>
<mo>,</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mn>4</mn>
</munderover>
<msub>
<mi>K</mi>
<mi>i</mi>
</msub>
<mo>=</mo>
<mn>1</mn>
<mo>,</mo>
<mn>60</mn>
<mo><</mo>
<mi>t</mi>
<mo><</mo>
<mn>600</mn>
</mrow>
其中,Ki为排序比例因子,取值范围为0到1;t为采样时间的预热间隔,取值范围为1分钟到1小时之间,用户根据使用场景和读写数据的类型动态调整;Tinput和Ttouch分别为当前待计算优先级的数据的第一次写入到本地缓存的时间和最后一次读写访问时间,Tcurrent为系统的当前时间,w和r分别为读写请求中元数据所有的写访问次数和所有的读访问次数,Wt和Rt分别为当前客户端t时间内的写IO次数和读IO次数;Ttouch为读写请求中元数据的最后一次读写访问时间;
步骤5:代理客户端中的元数据信息和本次读写操作的代理客户端数据信息通过内存映射的方式进行保存,成功更新代理客户端元数据信息后,基于元数据查询本次读写操作的代理客户端数据存放位置;
对于上层客户端端发送的读请求,直接返回查找到数据;对于写请求,直接修改查到的数据,完成上层客户端的读写访问操作。
2.根据权利要求1所述的方法,其特征在于,所述元数据信息采用比特位的方式存储。
3.根据权利要求1所述的方法,其特征在于,按照优先级值排列,从优先级值最低的对读写请求数据进行刷盘。
4.根据权利要求1-3任一项所述的方法,其特征在于,采用布隆过滤器对待读写数据的哈希值是否存在于代理客户端的元数据中进行查询。
5.一种基于分布式存储系统的代理客户端存储加速系统,其特征在于,包括:
读写请求数据管理模块,用于对上层客户端发出的读写请求数据内存映射中的分配以及内存垃圾回收;
元数据管理模块,用于管理每次读写修改的元数据以及读写请求数据的存储分配位置信息;
代理客户端读处理模块,用于处理上层客户端的读请求;
代理客户端写处理模块,用于处理上层客户端的写请求;
数据存放调整模块,用于按照优先级值从低到高的顺序存放写入缓存中的读写请求数据,同时,将读写请求数据的优先级值存储于代理客户端的元数据中;
数据刷盘模块,将经过事务写入内存映射的待读写数据进行后端的刷盘操作,将待读写数据由代理客户端刷到远端服务器;
硬盘存储模块,用作代理客户端的读写数据的缓存;
远端服务器,用于与代理客户端进行数据传输。
6.根据权利要求5所述的系统,其特征在于,当系统掉电重启时,将写入代理客户端缓存中的数据按照优先级值由高到低的顺序,重新加载至硬盘存储模块中。
7.根据权利要求5或6所述的系统,其特征在于,还包括哈希计算模块和布隆过滤器模块;
所述哈希计算模块用于对待读写数据进行哈希计算,所述布隆过滤器用于在代理客户端的元数据中判断待读写数据的哈希值是否存在:
如果存在,表示待读写的数据可能存在代理客户端的缓存中,进一步判断以代理客户端数据的哈希计算值作为key值是否存在代理客户端的元数据key-value数据中,如果代理客户端的元数据key-value数据中不存在,表示待读写的数据不存在代理客户端缓存中,否则,表示待读写的数据存在代理客户端缓存中;
如果不存在,表示待读写的数据不存在代理客户端缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711129486.9A CN107888687B (zh) | 2017-11-15 | 2017-11-15 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711129486.9A CN107888687B (zh) | 2017-11-15 | 2017-11-15 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107888687A true CN107888687A (zh) | 2018-04-06 |
CN107888687B CN107888687B (zh) | 2020-06-16 |
Family
ID=61777321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711129486.9A Active CN107888687B (zh) | 2017-11-15 | 2017-11-15 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107888687B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
CN111078144A (zh) * | 2019-11-30 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种提高自动分层效率的方法、系统、终端及存储介质 |
CN112685670A (zh) * | 2020-12-31 | 2021-04-20 | 华为技术有限公司 | 一种数据调度方法及装置 |
CN113590560A (zh) * | 2021-06-29 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种分布式系统的缓存优化方法、系统、设备和存储介质 |
CN116009949A (zh) * | 2023-03-28 | 2023-04-25 | 税友软件集团股份有限公司 | 一种数值获取方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232310A1 (en) * | 2012-03-05 | 2013-09-05 | Nec Laboratories America, Inc. | Energy efficiency in a distributed storage system |
CN103744975A (zh) * | 2014-01-13 | 2014-04-23 | 锐达互动科技股份有限公司 | 基于分布式文件的高效缓存服务器 |
CN103885728A (zh) * | 2014-04-04 | 2014-06-25 | 华中科技大学 | 一种基于固态盘的磁盘缓存系统 |
CN103902348A (zh) * | 2012-12-25 | 2014-07-02 | 华为技术有限公司 | 一种虚拟化环境下用户数据的读写方法、系统及物理机 |
CN104158863A (zh) * | 2014-08-02 | 2014-11-19 | 成都致云科技有限公司 | 基于事务级别全程高速缓冲的云存储机制 |
CN105739924A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 基于缓存集群的缓存方法和系统 |
-
2017
- 2017-11-15 CN CN201711129486.9A patent/CN107888687B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232310A1 (en) * | 2012-03-05 | 2013-09-05 | Nec Laboratories America, Inc. | Energy efficiency in a distributed storage system |
CN103902348A (zh) * | 2012-12-25 | 2014-07-02 | 华为技术有限公司 | 一种虚拟化环境下用户数据的读写方法、系统及物理机 |
CN103744975A (zh) * | 2014-01-13 | 2014-04-23 | 锐达互动科技股份有限公司 | 基于分布式文件的高效缓存服务器 |
CN103885728A (zh) * | 2014-04-04 | 2014-06-25 | 华中科技大学 | 一种基于固态盘的磁盘缓存系统 |
CN104158863A (zh) * | 2014-08-02 | 2014-11-19 | 成都致云科技有限公司 | 基于事务级别全程高速缓冲的云存储机制 |
CN105739924A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 基于缓存集群的缓存方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
US11403227B2 (en) | 2018-09-13 | 2022-08-02 | Huawei Technologies Co., Ltd. | Data storage method and apparatus, and server |
CN111078144A (zh) * | 2019-11-30 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种提高自动分层效率的方法、系统、终端及存储介质 |
CN112685670A (zh) * | 2020-12-31 | 2021-04-20 | 华为技术有限公司 | 一种数据调度方法及装置 |
CN113590560A (zh) * | 2021-06-29 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种分布式系统的缓存优化方法、系统、设备和存储介质 |
CN116009949A (zh) * | 2023-03-28 | 2023-04-25 | 税友软件集团股份有限公司 | 一种数值获取方法、装置、设备及存储介质 |
CN116009949B (zh) * | 2023-03-28 | 2023-08-29 | 税友软件集团股份有限公司 | 一种数值获取方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107888687B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107888687A (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN104899156B (zh) | 一种面向大规模社交网络的图数据存储及查询方法 | |
CN103116634B (zh) | 支持高并发缓存任务队列的系统及其异步批量操作方法 | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
US9996404B2 (en) | Message cache management for message queues | |
CN111782612B (zh) | 跨域虚拟数据空间中文件数据边缘缓存方法 | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
US20130290636A1 (en) | Managing memory | |
CN101388824B (zh) | 一种机群系统中分片存储模式下文件读取的方法及系统 | |
CN107491523A (zh) | 存储数据对象的方法及装置 | |
WO2023050712A1 (zh) | 一种深度学习业务的任务调度方法及相关装置 | |
CN110377531A (zh) | 基于日志结构的持久性内存存储引擎装置及控制方法 | |
US20200019474A1 (en) | Consistency recovery method for seamless database duplication | |
CN104123356B (zh) | 一种大数据量下提高网页响应的方法 | |
CN106648464A (zh) | 基于云存储的多节点混合块缓存数据读写方法及系统 | |
CN105426321A (zh) | 采用远程位置信息的rdma友好缓存方法 | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
KR102195839B1 (ko) | 데이터베이스 관리 시스템에서의 로그 레코드 관리를 위한 기법 | |
CN110147345A (zh) | 一种基于rdma的键值存储系统及其工作方法 | |
CN101404649B (zh) | 一种基于cache的数据处理系统及其方法 | |
CN106202459A (zh) | 虚拟化环境下的关系型数据库存储性能优化方法及系统 | |
CN107133369A (zh) | 一种基于redis过期键的分布式读共享缓存老化方法 | |
CN108614847A (zh) | 一种数据的缓存方法及系统 | |
CN103491124B (zh) | 一种对彩信数据进行处理的方法及分布式缓存系统 | |
CN108319634A (zh) | 分布式文件系统的目录访问方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |