CN111651374A - 一种数据处理方法、装置、计算设备及可读存储介质 - Google Patents

一种数据处理方法、装置、计算设备及可读存储介质 Download PDF

Info

Publication number
CN111651374A
CN111651374A CN202010291804.7A CN202010291804A CN111651374A CN 111651374 A CN111651374 A CN 111651374A CN 202010291804 A CN202010291804 A CN 202010291804A CN 111651374 A CN111651374 A CN 111651374A
Authority
CN
China
Prior art keywords
data
cache
heap
server
key value
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
CN202010291804.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.)
Beijing Cheerbright Technologies Co Ltd
Original Assignee
Beijing Cheerbright Technologies 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 Beijing Cheerbright Technologies Co Ltd filed Critical Beijing Cheerbright Technologies Co Ltd
Priority to CN202010291804.7A priority Critical patent/CN111651374A/zh
Publication of CN111651374A publication Critical patent/CN111651374A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks

Abstract

本发明公开了一种数据处理方法,适于在数据缓存系统中执行,方法包括:在应用服务器处获取数据访问请求,并获取与要访问数据相对应的键值;在堆内缓存中查找该键值对应的数据,若查找到,则返回数据;若未查找到,则在堆外缓存中查找,若查找到,则返回数据;若未查找到,则在远程缓存服务器中查找,若查找到,则返回数据;若未查找到,则在数据服务器中获取与键值相对应的数据;更新数据的版本信息,将数据发送到调度单元,以便调度单元更新堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据;以及返回数据。本发明还公开了相应的数据处理装置、计算设备和可读存储介质。

Description

