CN113590560A - 一种分布式***的缓存优化方法、***、设备和存储介质 - Google Patents

一种分布式***的缓存优化方法、***、设备和存储介质 Download PDF

Info

Publication number
CN113590560A
CN113590560A CN202110732350.7A CN202110732350A CN113590560A CN 113590560 A CN113590560 A CN 113590560A CN 202110732350 A CN202110732350 A CN 202110732350A CN 113590560 A CN113590560 A CN 113590560A
Authority
CN
China
Prior art keywords
cache
read
write
data
file
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.)
Pending
Application number
CN202110732350.7A
Other languages
English (en)
Inventor
苏志恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Jinan data Technology Co ltd
Original Assignee
Inspur Jinan data Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Jinan data Technology Co ltd filed Critical Inspur Jinan data Technology Co ltd
Priority to CN202110732350.7A priority Critical patent/CN113590560A/zh
Publication of CN113590560A publication Critical patent/CN113590560A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种分布式***的缓存优化方法、***、设备和存储介质,该方法包括运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端;申请文件权限,申请成功后通过读写缓存的方式文件读写,计算读写范围对应的文件对象;在文件对象加锁成功后进行读写操作,操作完成后解锁;当缓存中待下刷数据达到阈值,申请缓存全局互斥锁,添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。基于该方法还提出了缓存优化***、设备和存储介质,通过把缓存中全局互斥锁细粒度化到对象锁,增加了对象间的并发性,提高了集群的吞吐率和读写性能。

Description

