CN112328632B - 一种分布式两级缓存的方法和系统 - Google Patents

一种分布式两级缓存的方法和系统 Download PDF

Info

Publication number
CN112328632B
CN112328632B CN202011070559.3A CN202011070559A CN112328632B CN 112328632 B CN112328632 B CN 112328632B CN 202011070559 A CN202011070559 A CN 202011070559A CN 112328632 B CN112328632 B CN 112328632B
Authority
CN
China
Prior art keywords
cache
data
local memory
key
centralized
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.)
Active
Application number
CN202011070559.3A
Other languages
English (en)
Other versions
CN112328632A (zh
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.)
State Grid Siji Location Service Co ltd
State Grid Information and Telecommunication Co Ltd
Fujian Yirong Information Technology Co Ltd
Great Power Science and Technology Co of State Grid Information and Telecommunication Co Ltd
Original Assignee
State Grid Information and Telecommunication Co Ltd
Fujian Yirong Information Technology Co Ltd
Great Power Science and Technology Co of State Grid Information and Telecommunication 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 State Grid Information and Telecommunication Co Ltd, Fujian Yirong Information Technology Co Ltd, Great Power Science and Technology Co of State Grid Information and Telecommunication Co Ltd filed Critical State Grid Information and Telecommunication Co Ltd
Priority to CN202011070559.3A priority Critical patent/CN112328632B/zh
Publication of CN112328632A publication Critical patent/CN112328632A/zh
Application granted granted Critical
Publication of CN112328632B publication Critical patent/CN112328632B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

本发明涉及数据读取技术领域,特别涉及一种分布式两级缓存的方法和系统。所述一种分布式两级缓存的方法,包括步骤:响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;若缓存服务器中不存在命名空间缓存,则从数据库中获取数据,并将数据同步存储于第一本地内存缓存和集中式缓存;若缓存服务器中存在命名空间缓存,则从第一本地内存缓存中获取数据,若从第一本地内存缓存中无法获取数据,则从集中式缓存中获取数据,并同步存储数据至第一本地内存缓存。通过上述方法可大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。

Description