一种数据处理方法、装置、计算设备及可读存储介质
技术领域
本申请涉及数据处理领域,特别涉及一种数据处理方法、装置、计算设备及可读存储介质。
背景技术
缓存是高并发系统中必不可少的工具,为了提升响应时间和吞吐率,并且减少请求回源的次数,缓存必不可少,缓存架构目前常用的有两种,单级缓存架构和二级缓存架构,单级缓存大多数采用堆内缓存或者分布式缓存,读取数据优先从堆内或者分布式缓存获取,如果堆内或者分布式缓存失效或者不存在则回源从数据服务器中获取,这种架构解决了在高并发场景下的数据回源所带来的服务延迟,但是在高并发场景下,容易造成网络带宽和网络负载过高,还存在单点问题,一旦缓存不可用,就会回源到数据服务器。
二级缓存架构大多数采用堆内缓存加分布式缓存,读取数据优先从堆内缓存获取,如果堆内缓存失效或者不存在则从分布式缓存中获取,这种架构解决了分布式缓存在高并发场景下的网络带宽和延迟问题还有多JVM环境下带来的内存浪费,但是在JVM环境下大量写入数据的场景下,容易导致堆内存溢出,同时,JVM会进行垃圾回收,这就不可避免的会产生STW现象,从而影响系统的整体响应速度;另一种二级缓存架构采用堆外内存加分布式缓存,这样可以减少采用堆内存在垃圾回收时产生的系统开销,从而提升系统性能,但是这种缓存架构也存在一些弊端,由于不受JVM垃圾回收管控,容易出现堆外内存泄漏等问题。
发明内容
为此,本发明提供了一种图像显示方法和计算设备,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种数据处理方法,适于在数据缓存系统中执行,数据缓存系统包括驻留有应用的应用服务器、远程缓存服务器、数据服务器和调度单元,其中应用服务器包括堆内缓存和堆外缓存,方法包括步骤:在应用服务器处获取数据访问请求,并获取与要访问数据相对应的键值;在堆内缓存中查找与键值相对应的数据,如果查找到,则返回数据;如果未在堆内缓存中查找到数据,则在堆外缓存中查找与键值相对应的数据,如果查找到,则返回数据;如果未在堆外缓存中查找到数据,则在远程缓存服务器中查找与键值相对应的数据,如果查找到,则返回数据;如果未在远程缓存服务器中查找到数据,则在数据服务器中获取与键值相对应的数据;更新数据的版本信息,并将所获取的数据发送到调度单元,以便调度单元更新堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据;以及返回数据。
可选的,在根据本发明的数据处理方法中,应用服务器包括一个或者多个应用,堆内缓存驻留在应用中,堆外缓存驻留在应用服务器上。
可选的,在根据本发明的数据处理方法中,数据具有对应的的配置信息,配置信息包括数据缓存层级、数据缓存区域。
可选的,在根据本发明的数据处理方法中,数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个。
可选的,在根据本发明的数据处理方法中,其中,调度单元更新堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据包括:获取数据的数据缓存层级;将数据更新至数据的数据缓存层级。
可选的,在根据本发明的数据处理方法中,获取数据的数据缓存层级包括:判断是否能够获得应用服务器的网络拓扑对应的数据缓存层级;若是,将应用服务器的网络拓扑对应的数据缓存层级作为数据的数据缓存层级;若否,则将配置信息中的数据缓存层级作为数据的数据缓存层级。
可选的,在根据本发明的数据处理方法中,根据应用服务器的网络拓扑获取对应的数据缓存层级包括:若应用服务器的网络拓扑为单机,则对应的数据缓存层级为堆内缓存、堆外缓存;若应用服务器的网络拓扑为分布式集群,则对应的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器;若应用服务器的网络拓扑为容器类型,则对应的层级为堆内缓存、堆外缓存和远程缓存服务器。
可选的,在根据本发明的数据处理方法中,将数据更新至数据的数据缓存层级包括:若数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个,则直接更新至数据的数据缓存层级;若数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的至少两个以上,则以排它锁方式同步更新至数据的数据缓存层级。
可选的,在根据本发明的数据处理方法中,将数据更新至数据的数据缓存层级还包括:判断数据缓存层级中是否存在键值;若存在,获取数据的当前版本号,若当前版本号大于或等于更新版本号,则不进行数据更新,若当前版本号小于数据的更新版本号,则进行数据更新,并将更新版本号更新至缓存数据中;若不存在,则将数据写入缓存数据中。
可选的,在根据本发明的数据处理方法中,还包括数据缓存系统的数据写入步骤,步骤包括:将待写入数据发送到调度单元;获取待写入数据的配置信息中的数据缓存层级;将待写入数据依据数据写入规则写入数据缓存层级。
可选的,在根据本发明的数据处理方法中,将待写入数据依据数据写入规则写入数据缓存层级包括:判断待写入数据的数据缓存层级是否包括远程缓存服务器;若是,将待写入数据写入远程缓存服务器中;同时,将待写入数据写入应用服务器。
可选的,在根据本发明的数据处理方法中,将待写入数据依据数据写入规则写入数据缓存层级还包括:获取待写入数据的数据缓存区域;根据数据缓存区域,将待写入数据写入数据缓存区域。
可选的,在根据本发明的数据处理方法中,数据缓存区域包括热区和冷区。
可选的,在根据本发明的数据处理方法中,数据写入规则包括:将待写入数据写入应用服务器时,若待写入数据小于预定值,则写入堆内缓存;若待写入数据大于或等于预定值,则写入堆外缓存。
根据本发明的第二个方面,提供了一种数据缓存系统,包括:应用服务器,应用服务器包括堆内缓存和堆外缓存,应用服务器适于获取数据访问请求,并获取与要访问数据相对应的键值;在堆内缓存中查找与键值相对应的数据,如果查找到,则返回数据;如果未在堆内缓存中查找到数据,则在堆外缓存中查找与键值相对应的数据,如果查找到,则返回数据;远程缓存服务器,适于如果未在堆外缓存中查找到数据,则在远程缓存服务器中查找与键值相对应的数据,如果查找到,则返回数据;数据服务器,适于如果未在远程缓存服务器中查找到数据,则在数据服务器中获取与键值相对应的数据,并更新数据的版本信息;以及调度单元,适于接收数据服务器所获取的数据,以便更新堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据,并返回数据。
可选的,在根据本发明的数据缓存系统中,调度单元适于在更新数据时:获取所述数据的数据缓存层级;将所述数据更新至所述数据的数据缓存层级。
可选的,在根据本发明的数据缓存系统中,数据具有对应的的配置信息,配置信息包括数据缓存层级、数据缓存区域。
可选的,在根据本发明的数据缓存系统中,调度单元适于在获取数据的数据缓存层级时:判断是否能够获得所述应用服务器的网络拓扑对应的数据缓存层级;若是,将所述应用服务器的网络拓扑对应的数据缓存层级作为所述数据的数据缓存层级;若否,则将所述配置信息中的数据缓存层级作为所述数据的数据缓存层级。
可选的,在根据本发明的数据缓存系统中,调度单元还适于接收待写入数据;获取所述待写入数据的配置信息中的数据缓存层级;以及将待写入数据依据数据写入规则写入所述数据缓存层级。
根据本发明的第三个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上述所属数据处理方法的指令。
根据本发明的第四个方面,提供了一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上述所属数据处理方法。
根据本发明的技术方案,提供了一种执行于数据缓存系统中的数据处理方法,该方法根据应用服务器的网络拓扑结构及数据的大小对数据进行分级分代缓存,在写入缓存时,可以设置分配到多个层级或者根据自动策略写入到不同的层级,当用户从缓存中获取数据时,获取数据的过程会从堆内缓存、堆外缓存、远程缓存服务器中依次获取,从而大大降低了缓存失效概率,有效避免缓存穿透,降低数据回源次数。
在缓存写入或更新时将一些大而不常更新的数据在堆外进行缓存,避免因为数据过大而产生的jvm堆分代升级和分代补偿,避免老年代内存增长过快产生的fullgc,降低了因gc带来的服务不可用,在高并发场景下,有效的降低系统响应时间和提升系统吞吐率。
用户请求数据时,当堆内或者堆外发生内存异常,会主动下沉到远程缓存中获取数据返回给客户,当远程缓存发生网络不可用,能够监测远程缓存可用性,当远程缓存服务恢复,将数据回写到远程缓存中,此过程有效提升缓存系统的健壮性和容错能力。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的数据缓存系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的框图;
图3示出了根据本发明一个实施例的数据处理方法300的流程图;
图4示出了根据本发明一个实施例的数据更新方法400的流程图;
图5示出了根据本发明一个实施例的数据写入方法500的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的数据缓存系统100的示意图。应当指出,图1中的数据缓存系统仅为示例性的,数据缓存系统包括应用服务器110,远程缓存服务器120,数据服务器130和调度单元140,并通过互联网相互连接,应用服务器上包括堆内缓存111和堆外缓存112,应用服务器110包括一个或多个应用,每个应用对应一个虚拟机,堆内缓存111驻留在应用中,遵守虚拟机的内存管理机制,堆外缓存112为分配给虚拟机堆以外的内存,不受虚拟机的管理,直接由应用服务器的操作系统管理,堆内缓存可以是caffeine缓存、guava缓存等形式,堆外缓存可以为Hcache、OHCache等数据存储形式,本发明对此不做限制。
远程缓存服务器120可以实现为一台服务器,也可以实现为由多台服务器所构成的集群或分布式系统,当其是多台服务器时,这多台服务器可以部署于同一地理位置,也可以分散布置于多个地理位置,缓存中的数据存储形式可以是redis、Hazelcast等,本发明对远程缓存服务器所包括的服务器的数量、各服务器的部署位置以及缓存的实现形式均不做限制。
数据服务器130可以是关系型数据库例如MySQL、ACCESS等,也可以是非关系型数据库例如NoSQL等,数据服务器用于存储数据,本发明对数据服务器的具体部署、配置情况不做限制。
应用服务110对应于用户应用的服务端,可以接收用户的数据请求,根据用户请求数据的键值依次查询堆内缓存、堆外缓存、远程缓存服务器、数据服务器,如果从堆内缓存中获取到相应的数据,将数据返回用户,结束查询,否则在堆外缓存中查询,如果获取到相应数据,则将数据返回用户,结束查询,否则在远程缓存服务器中查询,如果获取到相应的数据,则将数据返回用户,结束查询,否则,在所述数据服务器中获取与所述键值相对应的数据,更新数据的版本信息,并将所获取的数据发送到调度单元140,以便调度单元更新堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据,最后将数据返回用户。
调度单元140在数据缓存系统中适于接收数据服务器发送的数据,在数据需要更新或者新数据写入时,数据服务器将数据发送至调度单元140,调度单元获取更新数据或写入数据的数据缓存层级,将数据更新或写入数据对应的缓存层级。
图2示出了根据本发明一个实施例的计算设备200的示意图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的数据处理方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的数据处理方法的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。图1所示的数据缓存系统中的应用服务器、远程缓存服务器、数据服务器和调度单元都可以有由计算设备200来实现。
如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器204读取。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器204利用程序数据224执行指令。操作系统220例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用222包括用于实现各种用户期望的功能的程序指令,应用222例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用222被安装到计算设备200中时,可以向操作系统220添加驱动模块。
在计算设备200启动运行时,处理器204会从存储器206中读取操作系统220的程序指令并执行。应用222运行在操作系统220之上,利用操作系统220以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用222时,应用222会加载至存储器206中,处理器204从存储器206中读取并执行应用222的程序指令。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备142包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括用于执行本发明的数据处理方法300和/或数据更新方法400和/或数据写入方法500的指令,该指令可以指示处理器204执行本发明的数据处理方法300和/或数据更新方法400和/或数据写入方法500。
图3示出了根据本发明一个实施例的数据处理方法300的流程图。方法300在计算设备中执行,完成了根据用户的访问请求在数据缓存系统中查询用户访问数据并返回给用户的过程。
如图3所示,该方法始于步骤S310,在应用服务器110处获取数据访问请求,并获取与要访问数据相对应的键值。在一个具体示例A中,例如,用户访问的数据对应的键值为key1。
随后进入步骤S320,在堆内缓存111中查找与所述键值相对应的数据。继续以示例A进行说明,在堆内缓存111中查询是否存在键值为key1的缓存数据,若存在,则将key1所对应的数据返回给用户。
根据本发明的又一实施例,堆内缓存不存在键值为key1的缓存数据,进入步骤S330,在堆外缓存112中查找与所述键值相对应的数据,如果查找到,则返回所述数据。对于示例A而言,在堆外缓存112中查询是否存在键值为key1的缓存数据,若存在,则将key1所对应的数据返回给用户。
根据本发明的又一实施例,堆外缓存中不存在键值为key1的缓存数据,进入步骤S340,在远程缓存服务器120中查找与所述键值相对应的数据,如果查找到,则返回所述数据。对于示例A,在述远程缓存服务器120中查找是否存在键值为key1的缓存数据,若存在,则将key1所对应的数据返回给用户。
根据本发明的又一实施例,远程缓存服务器中不存在键值为key1的缓存数据,进入步骤S350,在数据服务器130中获取与key1相对应的数据。
随后进入步骤S360,更新获取到的数据版本信息。可以将数据的版本号加1作为最新的版本号,本发明对于版本信息的更新方式不做具体限定。
随后进入步骤S370,将获取到的数据发送至调度单元140,以便所述调度单元更新所述堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据。
随后进入步骤S380,将获取到的数据返回给用户。
在本实施例中,若堆内缓存111、堆外缓存112、远程缓存服务器120中的一个或多个不可用时,则直接略过相对应的缓存中的查询步骤,进入下一个查询步骤。在一个具体示例中,若在数据查询过程中,堆外缓存发生异常,则略过堆外缓存查询,直接查询远程缓存服务器。
图4示出了根据本发明一个实施例的数据更新方法400的流程图。方法400在计算设备中执行,完成从数据服务器查询到数据后更新缓存数据的过程。
如图4所示,方法始于步骤S410,调度单元140接收数据更新信息,以便更新堆内缓存111、堆外缓存112和远程缓存服务器120中的一个或者多个上存储的数据。
随后进入步骤S420,获取数据对应的配置信息,配置信息包括数据缓存层级、数据缓存区域,其中,数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个,数据缓存区域包括热区和冷区。
随后进入步骤S430,获取数据的数据缓存层级。
数据的缓存层级优先根据应用服务器的网络拓扑结构获得,若获取不到,则取数据的配置信息中的数据缓存层级作为该数据的数据缓存层级。根据应用服务器的网络拓扑结构获得数据缓存层级依据以下规则:
若应用服务器的网络拓扑为单机,则对应的数据缓存层级为堆内缓存、堆外缓存;
若应用服务器的网络拓扑为分布式集群,则对应的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器;
若应用服务器的网络拓扑为容器类型,则对应的层级为堆内缓存、堆外缓存和远程缓存服务器。
随后进入步骤S440,判断数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个还是两个以上。
若数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个,则进入步骤S450,直接更新对应层级的数据。
若数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的两个以上,则进入步骤S460,以排它锁方式同步更新对应层级的数据,即将对应层级的该数据写入锁定,直到该数据在所有层级的更新都完成,释放排它锁。
在更新任何层级数据时,首先查找到要更新的数据的键值,即步骤S470,若没有查找到,则直接将数据写入该层级。
若步骤S470中查找到数据对应的键值,则进入步骤S480,获取数据的当前版本号,若当前版本号大于或等于写入的版本号,则不进行数据更新,将数据丢弃;若当前版本号小于数据的写入的版本号,则进行数据更新,并将写入的版本号更新至缓存数据中。
更新应用服务器缓存数据时,根据缓存存放规则,若数据大于或等于预定值数据则将数据写入堆外内存,小于预定值的数据写入堆内缓存,若此缓存存放规则配置信息关闭,则根据数据占据新生代数据的比例决定存入堆内缓存还是堆外缓存,可以设定当所述比例大于或等于预定值时将数据写入堆内缓存,否则写入堆外缓存,本发明对该比例预定值的大小不做限制。数据在写入时根据配置信息中的数据缓存区域将数据缓存到相应的区域,默认情况将数据写入热区。
图5示出了根据本发明一个实施例的数据写入方法500的流程图。方法500在计算设备中执行,可以完成新数据写入缓存数据的过程。
如图5所示,方法始于步骤S510,调度单元接收待写入数据。
随后进入步骤S520,调度单元从待写入数据获取配置信息,配置信息包括数据缓存层级、数据缓存区域,其中,数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个,数据缓存区域包括热区和冷区。
在步骤S530中,判断待写入数据的数据缓存层级是否包含远程缓存服务器。
若步骤S530的判断结果为待写入数据的数据缓存层级包含远程缓存服务器,则进入步骤S540,将待写入数据写入远程缓存服务器中,同时,写入应用服务器。
若步骤S530的判断结果为待写入数据的数据缓存层级不包含远程缓存服务器,则进入步骤S550,将待写入数据写入应用服务器,根据是否配置自动写入,根据缓存类型、数据大小,分别写入堆内和堆外。
步骤S540和步骤S550中将待写入数据写入应用服务器时,还需要经过步骤S560,判断待写入数据与预定值的关系,若所述数据小于预定数值,则写入堆内缓存,若所述待写入数据大于预定值,则写入堆外缓存,可以有效减少JVM新生代晋升到老年代的频次,从而降低FullGC产生的频次。在本实施例到的一个具体示例中,可以将预定值预设为2k,若待写入数据小于2k,则将数据写入堆内缓存,若待写入数据大于或等于2k,则将数据写入堆外缓存,本发明对预定数值不做限定。
在写入堆内缓存或堆外缓存时,均根据写入规则判断堆内缓存或堆外缓存中是否存在数据的键值,若没有查找到,则直接将数据写入该层级,若查找到数据对应的键值,获取数据的当前版本号,若当前版本号大于或等于写入的版本号,则直接将数据丢弃;若当前版本号小于数据的写入的版本号,则进行数据更新,并将写入的版本号写入至缓存数据中。
另外,步骤S520中将从待写入数据的配置信息中获取到数据缓存区域,在写入堆内缓存、堆外缓存、远程缓存服务器中任何一层级时,根据步骤S520中获取到的数据缓存区域将待写入数据写入相应的区域,若没有获取到数据缓存区域配置信息,则默认写入热区。
根据本发明的技术方案,提供了一种执行于数据缓存系统中的数据处理方法,该方法根据应用服务器的网络拓扑结构及数据的大小对数据进行分级分代缓存,将一些大而不常更新的数据在堆外进行缓存,小于特定值的数据在堆内进行缓存,从而提升了缓存系统的健壮性和容错率,其能有效降低现有缓存架构网络带宽和网络延迟,提升应用系统响应时间。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据处理方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
A8、如A5-A7中任意一项所述的方法,其中,所述将所述数据更新至所述数据的数据缓存层级包括:
若所述数据的数据缓存层级为所述堆内缓存、堆外缓存和远程缓存服务器中的一个,则直接更新至所述数据的数据缓存层级;
若所述数据的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器中的至少两个以上,则以排它锁方式同步更新至所述数据的数据缓存层级。
A9、如A5-A8任意一项所述的方法,其中,所述将所述数据更新至所述数据的数据缓存层级还包括:
判断所述数据缓存层级中是否存在所述键值;
若存在,获取所述数据的当前版本号,若所述当前版本号大于或等于更新版本号,则不进行数据更新,若所述当前版本号小于所述数据的更新版本号,则进行数据更新,并将所述更新版本号更新至缓存数据中;
若不存在,则将所述数据写入缓存数据中。
A10、如A1-A9中任意一项所述的方法,还包括所述数据缓存系统的数据写入步骤,所述步骤包括:
将待写入数据发送到调度单元;
获取所述待写入数据的配置信息中的数据缓存层级;
将待写入数据依据数据写入规则写入所述数据缓存层级。
A11、如A10所述的方法,其中,所述将待写入数据依据数据写入规则写入所述数据缓存层级包括:
判断所述待写入数据的数据缓存层级是否包括所述远程缓存服务器;
若是,将所述待写入数据写入所述远程缓存服务器中;
同时,将所述待写入数据写入所述应用服务器。
A12、如A10或A11所述的方法,其中,所述将待写入数据依据数据写入规则写入所述数据缓存层级还包括:
获取所述待写入数据的数据缓存区域;
根据所述数据缓存区域,将所述待写入数据写入所述数据缓存区域。
A13、如A3-A12中任意一项所述的方法,所述数据缓存区域包括热区和冷区。
A14、如A10-A13中任意一项所述的方法,所述数据写入规则包括:
将所述待写入数据写入应用服务器时,若所述待写入数据小于预定值,则写入堆内缓存;
若所述待写入数据大于或等于预定值,则写入堆外缓存。
B16、如B15所述的数据缓存系统,其中,所述调度单元适于在更新数据时:
获取所述数据的数据缓存层级;
将所述数据更新至所述数据的数据缓存层级。
B17、如B15或B16所述的数据缓存系统,其中,所述数据具有对应的的配置信息,所述配置信息包括数据缓存层级、数据缓存区域。
B18、如B16或B17所述的数据缓存系统,其中,所述调度单元适于在获取所述数据的数据缓存层级时:
判断是否能够获得所述应用服务器的网络拓扑对应的数据缓存层级;
若是,将所述应用服务器的网络拓扑对应的数据缓存层级作为所述数据的数据缓存层级;
若否,则将所述配置信息中的数据缓存层级作为所述数据的数据缓存层级。
B19、如B15-B18中任意一项所述的的数据缓存系统,其中所述调度单元还适于接收待写入数据;获取所述待写入数据的配置信息中的数据缓存层级;以及将待写入数据依据数据写入规则写入所述数据缓存层级。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种数据处理方法,适于在数据缓存系统中执行,所述数据缓存系统包括驻留有应用的应用服务器、远程缓存服务器、数据服务器和调度单元,其中所述应用服务器包括堆内缓存和堆外缓存,所述方法包括步骤:
在所述应用服务器处获取数据访问请求,并获取与要访问数据相对应的键值;
在所述堆内缓存中查找与所述键值相对应的数据,如果查找到,则返回所述数据;
如果未在所述堆内缓存中查找到数据,则在所述堆外缓存中查找与所述键值相对应的数据,如果查找到,则返回所述数据;
如果未在所述堆外缓存中查找到所述数据,则在所述远程缓存服务器中查找与所述键值相对应的数据,如果查找到,则返回所述数据;
如果未在所述远程缓存服务器中查找到所述数据,则在所述数据服务器中获取与所述键值相对应的数据;
更新所述数据的版本信息,并将所获取的数据发送到调度单元,以便所述调度单元更新所述堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据;以及
返回所述数据。
2.如权利要求1所述的方法,其中,所述应用服务器包括一个或者多个应用,所述堆内缓存驻留在所述应用中,所述堆外缓存驻留在所述应用服务器上。
3.如权利要求1或2所述的方法,其中,所述数据具有对应的的配置信息,所述配置信息包括数据缓存层级、数据缓存区域。
4.如权利要求3所述的方法,其中,所述数据缓存层级为所述堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个。
5.如权利要求1-4中任意一项所述的方法,其中,所述调度单元更新所述堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据包括:
获取所述数据的数据缓存层级;
将所述数据更新至所述数据的数据缓存层级。
6.如权利要求5所述的方法,其中,所述获取所述数据的数据缓存层级包括:
判断是否能够获得所述应用服务器的网络拓扑对应的数据缓存层级;
若是,将所述应用服务器的网络拓扑对应的数据缓存层级作为所述数据的数据缓存层级;
若否,则将所述配置信息中的数据缓存层级作为所述数据的数据缓存层级。
7.如权利要求6所述的方法,其中,所述根据所述应用服务器的网络拓扑获取对应的数据缓存层级包括:
若所述应用服务器的网络拓扑为单机,则对应的数据缓存层级为堆内缓存、堆外缓存;
若所述应用服务器的网络拓扑为分布式集群,则对应的数据缓存层级为堆内缓存、堆外缓存和远程缓存服务器;
若所述应用服务器的网络拓扑为容器类型,则对应的层级为堆内缓存、堆外缓存和远程缓存服务器。
8.一种数据缓存系统,包括:
应用服务器,所述应用服务器包括堆内缓存和堆外缓存,所述应用服务器适于获取数据访问请求,并获取与要访问数据相对应的键值;在所述堆内缓存中查找与所述键值相对应的数据,如果查找到,则返回所述数据;如果未在所述堆内缓存中查找到数据,则在所述堆外缓存中查找与所述键值相对应的数据,如果查找到,则返回所述数据;
远程缓存服务器,适于如果未在所述堆外缓存中查找到所述数据,则在所述远程缓存服务器中查找与所述键值相对应的数据,如果查找到,则返回所述数据;
数据服务器,适于如果未在所述远程缓存服务器中查找到所述数据,则在所述数据服务器中获取与所述键值相对应的数据,并更新所述数据的版本信息;以及
调度单元,适于接收所述数据服务器所获取的数据,以便更新所述堆内缓存、堆外缓存和远程缓存服务器中的一个或者多个上存储的数据,并返回所述数据。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
CN202010291804.7A 2020-04-14 2020-04-14 一种数据处理方法、装置、计算设备及可读存储介质 Pending CN111651374A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010291804.7A CN111651374A (zh) 2020-04-14 2020-04-14 一种数据处理方法、装置、计算设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010291804.7A CN111651374A (zh) 2020-04-14 2020-04-14 一种数据处理方法、装置、计算设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN111651374A true CN111651374A (zh) 2020-09-11