一种分布式***的缓存优化方法、***、设备和存储介质
技术领域
本发明属于分布式***存储技术领域,特别涉及一种分布式***的缓存优化方法、***、设备和存储介质。
背景技术
分布式***中,基于内存的客户端缓存实现缓存读写功能,现有技术的做法为:客户端在启动后从内存中分配固定大小的容量作为客户端读写缓存,客户端在读写文件前需要向元数据服务器申请相应的读写权限及读写缓存权限,即读文件时申请读权限和读缓存权限,写文件时申请写权限和写缓存权限。申请到读写缓存的权限后,可以把读写数据放入到客户端缓存;客户端在读写文件时按照文件对象切分成数个等份的大小,以增加文件的读写并发性;每次读写文件时按照读写的范围计算出是哪个文件对象,在客户端缓存中读写该对象,客户端缓存为确保在多线程并发的情况下数据的有效性,增加了一个全局互斥锁,缓存中的任何对象的读写都需要先获得这把锁,即先加锁。
在使用写回模式时,缓存刷新线程在写回脏数据到存储介质之前,也会先申请加锁,加锁成功后,即持有互斥锁,这时其他文件对缓存中对象的读写都会因为获取锁失败而阻塞,使读写延迟增加,限制了吞吐率;把文件切分成文件对象进行读写操作初衷是为增加读写并发性,提升读写性能,但缓存中的锁机制的串行执行影响了读写性能,违背了切分文件对象的初衷,即使是单个文件读写也会受到缓存互斥锁的影响,缓存中互斥锁的锁粒度过粗严重影响了读写性能和缓存吞吐率和利用率。
发明内容
为了解决上述技术问题,本发明提出了一种分布式***的缓存优化方法、***、设备和存储介质,把客户端缓存中的全局互斥锁细粒度化到以文件对象为粒度的对象锁,极大提高了集群的吞吐率和读写性能。
为实现上述目的,本发明采用以下技术方案:
一种分布式***的缓存优化方法,包括以下步骤:
运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理所述客户端数据;
在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在所述文件对象加锁成功后进行读写操作,操作完成后进行解锁;
当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。
进一步的,所述在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写的过程为:
当客户端读写文件时,发送消息到元数据服务器端申请读写权限和读写缓存权限,如果申请成功,则通过读写缓存的方式进行文件读写;
如果未申请成功,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
进一步的,所述发送消息到元数据服务器端申请读写权限和读写缓存权限包括:
在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;
在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
进一步的,所述计算读写范围对应的文件对象的过程为:按照读写的起始位置和数据长度通过算法计算出该范围对应的文件对象。
进一步的,所述在所述文件对象加锁成功后进行操作,操作完成后进行解锁的过程为:
对所述文件对象申请加锁,如果其他线程持有所述文件对象的锁,则等待;
在加锁成功后,增加所述文件对象的读写缓存权限的引用计数,在所述引用计数增加成功后,对所述文件对象进行读写操作,操作完成后,对所述文件对象进行解锁;
其他持有所述所述文件对象锁的线程申请到锁之后进行读写操作。
进一步的,所述当缓存中待下刷数据达到阈值包括:当缓存中的待下刷数据达到缓存总量的一半或者存留在缓存中的时间超过时间阈值。
进一步的,所述合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁包括:合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对所述文件对象读写缓存权限的引用计数进行减一操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放全局互斥锁。
本发明还提出了一种分布式***的缓存优化***,包括预备模块、第一操作模块和第二操作模块;
所述预备模块用于运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理所述客户端数据;
所述第一操作模块用于在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在所述文件对象加锁成功后进行读写操作,操作完成后进行解锁;
所述第二操作模块用于当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。
本发明还提出了一种设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现所述的方法步骤。
本发明还提出了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现方法步骤。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明提出了一种分布式***的缓存优化方法、***、设备和存储介质,该方法包括运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端数据;在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在文件对象加锁成功后进行读写操作,操作完成后进行解锁;当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。本发明把客户端缓存中的全局互斥锁细粒度化到以文件对象为粒度的对象锁,每个对象有一个对象锁,在缓存中进行对象的读写操作时,只需要获取相应对象的对象锁,而无需获取缓存全局互斥锁。只有在访问全局数据结构时,才需获取缓存全局互斥锁,大大增加了对象间的并发性,并且对象锁采用读写锁,增加了同一对象上读的并行,在高并发下客户端读写性能相比优化前提升了20%,极大提高了集群的吞吐率和读写性能。
基于本发明提出的一种分布式***的缓存优化方法,还提出了一种分布式***的缓存优化***、设备和存储介质,同样具有上述方法的技术效果,在此不做赘述。
附图说明
如图1为本发明实施例1一种分布式***的缓存优化方法流程图;
如图2为本发明实施例1一种分布式***的缓存优化***示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例1
本发明实施例1提出了一种分布式***的缓存优化方法,把客户端缓存中的全局互斥锁细粒度化到以文件对象为粒度的对象锁,每个对象有一个对象锁,在缓存中进行对象的读写操作时,只需要获取相应对象的对象锁,而无需获取缓存全局互斥锁。只有在访问全局数据结构时,才需获取缓存全局互斥锁,大大增加了对象间的并发性,并且对象锁采用读写锁,增加了同一对象上读的并行。
如图1给出了本发明实施例1一种分布式***的缓存优化方法流程图。
在步骤S101中,运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端数据。
在客户端程序启动时从内存中申请设定大小的内存空间来存放客户端缓存数据并启动相应的定时线程flusher_timer管理缓存数量。
在步骤S102中,客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写。
发送消息到元数据服务器端申请读写权限和读写缓存权限,在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
若没有申请到缓存权限,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
在步骤S103中,计算读写范围对应的文件对象。本发明中,按照读写的起始位置(offset)和数据长度(Len),即读写的范围,通过算法计算出该范围对应的文件对象。
在步骤S104中,在文件对象加锁成功后进行读写操作,操作完成后进行解锁。
对文件对象申请加锁(object_lock),如果其他线程持有文件对象的锁,则等待;
在加锁成功后,增加文件对象的读写缓存权限的引用计数(cap_ref[cb]++),表示有线程正在对文件对象进行缓存读写操作。在引用计数增加成功后,对文件对象进行读写操作,操作完成后,对文件对象进行解锁;
其他持有文件对象锁的线程申请到锁之后进行读写操作,实现了同一个文件不同对象的并发读写操作。
在步骤S105中,当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并。
缓存管理线程flusher_timer定时进行检查,当缓存中的待下刷数据达到一定阈值(缓存总大小的1/2)或存留超过一定时间(5s)后,需要下刷到存储介质时,申请缓存全局互斥锁(cacher_lock),加锁成功后,逐个对缓存中的文件对象 (file_object)加对象锁并进行对象范围内的数据合并
在步骤S106中,合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对该文件读写缓存权限的引用计数进行减一(cap_ref[bc]--)操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放(unlock)全局互斥锁cacher_lock。
通过对缓存全局互斥锁细粒度化到具体对象锁后,增加了不同文件或相同文件间对象的并发读写性能和缓存利用率,提升客户端响应能力和提升分布式***性能。
通过把客户端缓存中的全局互斥锁细粒度化到以文件对象为粒度的对象锁,在缓存中进行对象的读写操作时,只需要获取相应对象的对象锁,而无需获取缓存全局互斥锁,大大增加了对象间的并发性,并且对象锁采用读写锁,增加了同一对象上读的并行,在高并发下客户端读写性能相比优化前提升了20%,极大提高了集群的吞吐率和读写性能。
实施例2
基于本发明实施例1提出的一种分布式***的缓存优化方法,本发明实施例2还提出了一种分布式***的缓存优化***,如图2给出了本发明实施例2 一种分布式***的缓存优化***示意图,该***包括预备模块、第一操作模块和第二操作模块;
预备模块用于运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端数据;
第一操作模块用于在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在所述文件对象加锁成功后进行读写操作,操作完成后进行解锁;
第二操作模块用于当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。
其中预备模块实现的过程为:在客户端程序启动时从内存中申请设定大小的内存空间来存放客户端缓存数据并启动相应的定时线程flusher_timer管理缓存数量。
第一操作模块实现的过程为:发送消息到元数据服务器端申请读写权限和读写缓存权限,在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
若没有申请到缓存权限,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
计算读写范围对应的文件对象。本发明中,按照读写的起始位置(offset)和数据长度(Len),即读写的范围,通过算法计算出该范围对应的文件对象。
在文件对象加锁成功后进行读写操作,操作完成后进行解锁。
对文件对象申请加锁(object_lock),如果其他线程持有文件对象的锁,则等待;
在加锁成功后,增加文件对象的读写缓存权限的引用计数(cap_ref[cb]++),表示有线程正在对文件对象进行缓存读写操作。在引用计数增加成功后,对文件对象进行读写操作,操作完成后,对文件对象进行解锁;
其他持有文件对象锁的线程申请到锁之后进行读写操作,实现了同一个文件不同对象的并发读写操作。
第二操作模块实现的过程为:缓存管理线程flusher_timer定时进行检查,当缓存中的待下刷数据达到一定阈值(缓存总大小的1/2)或存留超过一定时间(5s) 后,需要下刷到存储介质时,申请缓存全局互斥锁(cacher_lock),加锁成功后,逐个对缓存中的文件对象(file_object)加对象锁并进行对象范围内的数据合并
在步骤S106中,合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对该文件读写缓存权限的引用计数进行减一(cap_ref[bc]--)操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放(unlock)全局互斥锁cacher_lock。
本发明还提出了一种设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现方法步骤如下:
在步骤S101中,运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端数据。
在客户端程序启动时从内存中申请设定大小的内存空间来存放客户端缓存数据并启动相应的定时线程flusher_timer管理缓存数量。
在步骤S102中,客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写。
发送消息到元数据服务器端申请读写权限和读写缓存权限,在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
若没有申请到缓存权限,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
在步骤S103中,计算读写范围对应的文件对象。本发明中,按照读写的起始位置(offset)和数据长度(Len),即读写的范围,通过算法计算出该范围对应的文件对象。
在步骤S104中,在文件对象加锁成功后进行读写操作,操作完成后进行解锁。
对文件对象申请加锁(object_lock),如果其他线程持有文件对象的锁,则等待;
在加锁成功后,增加文件对象的读写缓存权限的引用计数(cap_ref[cb]++),表示有线程正在对文件对象进行缓存读写操作。在引用计数增加成功后,对文件对象进行读写操作,操作完成后,对文件对象进行解锁;
其他持有文件对象锁的线程申请到锁之后进行读写操作,实现了同一个文件不同对象的并发读写操作。
在步骤S105中,当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并。
缓存管理线程flusher_timer定时进行检查,当缓存中的待下刷数据达到一定阈值(缓存总大小的1/2)或存留超过一定时间(5s)后,需要下刷到存储介质时,申请缓存全局互斥锁(cacher_lock),加锁成功后,逐个对缓存中的文件对象 (file_object)加对象锁并进行对象范围内的数据合并
在步骤S106中,合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对该文件读写缓存权限的引用计数进行减一(cap_ref[bc]--)操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放(unlock)全局互斥锁cacher_lock。
需要说明:本发明技术方案还提供了一种电子设备,包括:通信接口,能够与其它设备比如网络设备等进行信息交互;处理器,与通信接口连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的一种分布式***的缓存优化方法,而所述计算机程序存储在存储器上。当然,实际应用时,电子设备中的各个组件通过总线***耦合在一起。可理解,总线***用于实现这些组件之间的连接通信。总线***除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。本申请实施例中的存储器用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、DSP(Digital Signal Processing,即指能够实现数字信号处理技术的芯片),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的程序,结合其硬件完成前述方法的步骤。处理器执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
本发明还提出了一种可读存储介质,可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现方法步骤如下:
在步骤S101中,运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理客户端数据。
在客户端程序启动时从内存中申请设定大小的内存空间来存放客户端缓存数据并启动相应的定时线程flusher_timer管理缓存数量。
在步骤S102中,客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写。
发送消息到元数据服务器端申请读写权限和读写缓存权限,在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
若没有申请到缓存权限,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
在步骤S103中,计算读写范围对应的文件对象。本发明中,按照读写的起始位置(offset)和数据长度(Len),即读写的范围,通过算法计算出该范围对应的文件对象。
在步骤S104中,在文件对象加锁成功后进行读写操作,操作完成后进行解锁。
对文件对象申请加锁(object_lock),如果其他线程持有文件对象的锁,则等待;
在加锁成功后,增加文件对象的读写缓存权限的引用计数(cap_ref[cb]++),表示有线程正在对文件对象进行缓存读写操作。在引用计数增加成功后,对文件对象进行读写操作,操作完成后,对文件对象进行解锁;
其他持有文件对象锁的线程申请到锁之后进行读写操作,实现了同一个文件不同对象的并发读写操作。
在步骤S105中,当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并。
缓存管理线程flusher_timer定时进行检查,当缓存中的待下刷数据达到一定阈值(缓存总大小的1/2)或存留超过一定时间(5s)后,需要下刷到存储介质时,申请缓存全局互斥锁(cacher_lock),加锁成功后,逐个对缓存中的文件对象 (file_object)加对象锁并进行对象范围内的数据合并
在步骤S106中,合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对该文件读写缓存权限的引用计数进行减一(cap_ref[bc]--)操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放(unlock)全局互斥锁cacher_lock。
本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器,上述计算机程序可由处理器执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、 EPROM、EEPROM、FlashMemory、磁表面存储器、光盘、或CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的一种分布式***的缓存优化的设备和存储介质中相关部分的说明可以参见本申请实施例1提供的一种分布式***的缓存优化方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.一种分布式***的缓存优化方法,其特征在于,包括以下步骤:
运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理所述客户端数据;
在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在所述文件对象加锁成功后进行读写操作,操作完成后进行解锁;
当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。
2.根据权利要求1所述的一种分布式***的缓存优化方法,其特征在于,所述在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写的过程为:
当客户端读写文件时,发送消息到元数据服务器端申请读写权限和读写缓存权限,如果申请成功,则通过读写缓存的方式进行文件读写;
如果未申请成功,则通过直读存储介质或直写存储介质的方式进行数据读写操作。
3.根据权利要求2所述的一种分布式***的缓存优化方法,其特征在于,所述发送消息到元数据服务器端申请读写权限和读写缓存权限包括:
在读文件时,申请读权限和读缓存权限,如果申请成功,则将读取过的数据放入缓存中增加读性能;
在写文件时,申请写权限和写缓存权限,如果申请成功,则将待写入的数据写入缓存。
4.根据权利要求1所述的一种分布式***的缓存优化方法,其特征在于,所述计算读写范围对应的文件对象的过程为:按照读写的起始位置和数据长度通过算法计算出该范围对应的文件对象。
5.根据权利要求1所述的一种分布式***的缓存优化方法,其特征在于,所述在所述文件对象加锁成功后进行操作,操作完成后进行解锁的过程为:
对所述文件对象申请加锁,如果其他线程持有所述文件对象的锁,则等待;
在加锁成功后,增加所述文件对象的读写缓存权限的引用计数,在所述引用计数增加成功后,对所述文件对象进行读写操作,操作完成后,对所述文件对象进行解锁;
其他持有所述所述文件对象锁的线程申请到锁之后进行读写操作。
6.根据权利要求1所述的一种分布式***的缓存优化方法,其特征在于,所述当缓存中待下刷数据达到阈值包括:当缓存中的待下刷数据达到缓存总量的一半或者存留在缓存中的时间超过时间阈值。
7.根据权利要求6所述的一种分布式***的缓存优化方法,其特征在于,所述合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁包括:合并成功后下刷数据到存储介质,数据下刷成功后释放对象锁并对所述文件对象读写缓存权限的引用计数进行减一操作,直至缓存中所有要下刷的文件对象数据下刷到存储介质完成后释放全局互斥锁。
8.一种分布式***的缓存优化***,其特征在于,包括预备模块、第一操作模块和第二操作模块;
所述预备模块用于运行分布式***和客户端,从内存中申请内存空间缓存客户端数据,并启动缓存管理线程管理所述客户端数据;
所述第一操作模块用于在客户端申请文件读写权限和读写缓存权限,申请成功后通过读写缓存的方式进行文件读写,计算读写范围对应的文件对象;在所述文件对象加锁成功后进行读写操作,操作完成后进行解锁;
所述第二操作模块用于当缓存中待下刷数据达到阈值,缓存管理线程申请缓存全局互斥锁,互斥锁添加成功后,对文件对象加对象锁并进行对象范围内的数据合并;合并成功后下刷数据到存储介质,直到下刷完成后释放互斥锁。
9.一种设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任意一项所述的方法步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的方法步骤。
CN202110732350.7A 2021-06-29 2021-06-29 一种分布式***的缓存优化方法、***、设备和存储介质 Pending CN113590560A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110732350.7A CN113590560A (zh) 2021-06-29 2021-06-29 一种分布式***的缓存优化方法、***、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110732350.7A CN113590560A (zh) 2021-06-29 2021-06-29 一种分布式***的缓存优化方法、***、设备和存储介质