一种分布式两级缓存的方法和系统
技术领域
本发明涉及数据读取技术领域,特别涉及一种分布式两级缓存的方法和系统。
背景技术
缓存技术是加快数据读取的一种常用技术,常常被用于各种各样的软件系统中,其作用是帮助系统更快地运行。目前的业务系统主要为分布式系统,其主要响应瓶颈在于数据库并发和网络带宽不足上。
目前广泛应用于解决数据库并发不足问题的方法是增加缓存,缓存的种类划分为内存缓存(如Ehcache),其特点响应速度快,效率高,但是缓存共享麻烦,集中式缓存(如mencached、redis),其特点可同时为多节点提供服务。
然而上述两种方式都存在问题,如:
当使用内存缓存时,一旦应用重启后,由于缓存数据丢失,缓存雪崩,给数据库造成巨大压力,导致应用堵塞,并且多个应用节点无法共享缓存数据。
当使用集中式缓存时,由于大量的数据通过缓存获取,导致缓存服务的数据吞吐量太大,带宽跑满。现象就是mencached、redis服务负载不高,但是由于机器网卡带宽跑满,导致数据读取非常慢。
发明内容
为此,需要提供一种分布式两级缓存的方法,用以解决现有缓存设置无法兼顾数据读取速度与缓存数据丢失、缓存雪崩、给数据库造成巨大压力、导致应用堵塞的问题。具体技术方案如下:
一种分布式两级缓存的方法,包括步骤:
第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;
若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
进一步的,还包括步骤:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第二业务服务器上部署有第二本地内存缓存;
所述第二业务服务器从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
进一步的,还包括步骤:
第一业务服务器响应更新数据请求命令,所述第一业务服务器请求所述集中式缓存变更集中式缓存中计数器缓存区版本号。
进一步的,还包括步骤:
所述第一业务服务器再次响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号未发生变更,所述第一业务服务器从所述第一本地内存缓存获取数据。
进一步的,还包括步骤:
第一业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
进一步的,还包括步骤:
第二业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
进一步的,所述“业务服务器发送获取命名空间缓存请求至缓存服务器”,还包括步骤:
所述业务服务器根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;
所述缓存KEY的生成步骤如下:
获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;
对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。
进一步的,
所述集中式缓存包括:计数器缓存区和数据缓存;
所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。
为解决上述技术问题,还提供了一种分布式两级缓存的系统,具体技术方案如下:
一种分布式两级缓存的系统,包括:第一业务服务器和缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
所述第一业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
进一步的,还包括:第二业务服务器;
所述第二业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;所述第二业务服务器上部署有第二本地内存缓存;从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
本发明的有益效果是:通过在第一业务服务器上部署第一本地内存缓存,在缓存服务器上部署集中式缓存;当第一业务服务器响应用户请求时,第一业务服务器发送获取命名空间缓存请求至缓存服务器;会去判断所述缓存服务器中是否存在所述命名空间缓存,如果缓存服务器中存在所述命名空间缓存,就会直接从第一本地内存缓存中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存,同样无需到数据库获取数据,并且该集中式缓存内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
附图说明
图1为具体实施方式所述一种分布式两级缓存的方法的步骤流程图;
图2为具体实施方式所述实际业务场景中系统示意图;
图3为具体实施方式所述第一业务服务器和第二业务服务器响应用户请求的过程示意图;
图4为具体实施方式所述第一业务服务器数据更新后所述第一业务服务器和第二业务服务器响应用户请求的过程示意图;
图5为具体实施方式所述一种分布式两级缓存的系统的模块示意图;
图6为具体实施方式所述各缓存存放数据示意图。
附图标记说明:
500、一种分布式两级缓存的系统,
501、第一业务服务器,
502、缓存服务器,
5011、第一本地内存缓存,
5021、集中式缓存。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1至图4,在本实施方式中,一种分布式两级缓存的方法可应用在一种分布式两级缓存的系统,所述分布式两级缓存的系统包括:第一业务服务器和缓存服务器,所述第一业务服务器和缓存服务器间通信连接,所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存,需要说明的是,所述分布式两级缓存的系统可根据实际业务需要设置有第二业务服务器、第三业务服务器……等,每个业务服务器的功能是一样的,并无区分,且每个业务服务器都设置有对应的本地内存缓存,为了便于区分,可为第二业务服务器部署有第二本地内存缓存,第三业务服务器部署有第三本地内存缓存……等。在本实施方式中,优选以两个业务服务器和缓存服务器进行说明,在实际业务场景中,如图2所示:其中第一业务服务器对应业务系统A,第二业务服务器对应业务系统B,所述集中式缓存包括:计数器缓存区和数据缓存,即:在集中式缓存中特定划分出存储区域,作为计数器缓存区。此外,计数器缓存区只存储于集中式缓存中,未存储于本地内存缓存,如此可避免当集中式缓存中的计数器缓存区发生变更,而本地内存缓存中的计数器缓存没有及时同步变更,而造成的缓存数据不一致性的问题。其中所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。具体可参阅图6。
数据获取的原理如下:首先,数据存储于数据库中,一旦访问业务系统后,数据会被存储于两个地方,即:存储于本地内存缓存和集中式缓存中,存储格式为[key:value]的形式,这个是缓存的特有存储功能,其中在集中式缓存中,会以特有的方式另外存储一份数据,即看到的缓存技术器空间,该空间存储的方式也是[key:value]的方式,但是存储的内容不是业务数据,而是数据缓存的key的一部分,存储的内容为版本号,系统通过该版本号来控制缓存是否可用。
具体的流程为:当用户访问业务系统,系统会通过[平台/命名空间/类名的组合]到集中式缓存获取版本号,如果获取不到,就建立一个版本号存储在集中式缓存中,第二步,本地内存缓存组合数据[平台/命名空间/类名的组合+版本号+自定义KEY]作为数据可以,并把数据存储在本地及集中式缓存中。用户第二次访问时,系统还是拿[平台/命名空间/类名的组合]到集中式缓存获取版本号,获取到版本号后,组合数据[平台/命名空间/类名的组合+版本号+自定义KEY]从本地数据获取数据。
具体实施可如下:
步骤S101:第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存。
步骤S102:所述缓存服务器中是否存在所述命名空间缓存?
步骤S103:从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
步骤S104:从所述第一本地内存缓存中获取数据。
步骤S105:若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
首先需要说明的是,在本实施方式中,预设了请求规则。具体为:所述“业务服务器发送获取命名空间缓存请求至缓存服务器”,还包括步骤:所述业务服务器根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;所述缓存KEY的生成步骤如下:获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。具体可如下:
首先制定KEY的生成规则为:平台代码+命名空间+类名+命名空间版本号+系统生成KEY/自定义KEY的组合,同时经过MD5处理(KEY长度太长会有问题,所以需要MD5处理)再编码作为缓存KEY。其中引入命名空间(nameSpace)概念,只要对命名空间的版本号进行管理,达到批量清除缓存的目的;对于需要清除的缓存只要对命名空间版本号进行增加或变更,根据KEY的生成规则,命名空间版本号发生变化缓存就获取不到(即缓存被穿透),最后垃圾缓存根据时间或LUA自动清除;其次缓存命名空间计数存于集中式缓存中,数据缓存分布存于集中式缓存及本地ehcache缓存中。
在本实施方式中,优选第一业务服务器以[平台/命名空间/类名的组合]到集中式缓存中获取版本号。
以下结合图3和图4展开具体说明:
业务系统A设置有第一业务服务器,业务系统B设置有第二业务服务器,缓存系统设置有缓存服务器,所述缓存服务器上部署有集中式缓存。
用户向业务系统A发起请求,第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器,判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则穿透缓存,从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
其中将所述数据存储于所述集中式缓存还包括步骤:建立一个版本号存储在集中式缓存中,并把JSON序列化存入集中式缓存中。
如此,当业务系统A再次响应用户请求时,会直接从所述第一本地内存缓存获取数据发送给用户。
而若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
将数据同步到缓存系统的好处在于,当:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器;所述第二业务服务器上部署有第二本地内存缓存;所述第二业务服务器从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
即:第二业务服务器可直接从缓存系统中获取数据。同理,其它的业务服务器亦可以从缓存系统中直接获取数据,并且会将数据存入对应的本地内存缓存中。这样当再次响应用户请求时,就可以直接从本地的内存缓存中获取数据,大大加快速度。
通过在第一业务服务器上部署第一本地内存缓存,在缓存服务器上部署集中式缓存;当第一业务服务器响应用户请求时,第一业务服务器发送获取命名空间缓存请求至缓存服务器;会去判断所述缓存服务器中是否存在所述命名空间缓存,如果缓存服务器中存在所述命名空间缓存,就会直接从第一本地内存缓存中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存,同样无需到数据库获取数据,并且该集中式缓存内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
请参阅图4,当有管理员通过业务系统A后台更新数据时,还包括步骤:第一业务服务器响应更新数据请求命令,所述第一业务服务器请求所述集中式缓存变更集中式缓存中计数器缓存区版本号。在本实施方式中,优选为集中式缓存中计数器缓存区版本号增加。
因为集中式缓存中计数器缓存区版本号发生变更,当用户再次请求业务系统A时,若所述集中式缓存中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。因为集中式缓存中计数器缓存区版本号发生变更,故此根据旧有的版本号无法从第一本地内存缓存与集中式缓存中获取到数据。故需再次从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
若所述集中式缓存中计数器缓存区版本号未发生变更,则所述第一业务服务器直接从所述第一本地内存缓存获取数据。
同样,此时当第二业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,所述第二业务服务器直接请求所述集中式缓存获取数据(因为在此之前第一业务服务器响应完用户请求后,已经将数据同步到了集中式缓存中,故此第二业务服务器可直接从所述集中式缓存中获取数据,无需去数据库获取数据),并同步存储所述数据于所述第二本地内存缓存。
请参阅图5,在本实施方式中,一种分布式两级缓存的系统500的具体实施方式如下:
一种分布式两级缓存的系统500,包括:第一业务服务器501和缓存服务器502;
所述第一业务服务器501上部署有第一本地内存缓存5011,所述缓存服务器502上部署有集中式缓存5021;
所述第一业务服务器501用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器502;判断所述缓存服务器502中是否存在所述命名空间缓存,若所述缓存服务器502中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021;若所述缓存服务器502中存在所述命名空间缓存,则从所述第一本地内存缓存5011中获取数据,若从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011。
首先需要说明的是,在本实施方式中,预设了请求规则。具体为:所述“业务服务器发送获取命名空间缓存请求至缓存服务器502”,还包括步骤:所述业务服务器根据缓存KEY向所述缓存服务器502发送获取命名空间缓存请求;所述缓存KEY的生成步骤如下:获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。具体可如下:
首先制定KEY的生成规则为:平台代码+命名空间+类名+命名空间版本号+系统生成KEY/自定义KEY的组合,同时经过MD5处理(KEY长度太长会有问题,所以需要MD5处理)再编码作为缓存KEY。其中引入命名空间(nameSpace)概念,只要对命名空间的版本号进行管理,达到批量清除缓存的目的;对于需要清除的缓存只要对命名空间版本号进行增加或变更,根据KEY的生成规则,命名空间版本号发生变化缓存就获取不到(即缓存被穿透),最后垃圾缓存根据时间或LUA自动清除;其次缓存命名空间计数存于集中式缓存5021中,数据缓存分布存于集中式缓存5021及本地ehcache缓存中。
在本实施方式中,优选第一业务服务器501以[平台/命名空间/类名的组合]到集中式缓存5021中获取版本号。
以下结合图3和图4展开具体说明:
业务系统A设置有第一业务服务器501,业务系统B设置有第二业务服务器,缓存系统设置有缓存服务器502,所述缓存服务器502上部署有集中式缓存5021。
用户向业务系统A发起请求,第一业务服务器501响应用户请求,所述第一业务服务器501发送获取命名空间缓存请求至缓存服务器502,判断所述缓存服务器502中是否存在所述命名空间缓存,若所述缓存服务器502中不存在所述命名空间缓存,则穿透缓存,从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。
其中将所述数据存储于所述集中式缓存5021还包括步骤:建立一个版本号存储在集中式缓存中,并把JSON序列化存入集中式缓存中。
如此,当业务系统A再次响应用户请求时,会直接从所述第一本地内存缓存5011获取数据发送给用户。
而若所述缓存服务器502中存在所述命名空间缓存,则从所述第一本地内存缓存5011中获取数据,若从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011。
将数据同步到缓存系统的好处在于,当:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器502;所述第二业务服务器上部署有第二本地内存缓存;所述第二业务服务器从所述集中式缓存5021中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存5021获取数据,并同步存储所述数据于所述第二本地内存缓存。
即:第二业务服务器可直接从缓存系统中获取数据。同理,其它的业务服务器亦可以从缓存系统中直接获取数据,并且会将数据存入对应的本地内存缓存中。这样当再次响应用户请求时,就可以直接从本地的内存缓存中获取数据,大大加快速度。
通过在第一业务服务器501上部署第一本地内存缓存5011,在缓存服务器502上部署集中式缓存5021;当第一业务服务器501响应用户请求时,第一业务服务器501发送获取命名空间缓存请求至缓存服务器502;会去判断所述缓存服务器502中是否存在所述命名空间缓存,如果缓存服务器502中存在所述命名空间缓存,就会直接从第一本地内存缓存5011中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011,同样无需到数据库获取数据,并且该集中式缓存5021内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器502中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存5011读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存5021获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
请参阅图4,当有管理员通过业务系统A后台更新数据时,还包括步骤:第一业务服务器501响应更新数据请求命令,所述第一业务服务器501请求所述集中式缓存5021变更集中式缓存5021中计数器缓存区版本号。在本实施方式中,优选为集中式缓存5021中计数器缓存区版本号增加。
因为集中式缓存5021中计数器缓存区版本号发生变更,当用户再次请求业务系统A时,若所述集中式缓存5021中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。因为集中式缓存5021中计数器缓存区版本号发生变更,故此根据旧有的版本号无法从第一本地内存缓存5011与集中式缓存5021中获取到数据。故需再次从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。
若所述集中式缓存5021中计数器缓存区版本号未发生变更,则所述第一业务服务器501直接从所述第一本地内存缓存5011获取数据。
同样,此时当第二业务服务器响应用户请求,判断所述集中式缓存5021中计数器缓存区版本号是否发生变更,若所述集中式缓存5021中计数器缓存区版本号发生变更,所述第二业务服务器直接请求所述集中式缓存5021获取数据(因为在此之前第一业务服务器501响应完用户请求后,已经将数据同步到了集中式缓存5021中,故此第二业务服务器可直接从所述集中式缓存5021中获取数据,无需去数据库获取数据),并同步存储所述数据于所述第二本地内存缓存。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