Family

ID=72343848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010291804.7A Pending CN111651374A (zh) 2020-04-14 2020-04-14 一种数据处理方法、装置、计算设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111651374A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112347134A (zh) * 2020-11-05 2021-02-09 平安科技(深圳)有限公司 Redis缓存管理的方法、装置、计算机设备及存储介质
CN113127741A (zh) * 2021-04-29 2021-07-16 杭州弧途科技有限公司 兼职岗位推荐系统中海量用户和岗位数据读写的缓存方法
CN114745410A (zh) * 2022-03-04 2022-07-12 电子科技大学 一种远程堆管理方法及远程堆管理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120222005A1 (en) * 2011-02-24 2012-08-30 Terracotta Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
CN104620219A (zh) * 2012-08-31 2015-05-13 优米有限公司 具有堆外缓存的网络服务系统和方法
CN107562905A (zh) * 2017-09-08 2018-01-09 深圳市金立通信设备有限公司 数据的管理方法、服务器及计算机可读存储介质
CN108132958A (zh) * 2016-12-01 2018-06-08 阿里巴巴集团控股有限公司 一种多级缓存数据存储、查询、调度以及处理方法及装置
CN109101554A (zh) * 2018-07-12 2018-12-28 厦门中控智慧信息技术有限公司 用于java平台的数据缓存系统、方法以及计算机终端
CN110597739A (zh) * 2019-06-03 2019-12-20 上海云盾信息技术有限公司 一种配置的管理方法、系统及设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120222005A1 (en) * 2011-02-24 2012-08-30 Terracotta Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
CN104620219A (zh) * 2012-08-31 2015-05-13 优米有限公司 具有堆外缓存的网络服务系统和方法
CN108132958A (zh) * 2016-12-01 2018-06-08 阿里巴巴集团控股有限公司 一种多级缓存数据存储、查询、调度以及处理方法及装置
CN107562905A (zh) * 2017-09-08 2018-01-09 深圳市金立通信设备有限公司 数据的管理方法、服务器及计算机可读存储介质
CN109101554A (zh) * 2018-07-12 2018-12-28 厦门中控智慧信息技术有限公司 用于java平台的数据缓存系统、方法以及计算机终端
CN110597739A (zh) * 2019-06-03 2019-12-20 上海云盾信息技术有限公司 一种配置的管理方法、系统及设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112347134A (zh) * 2020-11-05 2021-02-09 平安科技(深圳)有限公司 Redis缓存管理的方法、装置、计算机设备及存储介质
CN112347134B (zh) * 2020-11-05 2023-05-30 平安科技(深圳)有限公司 Redis缓存管理的方法、装置、计算机设备及存储介质
CN113127741A (zh) * 2021-04-29 2021-07-16 杭州弧途科技有限公司 兼职岗位推荐系统中海量用户和岗位数据读写的缓存方法
CN114745410A (zh) * 2022-03-04 2022-07-12 电子科技大学 一种远程堆管理方法及远程堆管理系统

