CN111858677A - 本地缓存数据访问方法、装置、设备及存储介质 - Google Patents

本地缓存数据访问方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111858677A
CN111858677A CN202010729217.1A CN202010729217A CN111858677A CN 111858677 A CN111858677 A CN 111858677A CN 202010729217 A CN202010729217 A CN 202010729217A CN 111858677 A CN111858677 A CN 111858677A
Authority
CN
China
Prior art keywords
server
local cache
cache data
slave
servers
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
CN202010729217.1A
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.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China 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 Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010729217.1A priority Critical patent/CN111858677A/zh
Publication of CN111858677A publication Critical patent/CN111858677A/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs

Landscapes

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

Abstract

本发明涉及大数据领域,公开了一种本地缓存数据访问方法、装置、设备及存储介质,该方法包括:获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。本发明能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。此外,本发明还涉及区块链技术,本地缓存数据可存储于区块链中。

Description

本地缓存数据访问方法、装置、设备及存储介质
技术领域
本发明涉及大数据领域,尤其涉及一种本地缓存数据访问方法、装置、设备及存储介质。
背景技术
在高并发系统中,通常将一些资源部署于用户较近的地方,当用户请求这些内容时,可以就近获取,从而达到提高用户访问速度的目的,这就是缓存。缓存一般可以分为本地缓存和分布式缓存,其中所谓本地缓存就是缓存和应用是在同一进程中,这类缓存由于没有网络开销,请求速度非常快,对于某些数据量较小,但访问十分频繁的数据,针对这种场景,需要将数据存储于应用的本地缓存中,以提高系统的访问效率,减少无谓的数据库访问,而需要服务器对本地缓存数据进行访问。
现有技术中对于本地缓存数据的访问是由每个服务器自身对存储本地缓存数据的数据库进行访问读取,这样的访问方式就会给数据库造成的较大的访问压力,并且对于数据的调用输出的处理量过大,不利于提高系统的访问效率,甚至会造成系统的缓存崩溃。
发明内容
本发明的主要目的在于解决现有的服务器访问本地缓存数据时,由于各个服务器一起访问缓存数据库,导致数据库的访问压力过大,访问效率过低的技术问题。
本发明第一方面提供了一种本地缓存数据访问方法,包括:
获取本地缓存开源框架的配置文件并解析,得到配置参数;
根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
可选的,在本发明第一方面的第一种实现方式中,在所述获取本地缓存开源框架的配置文件并解析,得到配置参数之后,还包括:
获取待访问的服务器对本地缓存数据的读取请求;
判断所述读取请求是否为第一次读取请求;
若是,则创建与所述服务器对应的临时节点,并将所述服务器的概要信息写入对应的临时节点中。
可选的,在本发明第一方面的第二种实现方式中,所述根据所述配置参数确定待访问的主服务器和从服务器包括:
判断待访问的服务器中是否存在已确认的主服务器;
若待访问的服务器中存在已确认的主服务器,则判断所述主服务器是否符合预设标准;
若不符合,则对所述服务器进行选举操作,以确定新的主服务器和从服务器;
若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器。
可选的,在本发明第一方面的第三种实现方式中,所述若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器包括:
从所述服务器中获取第一服务器和第二服务器的概要信息,其中,所述概要信息包括负载能力以及服务器序号;
判断所述第一服务器和所述第二服务器的所述负载能力是否相等;
若相等,则选择所述服务器序号大的服务器作为候选服务器;
若不相等,则选举所述负载能力最大的服务器作为候选服务器;
判断当前选举次数是否大于或等于预设阈值;
若选举次数大于或等于预设阈值,则将所述候选服务器作为主服务器、其余服务器作为从服务器,并退出选举操作;
若选举次数小于预设阈值,则从所述服务器中获取所述候选服务器以及第三服务器的概要信息,并继续进行选举操作,直至当前选举次数大于或等于所述预设阈值。
可选的,在本发明第一方面的第四种实现方式中,在所述将所述本地缓存数据同步至所述从服务器之后,还包括:
分别计算所述主服务器读取的缓存数据和所述主服务器同步至所述从服务器的缓存数据的哈希值;
判断所述主服务器读取的缓存数据的哈希值与所述主服务器同步至所述从服务器的缓存数据的哈希值是否相同;
若相同,则确定所述主服务器读取的缓存数据成功同步至所述从服务器。
可选的,在本发明第一方面的第五种实现方式中,在确定所述主服务器读取的缓存数据成功同步至所述从服务器,还包括:
获取所述从服务器的缓存使用情况;
根据所述缓存使用情况,判断所述从服务器是否需要进行缓存数据的更新;
若所述从服务器需要进行缓存数据的更新,则触发所述从服务器对本地缓存数据的读取请求。
本发明第二方面提供了一种本地缓存数据访问装置,包括:
获取模块,用于获取本地缓存开源框架的配置文件并解析,得到配置参数;
配置模块,用于根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
监听器启动模块,用于定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
信息发送模块,用于当检测到存在所述从服务器访问本地缓存数据的访问请求时,获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
可选的,在本发明第二方面的第一种实现方式中,所述本地缓存数据访问装置还包括:
数据访问模块,用于获取待访问的服务器对本地缓存数据的访问请求;
判断模块,用于判断所述访问请求是否为第一次访问请求;
创建节点模块,用于当所述访问请求是第一次访问请求,则创建与所述服务器对应的临时节点;
写入模块,用于将所述服务器的概要信息写入对应的临时节点中。
可选的,在本发明第二方面的第二种实现方式中,所述配置模块用于:
判断待访问的服务器中是否存在已确认的主服务器;
若待访问的服务器中存在已确认的主服务器,则判断所述主服务器是否符合预设标准;
若不符合,则对所述服务器进行选举操作,以确定新的主服务器和从服务器;
若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器。
可选的,在本发明第二方面的第三种实现方式中,所述配置模块具体用于:
判断待访问的服务器中是否存在已确认的主服务器;
若待访问的服务器中存在已确认的主服务器,则判断所述主服务器是否符合预设标准;
若不符合,则对所述服务器进行选举操作,以确定新的主服务器和从服务器;
若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器。
可选的,在本发明第二方面的第四种实现方式中,所述本地缓存数据访问装置还包括同步数据确定模块,具体用于:
分别计算所述主服务器读取的缓存数据和所述主服务器同步至所述从服务器的缓存数据的哈希值;
判断所述主服务器读取的缓存数据的哈希值与所述主服务器同步至所述从服务器的缓存数据的哈希值是否相同;
若相同,则确定所述主服务器读取的缓存数据成功同步至所述从服务器。
可选的,在本发明第二方面的第五种实现方式中,所述本地缓存数据访问装置还包括访问请求模块,具体用于:
获取所述从服务器的缓存使用情况;
根据所述缓存使用情况,判断所述从服务器是否需要进行缓存数据更新;
若所述从服务器需要进行缓存数据的更新,则触发所述从服务器对本地缓存数据的访问请求。
本发明第三方面提供了一种本地缓存数据访问设备,包括:存储器和至少一个处理器,所述存储器中存储有计算机程序,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述计算机程序,以使得所述本地缓存数据访问设备执行上述的本地缓存数据访问方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述的本地缓存数据访问方法。
本发明提供的技术方案中,公开了一种本地缓存数据访问方法、装置、设备及存储介质,所述本地缓存数据访问方法包括:获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。本发明实施例中,所述本地缓存数据访问方法能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。
附图说明
图1为本发明实施例中本地缓存数据访问方法的第一个实施例示意图;
图2为本发明实施例中本地缓存数据访问方法的第二个实施例示意图;
图3为本发明实施例中本地缓存数据访问方法的第三个实施例示意图;
图4为本发明实施例中本地缓存数据访问方法的第四个实施例示意图;
图5为本发明实施例中本地缓存数据访问装置的一个实施例示意图;
图6为本发明实施例中本地缓存数据访问装置的另一个实施例示意图;
图7为本发明实施例中本地缓存数据访问设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种本地缓存数据访问方法、装置、设备及存储介质,所述本地缓存数据访问方法包括:获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。所述本地缓存数据访问方法能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中本地缓存数据访问方法的一个实施例包括:
101、获取本地缓存开源框架的配置文件并解析,得到配置参数;
需要强调的是,为保证上述本地缓存数据的私密和安全性,上述本地缓存数据可以存储于一区块链的节点中。
在该步骤中,所述配置文件本质上是包含成功操作程序所需信息的文件,这些信息以特定的方式构成,它们不是在程序中进行硬编码编写得到的,而是用户可配置的,通常存储在纯文本中,在本实施例中,通过所述配置文件创建的缓存对象封装有本地缓存开源框架,所述本地缓存开源框架包括caffeine、guavaCache,ehcache、jetCache等开源框架,本发明不做限定。
在该步骤中,通过解析配置文件得到配置参数,解析配置文件的方式主要为dom+xpath解析,所述配置文件一般为.xml后缀,所述dom+xpath解析中,DOM会将整个xml文件加入内存中并形成一个树状数据结构,而在定位xml文件的某段特性信息时,通过遍历所述树状数据结构的众多节点进行查找时,效率较低,使用xpath能够使得访问节点的效率提升,所述XPath是一种为查询XML文档而设计的语言,可以与DOM解析方式配合使用,实现对XML文档的解析,同时所述缓存对象为用户在进程扣减中开辟的一个内存堆管理缓存数据。
可以理解的是,本发明的执行主体可以为本地缓存数据访问装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
102、根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
在该步骤中,需要事先将待访问的服务器注册到注册中心中,并根据所述注册中心的选举机制,在所述服务器中选举出主服务器,除所述主服务器外的服务器为从服务器。所述注册中心为zookeeper,也就是说,所述主从服务器的选举机制为zookeeper的Leader的选举功能,zookeeper能够在此处提供注册中心的功能,是因为zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zookeeper将全量数据存储在内存中,有高性能的特点,并且支持集群,另外支持事件监听,这些特点决定了zookeeper特别适合作为注册中心,所述zookeeper为是一个分布式的,开放源码的分布式应用程序协调服务,是一个分布式文件系统。zookeeper在这里作为注册中心就是一个注册表,让多个服务器形成一个集群,让访问者通过服务注册表获取具体的服务访问地址(ip+端口)去访问具体的服务器。同时,注册中心通过心跳机制,检测服务是否可用,如果不可用则注销该服务,同时通知访问者,该服务不可用。
103、启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
在该步骤中,所述检测方式主要通过本地缓存监听器来实现,在创建所述缓存对象之后,系统启动所述本地缓存监听器,所述本地缓存监听器基于配置文件,配置有不同的缓存策略,所述缓存策略包括缓存数据淘汰策略、缓存高低水位、缓存计算单位、缓存过期时间。
在该步骤所述本地缓存监听器主要是异步调用,同步调用也就是在移除缓存的线程中执行,若监听器方法比较耗时,会使得调用者线程阻塞时间变长,解决这个问题的方法就是异步调用,本地监听器监听从服务器是否有对本地缓存数据的访问请求,当所述本地缓存监听器监听到所述访问请求后,向主服务器发送缓存对象信息,主服务器向同本地缓存数据所在的客户端发送同步指令,主服务在获取到所述本地缓存数据之后,再将缓存数据同步到从服务器中。
104、若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器;
在该步骤中,同时所述缓存对象分为有需要初始化的对象,以及有需要刷新的缓存对象,根据所述缓存对象的不同,对所述主服务器中的数据进行不同的处理,例如所述缓存对象有需要初始化的对象,则发布一条任务给初始化执行器进行执行初始化任务,系统自带执行器redis、database、rpc等,当所述缓存对象有需要刷新的缓存对象时,发布一条任务给刷新执行器(excutor管理器)进行执行刷新任务。
在该步骤中,所述主服务器在获取到所述缓存对象信息后,根据所述缓存对象信息提供不同的服务,其中所述缓存对象信息在所述服务器注册至注册中心时,会将缓存对象信息存储在注册中心的节点中,主服务器从注册中心的节点中直接获取所述缓存对象的信息即可。
在该步骤中,当所述获取的所述缓存对象信息中有需要进行刷新的对象时,则从所述本地数据库中读取对应的本地缓存数据,并根据获取到的本地缓存数据对所述主服务器中的数据进行刷新,当主服务器接收到的所述缓存对象信息有初始化的对象时,则直接对所述主服务器中的数据进行初始化处理即可。
在该步骤中,主服务器根据所述缓存对象信息,对本地缓存数据进行加载,在将本地缓存数据加载到所述主服务器后,需要将主服务器加载的本地缓存数据发送到从服务器,对从服务器中的数据进行初始化处理或者刷新处理,其中所述初始化处理,也就是将从服务器中的数据设为一开始设定的默认状态,所述刷新处理,也就是将所述主服务器中的数据发送至从服务器,所述从服务器加载从主服务器获取到缓存数据,这样做的目的在于,当所述主服务器奔溃时,从其他的从服务器中重新进行选举出主服务器,保证缓存的过程不会被破坏。
本发明实施例提供了一种本地缓存数据访问方法、装置、设备及存储介质,所述本地缓存数据访问方法包括:获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。在本实施例中,所述本地缓存数据访问方法能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。
请参阅图2,本发明实施例中本地缓存数据访问方法的第二个实施例包括:
201、获取本地缓存开源框架的配置文件并解析,得到配置参数;
202、获取待访问的服务器对本地缓存数据的访问请求;
203、判断所述访问请求是否为第一次访问请求;
204、若是,则创建与所述服务器对应的临时节点;
205、将所述服务器的概要信息写入对应的临时节点中。;
在该步骤中,当所述注册请求次数大于预设的请求阈值,则对所述注册请求执行屏蔽处理,这是因为同一服务器经常发出注册请求则容易导致资源被该服务器占用,导致注册中心的系统压力过大,通过对发送注册请求次数过多的服务器进行屏蔽处理,减少了注册中心的压力,并且,在本实施例中,当在预设时间段内拒绝所述注册请求,则将经过所述预设时间段后所述服务器发出的注册请求次数清零。
在实际应用中,所述临时节点存储了所述服务器的IP、端口、调用方式(协议、序列化方式)等,所述服务器定期向注册中心更新写入的本地缓存数据,保证注册中心中存储的数据为最新数据,所述临时节点可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等。
206、根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
207、启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
208、若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器;
本实施例在上一实施例的基础上,详细描述了服务器的临时节点的创建过程,所述并将服务器的概要信息写入临时节点中,所述概要信息用于对所述服务器进行选举操作,选择出主服务器和从服务器。
请参阅图3,本发明实施例中本地缓存数据访问方法的第三个实施例包括:
301、获取本地缓存开源框架的配置文件并解析,得到配置参数;
302、根据所述配置参数,创建缓存对象;
303、判断待访问的服务器中是否存在已确认的主服务器;
304、若待访问的服务器中存在已确认的主服务器,则判断所述主服务器是否符合预设标准;
305、若不符合,则对所述服务器进行选举操作,以确定新的主服务器和从服务器;
306、若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器。
进一步的,在该步骤中,所述若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器包括:
从所述服务器中获取第一服务器和第二服务器的概要信息,其中,所述概要信息包括负载能力以及服务器序号;
判断所述第一服务器和所述第二服务器的所述负载能力是否相等;
若相等,则选择所述服务器序号大的服务器作为候选服务器;
若不相等,则选举所述负载能力最大的服务器作为候选服务器;
判断当前选举次数是否大于或等于预设阈值;
若选举次数大于或等于预设阈值,则将所述候选服务器作为主服务器、其余服务器作为从服务器,并退出选举操作;
若选举次数小于预设阈值,则从所述服务器中获取所述候选服务器以及第三服务器的概要信息,并继续进行选举操作,直至当前选举次数大于或等于所述预设阈值。
在该步骤中,所述概要信息包括服务器需要,也就是服务器id以及负载能力,用zxid代表,所述zxid为服务器中存放的最大数据id,所述服务器id和zxid的值越大,在选举算法中的权重越大,根据每个服务器的权重,得出选举服务器。
在步骤中,通过将两个服务器的负载能力进行比较,判断哪个服务器比较适合作为主服务器,因为负载能力越强,服务器越不容易崩溃,当两个服务器的负载能力相同时,则只需要判断两个服务器序号的大小,选择序号较大的服务器作为候选服务器即可。
在实际应用中,主服务器和从服务器的选举算法分为两种,一种是基于basicpaxos实现的,另外一种是基于fast paxos算法实现的,在本实施例中,使用的是fastpaxos算法,假设一共有3台服务器,各服务器根据预设的服务器id依次启动,投票给自身之后将投票信息发出去,编号为1的服务器发出投票信息后由于其他服务器未启动,所以保留投票信息,编号为2的服务器投票给自身后,发出投票信息并与编号为1的服务器的投票信息进行比对,设它们的投票信息分别以(id,zxid)的形式为(1,10)、(2,10),先进行zxid的比对,各服务器选择zxid大的投票信息进行本身投票信息的更新,若所述zxid相同,则进行服务器id的比对,各服务器选择服务器id大的投票信息进行本身投票信息的更新,也就是编号为1的服务器的投票信息更新为(2,10),当投票数量大于服务器数量的一半时,意味着当前投票有效,由于通过更新自身的投票信息,所以当前已完成投票的服务器中的投票信息都是相同的,将所述投票信息中的服务器id,选举出主服务器。
在实际应用中还可以使用basic paxos算法进行选举,选举线程中,由当前服务器发起选举的线程担任,其主要功能是对投票结果进行统计,并选出推荐的主服务器,在选举线程中,所述选举担任向所有的服务器发起询问(包括自己),收到回复后,验证验证是否是自己发起的询问(验证zxid是否一致),然后获取对方的id(myid),并存储到当前询问对象列表中,最后获取对方提议的主服务器相关信息(id,zxid),并将这些信息存储到当次选举的投票记录表中,收到所有服务器回复以后,计算出zxid最大的那个服务器,并将该服务器相关信息设置成下一次要投票的服务器;线程将当前zxid最大的服务器设置为当前服务器要推荐的主服务器,如果此时获胜的主服务器获得n/2+1的服务器票数,设置当前推荐的主服务器为获胜的服务器,将根据获胜的服务器相关信息设置自己的状态,否则,继续这个过程,直到主服务器被选举出来。
307、启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求。
308、若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
本实施例在上一实施例的基础上,详细描述了主从服务器的确定过程,以及进行主服务器选举的选举过程,在本实施例中,所述预设标准包括处理负载标准、数据更新程度等中的至少一种,通过选举产生主从服务器,系统能够将巨量数据分布到每个服务器中,使得每个服务器都对相应的数据进行处理,从而有效的提升对数据的处理效率,并提升数据的吞吐量。
请参阅图4,本发明实施例中本地缓存数据访问方法的第四个实施例包括:
401、获取本地缓存开源框架的配置文件并解析,得到配置参数;
402、根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
403、启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
404、若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器;
405、分别计算所述主服务器读取的缓存数据和所述主服务器同步至所述从服务器的缓存数据的哈希值;
406、判断所述主服务器读取的缓存数据的哈希值与所述主服务器同步至所述从服务器的缓存数据的哈希值是否相同;
407、若相同,则确定所述主服务器读取的缓存数据成功同步至所述从服务器;
在实际应用中,通过一定的哈希算法,例如MD5,SHA-1等,将一段较长的数据映射为较为短小的数据,这段较小的数据就是较长数据的哈希值,哈希值的特点在于它的唯一性,当较长数据发生变化时,无论是多么微小的变化,其哈希值都会发生改变,这个特性决定了它能用于保证数据的一致性,在该步骤,当所述主服务器中的本地缓存数据同步至所述从服务器时,将同步到从服务器中的本地数据的哈希码与主服务器中的本地缓存数据的哈希码进行比对,当两者相同时,证明在所述同步过程中没有发生数据的损失,证明所述主服务器和所述从服务器的数据一致性,若不相同,则证明在所述同步过程中发生了数据的丢失,需要重新进行同步操作,并且在同步之后再次进行主服务器和从服务器哈希码的比对。
408、获取所述从服务器的缓存使用情况;
409、根据所述缓存使用情况,判断所述从服务器是否需要进行缓存数据的更新;
410、若所述从服务器需要进行缓存数据的更新,则触发所述从服务器对本地缓存数据的读取请求。
在该步骤中,通过定时监听的方式获取从服务器中的缓存数据,分析所述缓存数据的使用情况,之所以不是各从服务器各自对本身的缓存数据进行分析是为了减少数据监听的压力,通过定期收集从服务器中的缓存数据,并结合所述从服务器的缓存情况,例如内存信息等,判断是否需要进行从服务器中缓存数据的更新,当判定需要进行缓存数据的更新时,发送对本地数据库中的本地缓存数据的访问请求,本地缓存监听器定期检查是否存在访问请求,进而不断的进行数据的更新。
本实施例在上一实施例的基础上,描述了确认本地缓存数据同步至从服务器上的过程,由于不同数据之间的哈希值不同,通过比对本地缓存数据以及从服务器上的数据的哈希值是否相同,就可以确定同步过程中不存在数据的丢失,避免了因为同步过程中数据丢失导致的错误以及通过对从服务器中的缓存数据的使用情况进行监听,确定是否需要对从服务器中的缓存数据进行更新,确保从服务器中的缓存数据能够不断的进行数据更新。
上面对本发明实施例中本地缓存数据访问方法进行了描述,下面对本发明实施例中本地缓存数据访问装置进行描述,请参阅图5,本发明实施例中本地缓存数据访问装置一个实施例包括:
获取模块501,用于获取本地缓存开源框架的配置文件并解析,得到配置参数;
配置模块502,用于根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
监听器启动模块503,用于定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
信息发送模块504,用于当检测到存在所述从服务器访问本地缓存数据的访问请求时,获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
需要强调的是,为保证上述本地缓存数据的私密和安全性,上述本地缓存数据可以存储于一区块链的节点中。
本发明实施例提供一种本地缓存数据访问装置,所述本地缓存访问运行所述本地缓存数据访问方法,包括获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。所述本地缓存数据访问方法能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。
请参阅图6,本发明实施例中本地缓存数据访问装置的另一个实施例包括:
获取模块501,用于获取本地缓存开源框架的配置文件并解析,得到配置参数;
配置模块502,用于根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
监听器启动模块503,用于定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
信息发送模块504,用于当检测到存在所述从服务器访问本地缓存数据的访问请求时,获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
所述本地缓存数据访问装置还包括信息写入模块505,所述信息写入模块505具体用于:
获取待访问的服务器对本地缓存数据的访问请求;
判断所述访问请求是否为第一次访问请求;
若是,则创建与所述服务器对应的临时节点;
将所述服务器的概要信息写入对应的临时节点中。
所述配置模块502包括存在判断单元5021、标准判断单元5022、选举单元5023。;
存在判断单元5021,用于判断待访问的服务器中是否存在已确认的主服务器;
标准判断单元5022,用于当待访问的服务器中存在已确认的主服务器时,判断所述主服务器是否符合预设标准;
选举单元5023,用于当判定所述主服务器不符合预设标准或待访问的服务器中不存在已确认的主服务器时,对所述服务器进行选举操作,以确定主服务器和从服务器。
所述选举单元具体用于:
从所述服务器中获取第一服务器和第二服务器的概要信息,其中,所述概要信息包括负载能力以及服务器序号;
判断所述第一服务器和所述第二服务器的所述负载能力是否相等;
若相等,则选择所述服务器序号大的服务器作为候选服务器;
若不相等,则选举所述负载能力最大的服务器作为候选服务器;
判断当前选举次数是否大于或等于预设阈值;
若选举次数大于或等于预设阈值,则将所述候选服务器作为主服务器、其余服务器作为从服务器,并退出选举操作;
若选举次数小于预设阈值,则从所述服务器中获取所述候选服务器以及第三服务器的概要信息,并继续进行选举操作,直至当前选举次数大于或等于所述预设阈值。
可选地,所述本地缓存数据访问装置还包括同步数据确定模块506,具体用于:
分别计算所述主服务器读取的缓存数据和所述主服务器同步至所述从服务器的缓存数据的哈希值;
判断所述主服务器读取的缓存数据的哈希值与所述主服务器同步至所述从服务器的缓存数据的哈希值是否相同;
若相同,则确定所述主服务器读取的缓存数据成功同步至所述从服务器;
可选地,所述本地缓存数据访问装置还包括访问请求模块507,具体用于:
获取所述从服务器的缓存使用情况;
根据所述缓存使用情况,判断所述从服务器是否需要进行缓存数据的更新;
若所述从服务器需要进行缓存数据的更新,则触发所述从服务器对本地缓存数据的访问请求。
本发明实施例提供了一种本地缓存数据访问装置,所述本地缓存数据访问装置运行本地缓存数据访问方法,包括:获取本地缓存开源框架的配置文件并解析,得到配置参数;根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。所述本地缓存数据访问方法能够根据本地缓存监听器做到缓存数据的实时监控和分析,避免数据库的访问压力过大,导致缓存崩溃,提高访问效率。
上面图5和图6从模块化功能实体的角度对本发明实施例中的本地缓存数据访问装置进行详细描述,下面从硬件处理的角度对本发明实施例中本地缓存数据访问设备进行详细描述。
图7是本发明实施例提供的一种本地缓存数据访问设备的结构示意图,该本地缓存数据访问设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对本地缓存数据访问设备700中的一系列计算机程序操作。更进一步地,处理器710可以设置为与存储介质730通信,在本地缓存数据访问设备700上执行存储介质730中的一系列计算机程序操作,以实现上述各实施例提供的本地缓存数据访问方法的步骤。
本地缓存数据访问设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作系统731,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图7示出的本地缓存数据访问设备结构并不构成对本申请提供的本地缓存数据访问设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行所述本地缓存数据访问方法的步骤,可选的,是通过计算机上的处理器来执行所述计算机程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机程序用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种本地缓存数据访问方法,其特征在于,所述本地缓存数据访问方法包括:
获取本地缓存开源框架的配置文件并解析,得到配置参数;
根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
启动本地缓存监听器,定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
若存在,则获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
2.根据权利要求1所述的本地缓存数据访问方法,其特征在于,在所述获取本地缓存开源框架的配置文件并解析,得到配置参数之后,还包括:
获取待访问的服务器对本地缓存数据的访问请求;
判断所述访问请求是否为第一次访问请求;
若是,则创建与所述服务器对应的临时节点,并将所述服务器的概要信息写入对应的临时节点中。
3.根据权利要求1所述的本地缓存数据访问方法,其特征在于,所述根据所述配置参数确定待访问的主服务器和从服务器包括:
判断待访问的服务器中是否存在已确认的主服务器;
若待访问的服务器中存在已确认的主服务器,则判断所述主服务器是否符合预设标准;
若不符合,则对所述服务器进行选举操作,以确定新的主服务器和从服务器;
若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器。
4.根据权利要求1所述的本地缓存数据访问方法,其特征在于,所述若待访问的服务器中不存在已确认的主服务器,则对所述服务器进行选举操作,以确定主服务器和从服务器包括:
从所述服务器中获取第一服务器和第二服务器的概要信息,其中,所述概要信息包括负载能力以及服务器序号;
判断所述第一服务器和所述第二服务器的所述负载能力是否相等;
若相等,则选择所述服务器序号大的服务器作为候选服务器;
若不相等,则选举所述负载能力最大的服务器作为候选服务器;
判断当前选举次数是否大于或等于预设阈值;
若选举次数大于或等于预设阈值,则将所述候选服务器作为主服务器、其余服务器作为从服务器,并退出选举操作;
若选举次数小于预设阈值,则从所述服务器中获取所述候选服务器以及第三服务器的概要信息,并继续进行选举操作,直至当前选举次数大于或等于所述预设阈值。
5.根据权利要求1所述的本地缓存数据访问方法,其特征在于,在所述将所述本地缓存数据同步至所述从服务器之后,还包括:
分别计算所述主服务器读取的缓存数据和所述主服务器同步至所述从服务器的缓存数据的哈希值;
判断所述主服务器读取的缓存数据的哈希值与所述主服务器同步至所述从服务器的缓存数据的哈希值是否相同;
若相同,则确定所述主服务器读取的缓存数据成功同步至所述从服务器。
6.根据权利要求5所述的本地缓存数据访问方法,其特征在于,在确定所述主服务器读取的缓存数据成功同步至所述从服务器之后,还包括:
获取所述从服务器的缓存使用情况;
根据所述缓存使用情况,判断所述从服务器是否需要进行缓存数据更新;
若所述从服务器需要进行缓存数据更新,则触发所述从服务器发起本地缓存数据的访问请求。
7.一种本地缓存数据访问装置,其特征在于,所述本地缓存数据访问装置包括:
获取模块,用于获取本地缓存开源框架的配置文件并解析,得到配置参数;
配置模块,用于根据所述配置参数,创建缓存对象并确定待访问的主服务器与从服务器;
监听器启动模块,用于定时检测是否存在所述从服务器访问本地缓存数据的访问请求;
信息发送模块,用于当检测到存在所述从服务器访问本地缓存数据的访问请求时,获取所述缓存对象的信息并发送至所述主服务器,以供所述主服务器根据所述缓存对象的信息,读取对应本地缓存数据并同步至所述从服务器。
8.根据权利要求7所述的本地缓存数据访问装置,其特征在于,所述配置模块包括:
存在判断单元,用于判断待访问的服务器中是否存在已确认的主服务器;
标准判断单元,用于当待访问的服务器中存在已确认的主服务器时,判断所述主服务器是否符合预设标准;
选举单元,用于当判定所述主服务器不符合预设标准或待访问的服务器中不存在已确认的主服务器时,对所述服务器进行选举操作,以确定主服务器和从服务器。
9.一种本地缓存数据访问设备,其特征在于,所述本地缓存数据访问设备包括:存储器和至少一个处理器,所述存储器中存储有计算机程序,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述计算机程序,以使得所述本地缓存数据访问设备执行如权利要求1-7中任一项所述的本地缓存数据访问方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的本地缓存数据访问方法。
CN202010729217.1A 2020-07-27 2020-07-27 本地缓存数据访问方法、装置、设备及存储介质 Pending CN111858677A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010729217.1A CN111858677A (zh) 2020-07-27 2020-07-27 本地缓存数据访问方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010729217.1A CN111858677A (zh) 2020-07-27 2020-07-27 本地缓存数据访问方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN111858677A true CN111858677A (zh) 2020-10-30