Claims (8)

1.一种分布式两级缓存的方法,其特征在于,包括步骤:
第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;
若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存;
所述第一业务服务器发送获取命名空间缓存请求至缓存服务器,还包括步骤:
所述第一业务服务器根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;
所述缓存KEY的生成步骤如下:
获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;
对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY;
所述集中式缓存包括:计数器缓存区和数据缓存;
所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。
2.根据权利要求1所述的一种分布式两级缓存的方法,其特征在于,还包括步骤:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第二业务服务器上部署有第二本地内存缓存;
所述第二业务服务器从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
3.根据权利要求2所述的一种分布式两级缓存的方法,其特征在于,还包括步骤:
第一业务服务器响应更新数据请求命令,所述第一业务服务器请求所述集中式缓存变更集中式缓存中计数器缓存区版本号。
4.根据权利要求3所述的一种分布式两级缓存的方法,其特征在于,还包括步骤:
所述第一业务服务器再次响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号未发生变更,所述第一业务服务器从所述第一本地内存缓存获取数据。
5.根据权利要求3所述的一种分布式两级缓存的方法,其特征在于,还包括步骤:
第一业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
6.根据权利要求5所述的一种分布式两级缓存的方法,其特征在于,还包括步骤:
第二业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
7.一种分布式两级缓存的系统,其特征在于,包括:第一业务服务器和缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
所述第一业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存;
所述第一业务服务器还用于:根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;
所述缓存KEY的生成步骤如下:
获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;
对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY;
所述集中式缓存包括:计数器缓存区和数据缓存;
所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。
8.根据权利要求7所述的一种分布式两级缓存的系统,其特征在于,还包括:第二业务服务器;
所述第二业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;所述第二业务服务器上部署有第二本地内存缓存;从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
CN202011070559.3A 2020-10-09 2020-10-09 一种分布式两级缓存的方法和系统 Active CN112328632B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011070559.3A CN112328632B (zh) 2020-10-09 2020-10-09 一种分布式两级缓存的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011070559.3A CN112328632B (zh) 2020-10-09 2020-10-09 一种分布式两级缓存的方法和系统