Publications (1)

Publication Number Publication Date
CN113590560A true CN113590560A (zh) 2021-11-02

Family

ID=78245066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110732350.7A Pending CN113590560A (zh) 2021-06-29 2021-06-29 一种分布式***的缓存优化方法、***、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113590560A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115951844A (zh) * 2023-03-13 2023-04-11 浪潮电子信息产业股份有限公司 分布式文件***的文件锁管理方法、设备及介质

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615373A (en) * 1993-08-26 1997-03-25 International Business Machines Corporation Data lock management in a distributed file server system determines variable lock lifetime in response to request to access data object
US20130254246A1 (en) * 2012-03-21 2013-09-26 Todd Lipcon Data processing performance enhancement in a distributed file system
CN104113587A (zh) * 2014-06-23 2014-10-22 华中科技大学 一种分布式文件***客户端元数据缓存优化方法
CN104331453A (zh) * 2014-10-30 2015-02-04 北京思特奇信息技术股份有限公司 一种分布式文件***及分布式文件***的构建方法
CN105183378A (zh) * 2015-08-31 2015-12-23 北京神州云科数据技术有限公司 自适应混合读/写缓存的方法
US20160004718A1 (en) * 2014-07-02 2016-01-07 Panzura, Inc. Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem
CN106021381A (zh) * 2016-05-11 2016-10-12 北京搜狐新媒体信息技术有限公司 一种云存储服务***的数据访问/存储方法及装置
CN106446037A (zh) * 2016-08-31 2017-02-22 南威软件股份有限公司 一种基于分布式锁实现Redis与MYSQL数据一致性的方法
CN106469150A (zh) * 2015-08-14 2017-03-01 阿里巴巴集团控股有限公司 文件读写方法、装置和***
CN106776798A (zh) * 2016-11-23 2017-05-31 深圳市中博睿存科技有限公司 一种集群文件***基于客户端的可传播缓存方法
CN106897440A (zh) * 2017-02-28 2017-06-27 郑州云海信息技术有限公司 一种分布式文件***文件读写处理方法
WO2017107948A1 (zh) * 2015-12-23 2017-06-29 中兴通讯股份有限公司 文件的写聚合、读聚合方法及***和客户端
CN107632945A (zh) * 2016-07-18 2018-01-26 大唐移动通信设备有限公司 一种共享内存的数据读写方法和装置
CN107832423A (zh) * 2017-11-13 2018-03-23 中山大学 一种用于分布式文件***的文件读写方法
CN107888687A (zh) * 2017-11-15 2018-04-06 长沙证通云计算有限公司 一种基于分布式存储***的代理客户端存储加速方法及***
CN109597769A (zh) * 2018-12-04 2019-04-09 郑州云海信息技术有限公司 一种缓存数据的写回方法、***、装置及可读存储介质
CN110750507A (zh) * 2019-09-30 2020-02-04 华中科技大学 面向dfs的全局命名空间下的客户端持久缓存方法及***
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112099977A (zh) * 2020-09-30 2020-12-18 浙江工商大学 一种分布式跟踪***的实时数据分析引擎
CN112115515A (zh) * 2020-10-29 2020-12-22 苏州浪潮智能科技有限公司 一种数据保护方法、装置及电子设备和存储介质
CN112416556A (zh) * 2020-11-23 2021-02-26 西安西热电站信息技术有限公司 一种数据读写优先平衡方法、***、装置及存储介质
CN112650720A (zh) * 2020-12-18 2021-04-13 深圳市佳创视讯技术股份有限公司 一种缓存***管理方法、装置及计算机可读存储介质
CN113031864A (zh) * 2021-03-19 2021-06-25 上海众源网络有限公司 一种数据处理方法、装置、电子设备及存储介质