Similar Documents

Publication Publication Date Title
CN111651374A (zh) 一种数据处理方法、装置、计算设备及可读存储介质
CN102779132B (zh) 数据更新方法、系统及数据库服务器
CN113032432A (zh) 一种数据缓存处理方法、系统、计算设备及可读存储介质
US20130290643A1 (en) Using a cache in a disaggregated memory architecture
CN111651464B (zh) 数据处理方法、系统及计算设备
CN111475483B (zh) 数据库迁移方法、装置及计算设备
US10579267B2 (en) Memory controller and memory system
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US20210185142A1 (en) Cache storage for streaming data
US10133672B2 (en) System and method for efficient pointer chasing
CN103729247A (zh) 数据获取请求的处理方法、系统及服务器
US10929216B2 (en) Application crash analysis techniques when memory dump and debug symbols are not co-located
US20160092507A1 (en) Optimizing a query with extrema function using in-memory data summaries on the storage server
CN113906407A (zh) 用于数据库变化流的缓存技术
CN111406251B (zh) 数据预取方法及装置
CN1869956A (zh) 数据处理系统中的数据处理的方法和装置
CN113377289A (zh) 一种缓存管理方法、系统、计算设备及可读存储介质
CN111917573B (zh) 监控方法、监控系统及计算设备
JP2008287660A (ja) キャッシュサーバ、キャッシュ管理方法、およびキャッシュ管理プログラム
JP2018526740A (ja) モバイル端末のためのデータ記憶方法及び装置
WO2023045492A1 (zh) 一种数据预取方法、计算节点和存储系统
CN113326214B (zh) 一种页缓存管理方法、计算设备及可读存储介质
JP2010020419A (ja) 文書管理プログラム、文書管理装置及び文書管理システム
CN114691549A (zh) 一种文件写入方法、装置及计算设备
CN113377791A (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