Publications (2)

Publication Number Publication Date
CN112328632A CN112328632A (zh) 2021-02-05
CN112328632B true CN112328632B (zh) 2022-06-14

Family

ID=74314621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011070559.3A Active CN112328632B (zh) 2020-10-09 2020-10-09 一种分布式两级缓存的方法和系统

Country Status (1)

Country Link
CN (1) CN112328632B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282626A (zh) * 2021-05-31 2021-08-20 平安国际智慧城市科技股份有限公司 基于Redis的缓存数据的方法、装置、计算机设备及存储介质
CN113821165B (zh) * 2021-08-20 2023-12-22 济南浪潮数据技术有限公司 一种分布式集群融合存储方法、系统及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020095875A (ko) * 2001-06-16 2002-12-28 삼성전자 주식회사 멀티 레벨 캐쉬 시스템
CN103338242A (zh) * 2013-06-20 2013-10-02 华中科技大学 一种基于多级缓存的混合云存储系统和方法
CN107231395A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 数据存储方法、装置和系统
CN107562829A (zh) * 2017-08-22 2018-01-09 上海幻电信息科技有限公司 数据访问方法及设备
CN110377572A (zh) * 2019-07-18 2019-10-25 腾讯科技(深圳)有限公司 一种缓存空间管理方法、装置、设备及介质
CN110597739A (zh) * 2019-06-03 2019-12-20 上海云盾信息技术有限公司 一种配置的管理方法、系统及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346294B (zh) * 2013-07-31 2017-08-25 华为技术有限公司 基于多级缓存的数据读/写方法、装置和计算机系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020095875A (ko) * 2001-06-16 2002-12-28 삼성전자 주식회사 멀티 레벨 캐쉬 시스템
CN103338242A (zh) * 2013-06-20 2013-10-02 华中科技大学 一种基于多级缓存的混合云存储系统和方法
CN107231395A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 数据存储方法、装置和系统
CN107562829A (zh) * 2017-08-22 2018-01-09 上海幻电信息科技有限公司 数据访问方法及设备
CN110597739A (zh) * 2019-06-03 2019-12-20 上海云盾信息技术有限公司 一种配置的管理方法、系统及设备
CN110377572A (zh) * 2019-07-18 2019-10-25 腾讯科技(深圳)有限公司 一种缓存空间管理方法、装置、设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"分布式文件系统元数据服务的负载均衡框架";孙耀;《软件学报》;20170106;全文 *
"用于二级缓存的一种改进的自适应缓存管理算法";孙国忠;《计算机研究与发展》;20070910;全文 *