Patent Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615373A (en) * 1993-08-26 1997-03-25 International Business Machines Corporation Data lock management in a distributed file server system determines variable lock lifetime in response to request to access data object
US20130254246A1 (en) * 2012-03-21 2013-09-26 Todd Lipcon Data processing performance enhancement in a distributed file system
CN104113587A (zh) * 2014-06-23 2014-10-22 华中科技大学 一种分布式文件***客户端元数据缓存优化方法
US20160004718A1 (en) * 2014-07-02 2016-01-07 Panzura, Inc. Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem
CN104331453A (zh) * 2014-10-30 2015-02-04 北京思特奇信息技术股份有限公司 一种分布式文件***及分布式文件***的构建方法
CN106469150A (zh) * 2015-08-14 2017-03-01 阿里巴巴集团控股有限公司 文件读写方法、装置和***
CN105183378A (zh) * 2015-08-31 2015-12-23 北京神州云科数据技术有限公司 自适应混合读/写缓存的方法
WO2017107948A1 (zh) * 2015-12-23 2017-06-29 中兴通讯股份有限公司 文件的写聚合、读聚合方法及***和客户端
CN106021381A (zh) * 2016-05-11 2016-10-12 北京搜狐新媒体信息技术有限公司 一种云存储服务***的数据访问/存储方法及装置
CN107632945A (zh) * 2016-07-18 2018-01-26 大唐移动通信设备有限公司 一种共享内存的数据读写方法和装置
CN106446037A (zh) * 2016-08-31 2017-02-22 南威软件股份有限公司 一种基于分布式锁实现Redis与MYSQL数据一致性的方法
CN106776798A (zh) * 2016-11-23 2017-05-31 深圳市中博睿存科技有限公司 一种集群文件***基于客户端的可传播缓存方法
CN106897440A (zh) * 2017-02-28 2017-06-27 郑州云海信息技术有限公司 一种分布式文件***文件读写处理方法
CN107832423A (zh) * 2017-11-13 2018-03-23 中山大学 一种用于分布式文件***的文件读写方法
CN107888687A (zh) * 2017-11-15 2018-04-06 长沙证通云计算有限公司 一种基于分布式存储***的代理客户端存储加速方法及***
CN109597769A (zh) * 2018-12-04 2019-04-09 郑州云海信息技术有限公司 一种缓存数据的写回方法、***、装置及可读存储介质
CN110750507A (zh) * 2019-09-30 2020-02-04 华中科技大学 面向dfs的全局命名空间下的客户端持久缓存方法及***
CN112099977A (zh) * 2020-09-30 2020-12-18 浙江工商大学 一种分布式跟踪***的实时数据分析引擎
CN112115515A (zh) * 2020-10-29 2020-12-22 苏州浪潮智能科技有限公司 一种数据保护方法、装置及电子设备和存储介质
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112416556A (zh) * 2020-11-23 2021-02-26 西安西热电站信息技术有限公司 一种数据读写优先平衡方法、***、装置及存储介质
CN112650720A (zh) * 2020-12-18 2021-04-13 深圳市佳创视讯技术股份有限公司 一种缓存***管理方法、装置及计算机可读存储介质
CN113031864A (zh) * 2021-03-19 2021-06-25 上海众源网络有限公司 一种数据处理方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
余洪春: "Linux集群之美", 31 January 2021, 北京:机械工业出版社, pages: 95 - 96 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115951844A (zh) * 2023-03-13 2023-04-11 浪潮电子信息产业股份有限公司 分布式文件***的文件锁管理方法、设备及介质