Family

ID=72947022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010729217.1A Pending CN111858677A (zh) 2020-07-27 2020-07-27 本地缓存数据访问方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111858677A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905536A (zh) * 2021-02-07 2021-06-04 全链通有限公司 基于区块链的数据校验同步方法和装置
CN112905554A (zh) * 2021-02-07 2021-06-04 全链通有限公司 基于区块链的数据共享方法和装置
CN113779038A (zh) * 2021-09-26 2021-12-10 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN114338535A (zh) * 2022-01-12 2022-04-12 平安壹钱包电子商务有限公司 基于zookeeper的集群限流方法、系统、设备及存储介质
CN114490917A (zh) * 2020-11-11 2022-05-13 北京神州泰岳软件股份有限公司 一种全文检索功能的实现方法、装置与电子设备

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490917A (zh) * 2020-11-11 2022-05-13 北京神州泰岳软件股份有限公司 一种全文检索功能的实现方法、装置与电子设备
CN112905536A (zh) * 2021-02-07 2021-06-04 全链通有限公司 基于区块链的数据校验同步方法和装置
CN112905554A (zh) * 2021-02-07 2021-06-04 全链通有限公司 基于区块链的数据共享方法和装置
CN112905536B (zh) * 2021-02-07 2024-01-02 全链通有限公司 基于区块链的数据校验同步方法和装置
CN112905554B (zh) * 2021-02-07 2024-05-10 全链通有限公司 基于区块链的数据共享方法和装置
CN113779038A (zh) * 2021-09-26 2021-12-10 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN113779038B (zh) * 2021-09-26 2024-04-16 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN114338535A (zh) * 2022-01-12 2022-04-12 平安壹钱包电子商务有限公司 基于zookeeper的集群限流方法、系统、设备及存储介质
CN114338535B (zh) * 2022-01-12 2023-09-22 平安壹钱包电子商务有限公司 基于zookeeper的集群限流方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111858677A (zh) 本地缓存数据访问方法、装置、设备及存储介质
CN108920272B (zh) 一种数据处理方法、装置、计算机设备及存储介质
US10496669B2 (en) System and method for augmenting consensus election in a distributed database
Boldi et al. Ubicrawler: A scalable fully distributed web crawler
US9817703B1 (en) Distributed lock management using conditional updates to a distributed key value data store
CN112199419B (zh) 一种分布式时序数据库、存储方法、设备及存储介质
US20160004571A1 (en) System and method for load balancing in a distributed system by dynamic migration
CN104202375A (zh) 同步数据的方法及系统
US6675199B1 (en) Identification of active server cluster controller
CN103458036A (zh) 一种集群文件系统的访问装置和方法
WO2020151181A1 (zh) 基于区块链的跨平台数据更新方法、装置和计算机设备
CN107872517B (zh) 一种数据处理方法及装置
US7310802B2 (en) Load balancing of chat servers based on gradients
CN112199427A (zh) 一种数据处理方法和系统
CN110647531A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN113242157B (zh) 一种分布式处理环境下的集中式数据质量监测方法
CN110830582B (zh) 一种基于服务器集群选主方法和装置
CN111552701A (zh) 确定分布式集群中数据一致性的方法及分布式数据系统
CN110619022B (zh) 基于区块链网络的节点检测方法、装置、设备及存储介质
CN114064780A (zh) 会话信息的处理方法、系统、装置、存储介质及电子设备
CN107180034A (zh) MySQL数据库的集群系统
US11366598B1 (en) Dynamic lease assignments in a time-series database
CN112711606A (zh) 数据库访问方法、装置、计算机设备和存储介质
CN117271583A (zh) 优化大数据查询的系统及方法
CN112328632A (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