Also Published As

Publication number Publication date
CN112328632A (zh) 2021-02-05

Similar Documents

Publication Publication Date Title
CN107861686B (zh) 文件存储方法、服务端和计算机可读存储介质
CN101188566B (zh) 一种集群环境下数据缓存同步的方法及系统
US6173313B1 (en) Methodology for hosting distributed objects at a predetermined node in a distributed system
CN104539681B (zh) 分布式gis加速系统和gis服务的处理方法
CN112328632B (zh) 一种分布式两级缓存的方法和系统
CN111143382B (zh) 数据处理方法、系统和计算机可读存储介质
CN110162543A (zh) 一种信息查询方法及装置
CN106886371B (zh) 缓存数据处理方法及装置
JP2001522074A (ja) 通信システム及び方法
CN113094430B (zh) 一种数据处理方法、装置、设备以及存储介质
CN101673217B (zh) 一种实现远端程序调用的方法和系统
CN111464603B (zh) 一种服务器扩容方法及扩容系统
CN112667601A (zh) 区块链标识的管理方法、终端设备及计算机可读存储介质
CN112261090B (zh) Web数据处理方法、装置、计算机设备和可读存储介质
CN112039993B (zh) 一种长连接地址处理方法和装置
CN113821521A (zh) 分布式标识生成方法、装置、电子设备及存储介质
US20060136485A1 (en) Dynamic selection or modification of data management patterns
CN112948498A (zh) 一种分布式系统全局标识的生成方法和装置
CN101087263B (zh) 一种通过搜索引擎获取用户状态信息的方法及系统
CN112860746B (zh) 一种基于缓存削减的方法、设备及系统
CN115203255A (zh) 数据查询方法、装置、电子设备及存储介质
CN116542668A (zh) 一种基于区块链的数据处理方法、设备及可读存储介质
CN110099117B (zh) 一种多版本dns区文件全量下发的方法和装置
CN112559570A (zh) 缓存数据获取方法、装置、设备及存储介质
CN111061719A (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
TR01 Transfer of patent right

Effective date of registration: 20231031

Address after: 350000 building 20, area G, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province

Patentee after: FUJIAN YIRONG INFORMATION TECHNOLOGY Co.,Ltd.

Patentee after: STATE GRID INFORMATION & TELECOMMUNICATION GROUP Co.,Ltd.

Patentee after: STATE GRID INFO-TELECOM GREAT POWER SCIENCE AND TECHNOLOGY Co.,Ltd.

Patentee after: State Grid Siji Location Service Co.,Ltd.

Address before: 350000 building 20, area G, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province

Patentee before: FUJIAN YIRONG INFORMATION TECHNOLOGY Co.,Ltd.

Patentee before: STATE GRID INFORMATION & TELECOMMUNICATION GROUP Co.,Ltd.

Patentee before: STATE GRID INFO-TELECOM GREAT POWER SCIENCE AND TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right