Similar Documents

Publication Publication Date Title
US20240095233A1 (en) Persistent memory management
Kim et al. PACTree: A high performance persistent range index using PAC guidelines
KR101288408B1 (ko) 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법과 시스템
US8984239B2 (en) Hardware and operating system support for persistent memory on a memory bus
CN111752487B (zh) 一种数据恢复方法、装置及固态硬盘
EP2972891B1 (en) Multiversioned nonvolatile memory hierarchy for persistent memory
EP3805944B1 (en) Data page access method, storage engine, and computer readable storage medium
Gao et al. PCMLogging: Reducing transaction logging overhead with PCM
CN108595347B (zh) 一种缓存控制方法、装置及计算机可读存储介质
US11449402B2 (en) Handling of offline storage disk
Gao et al. Pcmlogging: Optimizing transaction logging and recovery performance with pcm
Lersch et al. Persistent buffer management with optimistic consistency
CN110287129B (zh) 基于固态硬盘的l2p表更新及写入管理方法和装置
US20060277221A1 (en) Transactional file system with client partitioning
CN113590560A (zh) 一种分布式***的缓存优化方法、***、设备和存储介质
US10528436B2 (en) Micro-journal based transaction logging
US20170344595A1 (en) Commit coalescing for micro-journal based transaction logging
Kwon et al. DeNOVA: Deduplication extended nova file system
CN111462790B (zh) 在存储服务器中进行基于管线的存取管理的方法及设备
Son et al. A log-structured buffer for database systems using non-volatile memory
CN111611223A (zh) 非易失性数据的访问方法、***、电子设备和介质
CN115048046B (zh) 日志文件***以及数据管理方法
Deng et al. Efficient hardware-assisted out-place update for persistent memory
CN112214171B (zh) 一种面向SQLite数据库的非易失性内存缓冲区设计方法
Son et al. Nonvolatile write buffer-based journaling bypass for storage write reduction in mobile devices

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