CN107066570A - 数据管理方法及装置 - Google Patents
数据管理方法及装置 Download PDFInfo
- Publication number
- CN107066570A CN107066570A CN201710223077.9A CN201710223077A CN107066570A CN 107066570 A CN107066570 A CN 107066570A CN 201710223077 A CN201710223077 A CN 201710223077A CN 107066570 A CN107066570 A CN 107066570A
- Authority
- CN
- China
- Prior art keywords
- target data
- data
- caching
- database
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据管理方法及装置,该方法包括:接收客户端发送的数据获取请求,数据获取请求中包括目标数据的标识;根据目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据;若是,在缓存中获取目标数据,并向客户端发送目标数据;若否,判断目标数据是否正在从数据库向缓存中同步,若是,则在第一预设时长之后,在缓存中获取目标数据,并向客户端发送目标数据;若否,则在数据库中获取目标数据,将目标数据存储至缓存,并向客户端发送目标数据。用于提高数据管理的可靠性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据管理方法及装置。
背景技术
在分布式***中通常设置有持久的数据库(例如关系型数据库)和缓存,数据库和缓存中具有相同的数据,数据库用于安全持久的存储数据,缓存用于快速向客户端提供数据。
在实际应用过程中,当客户端向分布式***发送数据获取请求时,分布式***先判断缓存中是否存在客户端需要的数据,若存在,则在缓存中获取数据,并向客户端反馈获取的数据,若不存在,则分布式***在数据库中获取数据,将分布式***中的数据写入缓存,并向客户端反馈获取的数据。然而,在实际应用过程中,当缓存中不存在客户端需要的数据、且大量客户端同时请求该数据时,则分布式***根据大量的数据获取请求,同时在数据库中读取数据,进而导致数据库崩溃,由此可知,上述数据管理方法的可靠性较差。
发明内容
本发明实施例提供一种数据管理方法及装置,提高了数据管理的可靠性。
第一方面,本发明实施例提供一种数据管理方法,包括:
接收客户端发送的数据获取请求,所述数据获取请求中包括目标数据的标识;
根据所述目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的所述目标数据;
若是,在所述缓存中获取所述目标数据,并向所述客户端发送所述目标数据;
若否,判断所述目标数据是否正在从数据库向所述缓存中同步,若是,则在第一预设时长之后,在所述缓存中获取所述目标数据,并向所述客户端发送所述目标数据;若否,则在所述数据库中获取所述目标数据,将所述目标数据存储至所述缓存,并向所述客户端发送所述目标数据。
在一种可能的实施方式中,判断所述目标数据是否正在从数据库向所述缓存中同步,包括:
获取所述目标数据对应的更新标志,所述更新标志用于指示所述目标数据是否正在更新;
根据所述更新标志,判断所述目标数据是否正在从所述数据库向所述缓存中同步。
在另一种可能的实施方式中,在所述数据库中获取所述目标数据,包括:
确定所述数据获取请求对应的多个并发数据获取请求,其中,接收到所述并发数据获取请求的时刻与接收到所述数据获取请求的时刻相同;
分别获取所述数据获取请求和各所述并发数据获取请求对应的请求线程;
在所述多个请求线程中确定处理线程,并通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,所述目标数据的标识中包括所述目标数据对应的业务信息和参数信息,相应的,通过所述处理线程在所述数据库中获取所述目标数据,包括:
根据所述目标数据的业务信息,确定所述业务信息对应的业务接口;
获取所述业务接口对应的业务统一资源定位符URL地址前缀;
根据所述业务URL地址前缀和所述参数信息,确定目标URL地址;
根据所述目标URL地址,通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,通过所述处理线程在所述数据库中获取所述目标数据之后,还包括:
将所述目标数据对应的更新标志设置为更新状态,所述更新状态用于指示所述目标数据正在从所述数据库向所述缓存中同步。
在另一种可能的实施方式中,在所述缓存中获取所述目标数据之后,还包括:
获取所述目标数据的剩余有效时长;
判断所述目标数据的剩余有效时长是否小于第二预设时长;
若是,则在所述数据库中获取所述目标数据对应的最新数据,并通过所述最新数据更新所述目标数据。
第二方面,本发明实施例提供一种数据管理装置,包括接收模块、判断模块、第一获取模块、发送模块、第二获取模块及存储模块,其中,
所述接收模块用于,接收客户端发送的数据获取请求,所述数据获取请求中包括目标数据的标识;
所述判断模块用于,根据所述目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据;
在所述判断模块判断缓存中存在有效的所述目标数据时,所述第一获取模块用于,在所述缓存中获取所述目标数据,所述发送模块用于,向所述客户端发送所述目标数据;
在所述判断模块判断缓存中不存在有效的所述目标数据时,所述判断模块还用于,判断所述目标数据是否正在从数据库向所述缓存中同步,在所述判断模块判断所述目标数据正在从数据库向所述缓存中同步时,所述第一获取模块还用于,在第一预设时长之后,在所述缓存中获取所述目标数据,所述发送模块还用于,向所述客户端发送所述目标数据;在所述判断模块判断所述目标数据未正在从数据库向所述缓存中同步时,所述第二获取模块用于,在所述数据库中获取所述目标数据,所述存储模块用于,将所述目标数据存储至所述缓存,所述发送模块还用于,向所述客户端发送所述目标数据。
在一种可能的实施方式中,所述判断模块具体用于:
获取所述目标数据对应的更新标志,所述更新标志用于指示所述目标数据是否正在更新;
根据所述更新标志,判断所述目标数据是否正在从所述数据库向所述缓存中同步。
在另一种可能的实施方式中,所述第二获取模块包括确定单元、第一获取单元和第二获取单元,其中,
所述确定单元用于,确定所述数据获取请求对应的多个并发数据获取请求,其中,接收到所述并发数据获取请求的时刻与接收到所述数据获取请求的时刻相同;
所述第一获取单元用于,分别获取所述数据获取请求和各所述并发数据获取请求对应的请求线程;
所述第二获取单元用于,在所述多个请求线程中确定处理线程,并通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,所述目标数据的标识中包括所述目标数据对应的业务信息和参数信息,相应的,所述第二获取单元具体用于:
根据所述目标数据的业务信息,确定所述业务信息对应的业务接口;
获取所述业务接口对应的业务统一资源定位符URL地址前缀;
根据所述业务URL地址前缀和所述参数信息,确定目标URL地址;
根据所述目标URL地址,通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,所述装置还包括设置模块,其中,
所述设置模块用于,在所述第二获取单元通过所述处理线程在所述数据库中获取所述目标数据之后,将所述目标数据对应的更新标志设置为更新状态,所述更新状态用于指示所述目标数据正在从所述数据库向所述缓存中同步。
在另一种可能的实施方式中,所述装置还包括第三获取模块、第四获取模块和更新模块,其中,在所述第一获取模块在所述缓存中获取所述目标数据之后,
所述第三获取模块用于,获取所述目标数据的剩余有效时长;
所述判断模块还用于,判断所述目标数据的剩余有效时长是否小于第二预设时长;
所述第四获取模块用于,在所述判断模块判断所述目标数据的剩余有效时长小于第二预设时长时,在所述数据库中获取所述目标数据对应的最新数据;
所述更新模块用于,通过所述最新数据更新所述目标数据。
本发明实施例提供的数据管理方法及装置,在接收到客户端发送的数据获取请求之后,若判断缓存中存在有效的目标数据,则在缓存中获取目标数据,并向客户端发送该目标数据,若判断缓存中不存在有效的目标数据,则进一步判断目标数据是否正在从数据库向缓存中同步,若是,则等待第一预设时长,在第一预设时长之后,目标数据已同步至缓存中,并在缓存中获取目标数据即可,若否,则再从数据库中获取目标数据,将目标数据存储至缓存,并向客户端发送目标数据。在上述过程中,在确定缓存中不包括客户端请求的数据时,不会直接向数据库请求获取目标数据,而是进一步判断目标数据是否正在从数据库向缓存同步,若是,则无需向数据库请求获取目标数据,在等待第一预设时长之后,即可在缓存中获取目标数据,减少了对数据库的访问次数,这样,可以有效避免向数据库发送大量的数据获取请求,避免了数据库崩溃,进而提高数据管理的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据管理方法的应用场景示意图;
图2为本发明实施例提供的数据管理方法的流程示意图;
图3为本发明实施例提供的获取目标数据方法的流程示意图;
图4为本发明实施例提供的数据管理装置的结构示意图一;
图5为本发明实施例提供的数据管理装置的结构示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的数据管理方法的应用场景示意图。请参见图1,包括多个客户端(分别记为101-1至101-N)和分布式***102,分布式***102中包括数据库102-1、缓存102-2和数据管理装置102-3。当客户端需要在分布式***102中获取数据时,向数据管理装置102-3发送数据获取请求,由数据管理装置102-3在数据库102-1或者缓存102-2中获取数据,并向客户端反馈获取得到的数据。数据管理装置102-3还可以根据实际情况将数据库102-1中的数据同步至缓存102-2中。
在本申请中,在数据管理装置接收到客户端发送的数据获取请求之后,若缓存中不包括客户端请求的数据,则数据管理装置先判断客户端请求的数据是否正在从数据库向缓存中同步,若是,则数据管理装置在等待第一预设时长之后,再去缓存中获取数据并向客户端反馈,这样,可以有效避免数据管理装置向数据库发送大量的数据获取请求,避免了数据库崩溃,进而提高数据管理的可靠性。
下面,通过具体实施例,对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行赘述。
图2为本发明实施例提供的数据管理方法的流程示意图。请参见图2,该方法可以包括:
S201、接收客户端发送的数据获取请求,数据获取请求中包括目标数据的标识。
本发明实施例的执行主体为数据管理装置,该数据管理装置可以设置在分布式***中。可选的,该数据管理装置可以通过软件和/或硬件实现。
当客户端需要在分布式***中获取目标数据时,客户端分布式***中的数据管理装置发送数据获取请求,并在数据获取请求中携带目标数据的标识。可选的,目标数据的标识可以通过目标数据所属的应用程序、所属的业务、及对应的参数信息表示。
例如,假设客户端需要获取的目标数据为应用程序1的业务1中的商品标识为1商品的数据,则目标数据的标识可以为:应用程序1:业务1|商品:1。
例如,假设客户端需要获取的目标数据为应用程序ShoppingPortal中的detail业务中的goodsId=1的商品的数据,则目标数据的标识可以为:ShoppingPortal:detail|goodsId:1。
需要说明的是,目标数据的标识还可以通过其它信息表示,本发明实施例对此不作具体限定。
S202、根据目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据。
若是,则执行S203。
若否,则执行S204-S206。
在实际应用过程中,由于缓存中的数据通常需要进行周期性更新的,因此,缓存中的数据为通常设置有有效截止时刻,若当前时刻在有效截止时刻之前,则该数据为有效的数据,否则,该数据为无效的数据。
可选的,可以先根据目标数据的标识,判断缓存中是否存在目标数据,若是,则再判断缓存中的目标数据的有效截止时刻是否在当前时刻之后。
在缓存中,数据通常以key-value的形式存储,相应的,在根据目标数据的标识判断缓存中是否存在目标数据时,可以先根据目标数据的标识,确定目标数据对应的key,然后根据目标数据对应的key在缓存中判断是否存在目标数据。
可选的,目标数据对应的key通常可以包括特殊前缀(用于指示当前缓存为主缓存还是备缓存)、目标数据所属的应用程序、所属的业务、及对应的参数信息表示。相应的,当需要根据目标数据的标识确定目标数据对应的key时,只需在目标数据的标识前边加上缓存对应的特殊前缀即可。例如,假设目标数据的标识为ShoppingPortal:detail|goodsId:1,目标数据在缓存中的key为Main|ShoppingPortal:detail|goodsId:1,当需要根据目标数据的标识确定目标数据对应的key时,只需在ShoppingPortal:detail|goodsId:1之前加Main即可。
S203、在缓存中获取目标数据,并向客户端发送目标数据。
在确定缓存中存在有效的目标数据时,根据目标数据的标识,确定目标数据在缓存中的key,并根据目标数据在缓存中的key,在缓存中获取目标数据,并向客户端发送目标数据。
S204、判断目标数据是否正在从数据库向缓存中同步。
若是,则执行S205。
若否,则执行S206。
在本发明实施例中,每一个数据的value中可以包括更新标志,在正常情况下,数据的更新标志为未更新状态,当需要从数据库中向缓存中同步该数据时,可以将该数据的更新标志设置为更新状态,在将数据从数据库中同步至缓存中之后,将数据的更新标识设置为未更新状态。相应的,可以根据目标数据的更新标志,判断目标数据是否正在从数据库向缓存中同步。
例如,更新标志可以为refreshFlag,当数据的refreshFlag为0时,说明数据没有正在从数据库向缓存中同步,当数据的refreshFlag为1时,说明数据正在从数据库向缓存中同步。
需要说明的是,数据的value中还可以包括其它信息,例如,有效期截止时间戳expiredTime、最近更新时间戳beginRefreshingTime、可用标志availableFlag、强制更新标志forceFlushTime、验证码标志identifyingCode、实际内容更新时间contentUpdateTime、实际存储的内容staticContent等,在实际应用过程中,可以根据实际需要设置value中包括的信息,本发明实施例对此不作具体限定。
S205、在第一预设时长之后,在缓存中获取目标数据,并向客户端发送目标数据。
可选的,第一预设时长通常等于从数据库向缓存中同步数据的时长,当然,在实际应用过程中,可以根据实际需要设置该第一预设时长,本发明实施例对此不作具体限定。
在第一预设时长之后,目标数据通常可以被同步至缓存,相应的,可以在缓存中获取目标数据,并向客户端发送该目标数据。
当然,在第一预设时长之内,也可以实时或周期性的判断缓存中是否存在有效的目标数据,若是,即可在缓存中获取目标数据,这样,可以加快向客户端反馈目标数据的效率。
需要说明的是,目标数据有可能无法正常从数据库同步至缓存,相应的额,在第一预设时长之后,在缓存中仍无法获取得到目标数据,此时,可以向客户端返回空、或者报错等。
S206、在数据库中获取目标数据,将目标数据存储至缓存,并向客户端发送目标数据。
在确定缓存中不存在有效的目标数据,且目标数据也没有正在从数据库向缓存中同步,则数据管理装置根据目标数据的标识,在数据库中获取目标数据,将目标数据存储至缓存,并向客户端发送目标数据。
可选的,可以确定目标数据对应的业务接口,并通过目标数据对应的业务接口在数据库中获取目标数据,这样,可以有效避免在数据库中获取目标数据的过程中对业务逻辑造成的侵入。
本发明实施例提供的数据管理方法,在接收到客户端发送的数据获取请求之后,若判断缓存中存在有效的目标数据,则在缓存中获取目标数据,并向客户端发送该目标数据,若判断缓存中不存在有效的目标数据,则进一步判断目标数据是否正在从数据库向缓存中同步,若是,则等待第一预设时长,在第一预设时长之后,目标数据已同步至缓存中,并在缓存中获取目标数据即可,若否,则再从数据库中获取目标数据,将目标数据存储至缓存,并向客户端发送目标数据。在上述过程中,在确定缓存中不包括客户端请求的数据时,不会直接向数据库请求获取目标数据,而是进一步判断目标数据是否正在从数据库向缓存同步,若是,则无需向数据库请求获取目标数据,在等待第一预设时长之后,即可在缓存中获取目标数据,减少了对数据库的访问次数,这样,可以有效避免向数据库发送大量的数据获取请求,避免了数据库崩溃,进而提高数据管理的可靠性。
在图2所示实施例的基础上,在数据管理装置接收到该数据获取请求的同时,数据管理装置可能还接收到其它用于请求目标数据的并发数据获取请求,且在数据管理装置对并发数据获取请求进行处理时,也可以确定得出缓存中不存在有效的目标数据,且目标数据也没有正在从数据库向缓存中同步,此时,为了避免数据管理装置根据该数据获取请求和多个并发数据获取请求、同时向数据库请求多次目标数据,数据管理装置可以通过对处理线程进行控制,以实现仅向数据库请求一次目标数据,进而可以进一步减少向数据库请求数据的次数。具体的,请参见图3所示的实施例。
图3为本发明实施例提供的获取目标数据方法的流程示意图。请参见图3,该方法可以包括:
S301、确定数据获取请求对应的多个并发数据获取请求。
其中,数据管理装置接收到并发数据获取请求的时刻与接收到数据获取请求的时刻相同,且并发数据获取请求也是用于请求获取目标数据。
可选的,数据管理装置可以根据各个数据获取请求的接收时刻、及数据获取请求用于请求的数据,确定所述数据获取请求对应的并发数据获取请求。
S302、分别获取数据获取请求和各并发数据获取请求对应的请求线程。
在实际应用过程中,在数据管理装置接收到一个数据获取请求之后,数据管理装置则会启动一个请求线程,并通过请求线程对数据获取请求进行处理。当数据管理装置同时接收到多个数据获取请求时,则数据管理装置则会同时启动多个请求线程,并通过该多个请求线程同时对多个数据获取请求进行处理。
可选的,数据获取请求和并发数据获取请求对应的请求线程可以是一个进程中的线程,也可以是多个进程中的线程。
S303、在多个请求线程中确定处理线程,并通过处理线程在数据库中获取目标数据。
当数据处理装置通过多个进程同时对数据获取请求进行处理时,数据获取请求和并发数据获取请求对应的请求线程通常为多个进程中的线程,相应的,数据处理装置可以分别在每一个进程对应的请求线程中确定一个待选处理线程,然后在每一个进程对应的待选处理线程中确定处理线程,并通过处理线程在数据库中获取目标数据。
可选的,当目标数据的标识中包括目标数据对应的业务信息和参数信息时,可以通过如下可行的实现方式在数据库中获取目标数据:根据目标数据的业务信息,确定业务信息对应的业务接口,获取业务接口对应的业务统一资源定位符(Uniform ResourceLocator,URL)地址前缀,根据业务URL地址前缀和参数信息,确定目标URL地址,根据目标URL地址,通过处理线程在数据库中获取目标数据。
例如,假设目标数据的标识为ShoppingPortal:detail|goodsId:1,其中,ShoppingPortal:detail为业务信息,goodsId:1为参数信息,数据管理装置根据ShoppingPortal:detail确定业务接口1,并获取业务接口1的业务URL地址前缀:假设业务URL地址前缀为http://www.a.com/shoppingportal/detail/,则根据该业务URL地址前缀和参数信息goodsId:1,可以确定目标URL地址为:http://www.a.com/shoppingportal/detail/goodsId:1。
可选的,通过处理线程在数据库中获取目标数据之后,将目标数据对应的更新标志设置为更新状态,更新状态用于指示目标数据正在从数据库向缓存中同步。这样,当数据管理装置再次接收到用于请求目标数据的数据获取请求之后,若缓存中没有有效的目标数据,则数据管理装置根据该更新标志,不会再向数据库请求目标数据。
在图3所示的实施例中,在数据管理装置同时接收到多个用于请求目标数据的数据获取请求时,数据管理装置不会根据该多个数据获取请求向数据库请求多次目标数据,数据管理装置会根据该多个数据获取请求,仅向数据库请求一次目标数据,可以减少访问数据库的次数,进一步降低数据库崩溃的风险。
需要说明的是,在数据管理装置同时接收到多个用于请求目标数据的数据请求时,则数据管理装置只需执行一次图3所示的实施例,并根据图3所示的实施例获取目标数据。
在上述任意一个实施例的基础上,在缓存中获取目标数据之后,数据管理装置还获取目标数据的剩余有效时长,判断目标数据的剩余有效时长是否小于第二预设时长,若是,则在数据库中获取目标数据对应的最新数据,并通过最新数据更新目标数据。可选的,第二预设时长可以为目标数据的总时长的五分之一,在实际应用过程中,可以根据实际需要设置该第二预设时长,本发明实施例对此不作具体限定。在该过程中,在缓存中的数据还没有失效时(即将失效),即对缓存中的数据进行更新,这样,可以确保客户端在多数情况下均可以在缓存中获取得到有效的目标数据,进一步提高数据管理的可靠性。
在上述任意一个实施例的基础上,由于缓存中的数据随时可能进行更新,为了避免在缓存中的数据进行更新时,无法正常在缓存中获取数据的问题,可以设置主缓存和备缓存,在主缓存正在进行数据更新时,可以将主缓存设置为不可用,例如,将主缓存的availableFlag设置为0,此时,可以从备缓存中获取数据,在主缓存更新完数据之后,可以再将主缓存设置为可用,例如,将主缓存的availableFlag设置为1,此时,可以从主缓存中获取数据。在实际应用过程中,在对缓存中的数据进行更新时,可以先更新备缓存中的数据,在备缓存中的数据更新完整之后,将主缓存设置为不可用,并更新主缓存中的数据,在主缓存中的数据更新完之后,再将主缓存设置为可用。
在上述任意一个实施例的基础上,客户端可能会多次在分布式***中请求获取目标数据,在客户端第二次、及第二次之后请求获取目标数据时,可以在数据获取请求中携带上一次获取的目标数据的实际更新时间,数据管理装置接收到数据获取请求之后,判断数据获取请求中携带的实际更新时间和缓存中目标数据的实际更新时间是否一致,若一致,则不再向客户端发送目标数据,进而避免向客户端重复发送相同的数据,进而减少网络流量开销、及传输时间。
可选的,调用者后面调用缓存内容提供接口从缓存中获取业务缓存内容时,每次都传入contentUpdateTime时间戳,缓存管理模块通过比对传入的时间戳和缓存中存储的contentUpdateTime时间戳是否一致来返回给调用者是否有业务内容更新,用以防止相同数据的重复传输,减少网络流量和传输时间。
下面,通过具体示例,对上述方法实施例所示的技术方案进行详细说明。
示例性的,在用户通过客户端在网站a上使用shoppingportal应用程序的过程中,当需要获取detail业务中商品1的数据时,通过客户端向数据管理装置发送数据获取请求1,数据获取请求1中包括目标数据的标识:shoppingportal/detail/goodsId:1。
数据管理装置判断主缓存可用,则数据管理装置根据目标数据的标识,确定目标数据的key:Main|ShoppingPortal:detail|goodsId:1,并根据目标数据的key判断主缓存中是否存在有效的目标数据。
假设主缓存中不存在有效的目标数据,则数据管理装置获取该key(Main|ShoppingPortal:detail|goodsId:1)对应的更新标志refreshFlag,假设该key对应的更新标志refreshFlag为0,说明该key对应的目标数据没有正在更新,即目标数据没有正在从数据库向缓存中同步。
数据管理装置获取数据获取请求1对应的并发数据获取请求,假设数据获取请求1对应9个并发数据获取请求,则数据管理装置分别获取数据获取请求1和该9个并发数据获取请求对应的请求线程,假设该10个数据获取请求对应的请求线程分别为请求线程1-请求线程10。
数据管理装置在请求线程1-请求线程10中确定处理线程,假设将请求线程1确定为处理线程,则数据管理装置根据该处理线程(请求线程1)向数据库获取目标数据,请求线程2-请求线程9则进行等待,在请求线程1将获取得到的目标数据存储至缓存中之后,则请求线程2-请求线程9则可以在缓存中获取目标数据,并分别向数据获取请求对应的客户端反馈在缓存中获取得到的目标数据。
在上述过程中,一方面,在确定缓存中不包括客户端请求的数据时,不会直接向数据库请求获取目标数据,而是进一步判断目标数据是否正在从数据库向缓存同步,若是,则无需向数据库请求获取目标数据,在等待第一预设时长之后,即可在缓存中获取目标数据,减少了对数据库的访问次数,这样,可以有效避免向数据库发送大量的数据获取请求,避免了数据库崩溃,进而提高数据管理的可靠性。另一方面,在数据管理装置同时接收到多个用于请求目标数据的数据获取请求时,数据管理装置不会根据该多个数据获取请求向数据库请求多次目标数据,数据管理装置会根据该多个数据获取请求,仅向数据库请求一次目标数据,可以减少访问数据库的次数,进一步降低数据库崩溃的风险。
图4为本发明实施例提供的数据管理装置的结构示意图一。该数据管理装置可以设置在分布式***中,请参见4,该装置可以包括接收模块11、判断模块12、第一获取模块13、发送模块14、第二获取模块15及存储模块16,其中,
所述接收模块用11于,接收客户端发送的数据获取请求,所述数据获取请求中包括目标数据的标识;
所述判断模块12用于,根据所述目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据;
在所述判断模块12判断缓存中存在有效的所述目标数据时,所述第一获取模块13用于,在所述缓存中获取所述目标数据,所述发送模块14用于,向所述客户端发送所述目标数据;
在所述判断模块12判断缓存中不存在有效的所述目标数据时,所述判断模块12还用于,判断所述目标数据是否正在从数据库向所述缓存中同步,在所述判断模块12判断所述目标数据正在从数据库向所述缓存中同步时,所述第一获取模块13还用于,在第一预设时长之后,在所述缓存中获取所述目标数据,所述发送模块14还用于,向所述客户端发送所述目标数据;在所述判断模块12判断所述目标数据未正在从数据库向所述缓存中同步时,所述第二获取模块15用于,在所述数据库中获取所述目标数据,所述存储模块16用于,将所述目标数据存储至所述缓存,所述发送模块14还用于,向所述客户端发送所述目标数据。
本发明实施例提供的数据管理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述判断模块12具体用于:
获取所述目标数据对应的更新标志,所述更新标志用于指示所述目标数据是否正在更新;
根据所述更新标志,判断所述目标数据是否正在从所述数据库向所述缓存中同步。
图5为本发明实施例提供的数据管理装置的结构示意图二。在图4所示实施例的基础上,请参见图5,所述第二获取模块15包括确定单元151、第一获取单元152和第二获取单元153,其中,
所述确定单元151用于,确定所述数据获取请求对应的多个并发数据获取请求,其中,接收到所述并发数据获取请求的时刻与接收到所述数据获取请求的时刻相同;
所述第一获取单元152用于,分别获取所述数据获取请求和各所述并发数据获取请求对应的请求线程;
所述第二获取单元153用于,在所述多个请求线程中确定处理线程,并通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,所述目标数据的标识中包括所述目标数据对应的业务信息和参数信息,相应的,所述第二获取单元153具体用于:
根据所述目标数据的业务信息,确定所述业务信息对应的业务接口;
获取所述业务接口对应的业务统一资源定位符URL地址前缀;
根据所述业务URL地址前缀和所述参数信息,确定目标URL地址;
根据所述目标URL地址,通过所述处理线程在所述数据库中获取所述目标数据。
在另一种可能的实施方式中,所述装置还包括设置模块17,其中,
所述设置模块17用于,在所述第二获取单元153通过所述处理线程在所述数据库中获取所述目标数据之后,将所述目标数据对应的更新标志设置为更新状态,所述更新状态用于指示所述目标数据正在从所述数据库向所述缓存中同步。
在另一种可能的实施方式中,所述装置还包括第三获取模块18、第四获取模块19和更新模块110,其中,在所述第一获取模块13在所述缓存中获取所述目标数据之后,
所述第三获取模块18用于,获取所述目标数据的剩余有效时长;
所述判断模块12还用于,判断所述目标数据的剩余有效时长是否小于第二预设时长;
所述第四获取模块19用于,在所述判断模块12判断所述目标数据的剩余有效时长小于第二预设时长时,在所述数据库中获取所述目标数据对应的最新数据;
所述更新模块110用于,通过所述最新数据更新所述目标数据。
本发明实施例提供的数据管理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例方案的范围。
Claims (10)
1.一种数据管理方法,其特征在于,包括:
接收客户端发送的数据获取请求,所述数据获取请求中包括目标数据的标识;
根据所述目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据;
若是,在所述缓存中获取所述目标数据,并向所述客户端发送所述目标数据;
若否,判断所述目标数据是否正在从数据库向所述缓存中同步,若是,则在第一预设时长之后,在所述缓存中获取所述目标数据,并向所述客户端发送所述目标数据;若否,则在所述数据库中获取所述目标数据,将所述目标数据存储至所述缓存,并向所述客户端发送所述目标数据。
2.根据权利要求1所述的方法,其特征在于,判断所述目标数据是否正在从数据库向所述缓存中同步,包括:
获取所述目标数据对应的更新标志,所述更新标志用于指示所述目标数据是否正在更新;
根据所述更新标志,判断所述目标数据是否正在从所述数据库向所述缓存中同步。
3.根据权利要求1或2所述的方法,其特征在于,在所述数据库中获取所述目标数据,包括:
确定所述数据获取请求对应的多个并发数据获取请求,其中,接收到所述并发数据获取请求的时刻与接收到所述数据获取请求的时刻相同;
分别获取所述数据获取请求和各所述并发数据获取请求对应的请求线程;
在所述多个请求线程中确定处理线程,并通过所述处理线程在所述数据库中获取所述目标数据。
4.根据权利要求3所述的方法,其特征在于,所述目标数据的标识中包括所述目标数据对应的业务信息和参数信息,相应的,通过所述处理线程在所述数据库中获取所述目标数据,包括:
根据所述目标数据的业务信息,确定所述业务信息对应的业务接口;
获取所述业务接口对应的业务统一资源定位符URL地址前缀;
根据所述业务URL地址前缀和所述参数信息,确定目标URL地址;
根据所述目标URL地址,通过所述处理线程在所述数据库中获取所述目标数据。
5.根据权利要求3所述的方法,其特征在于,通过所述处理线程在所述数据库中获取所述目标数据之后,还包括:
将所述目标数据对应的更新标志设置为更新状态,所述更新状态用于指示所述目标数据正在从所述数据库向所述缓存中同步。
6.根据权利要求1或2所述的方法,其特征在于,在所述缓存中获取所述目标数据之后,还包括:
获取所述目标数据的剩余有效时长;
判断所述目标数据的剩余有效时长是否小于第二预设时长;
若是,则在所述数据库中获取所述目标数据对应的最新数据,并通过所述最新数据更新所述目标数据。
7.一种数据管理装置,其特征在于,包括接收模块、判断模块、第一获取模块、发送模块、第二获取模块及存储模块,其中,
所述接收模块用于,接收客户端发送的数据获取请求,所述数据获取请求中包括目标数据的标识;
所述判断模块用于,根据所述目标数据的标识,判断缓存中是否存在有效截止时刻在当前时刻之后的目标数据;
在所述判断模块判断缓存中存在有效的所述目标数据时,所述第一获取模块用于,在所述缓存中获取所述目标数据,所述发送模块用于,向所述客户端发送所述目标数据;
在所述判断模块判断缓存中不存在有效的所述目标数据时,所述判断模块还用于,判断所述目标数据是否正在从数据库向所述缓存中同步,在所述判断模块判断所述目标数据正在从数据库向所述缓存中同步时,所述第一获取模块还用于,在第一预设时长之后,在所述缓存中获取所述目标数据,所述发送模块还用于,向所述客户端发送所述目标数据;在所述判断模块判断所述目标数据未正在从数据库向所述缓存中同步时,所述第二获取模块用于,在所述数据库中获取所述目标数据,所述存储模块用于,将所述目标数据存储至所述缓存,所述发送模块还用于,向所述客户端发送所述目标数据。
8.根据权利要求7所述的装置,其特征在于,所述判断模块具体用于:
获取所述目标数据对应的更新标志,所述更新标志用于指示所述目标数据是否正在更新;
根据所述更新标志,判断所述目标数据是否正在从所述数据库向所述缓存中同步。
9.根据权利要求7或8所述的装置,其特征在于,所述第二获取模块包括确定单元、第一获取单元和第二获取单元,其中,
所述确定单元用于,确定所述数据获取请求对应的多个并发数据获取请求,其中,接收到所述并发数据获取请求的时刻与接收到所述数据获取请求的时刻相同;
所述第一获取单元用于,分别获取所述数据获取请求和各所述并发数据获取请求对应的请求线程;
所述第二获取单元用于,在所述多个请求线程中确定处理线程,并通过所述处理线程在所述数据库中获取所述目标数据。
10.根据权利要求9所述的装置,其特征在于,所述目标数据的标识中包括所述目标数据对应的业务信息和参数信息,相应的,所述第二获取单元具体用于:
根据所述目标数据的业务信息,确定所述业务信息对应的业务接口;
获取所述业务接口对应的业务统一资源定位符URL地址前缀;
根据所述业务URL地址前缀和所述参数信息,确定目标URL地址;
根据所述目标URL地址,通过所述处理线程在所述数据库中获取所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710223077.9A CN107066570A (zh) | 2017-04-07 | 2017-04-07 | 数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710223077.9A CN107066570A (zh) | 2017-04-07 | 2017-04-07 | 数据管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107066570A true CN107066570A (zh) | 2017-08-18 |
Family
ID=59603317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710223077.9A Pending CN107066570A (zh) | 2017-04-07 | 2017-04-07 | 数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066570A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153825A (zh) * | 2017-12-07 | 2018-06-12 | 石化盈科信息技术有限责任公司 | 数据访问方法及装置 |
CN108833495A (zh) * | 2018-05-24 | 2018-11-16 | 努比亚技术有限公司 | 用户请求的数据缓存方法、设备及计算机可读存储介质 |
CN109547406A (zh) * | 2018-10-12 | 2019-03-29 | 中国平安人寿保险股份有限公司 | 数据发送方法及装置、存储介质和电子设备 |
CN109885786A (zh) * | 2019-01-23 | 2019-06-14 | 聚好看科技股份有限公司 | 数据缓存处理方法、装置、电子设备及可读存储介质 |
CN110515962A (zh) * | 2019-08-30 | 2019-11-29 | 北京三快在线科技有限公司 | 缓存数据的方法、装置、电子设备及存储介质 |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨***数据同步处理的方法、装置及*** |
CN110807040A (zh) * | 2019-10-30 | 2020-02-18 | 北京达佳互联信息技术有限公司 | 管理数据的方法、装置、设备及存储介质 |
CN110909008A (zh) * | 2019-11-15 | 2020-03-24 | 政采云有限公司 | 一种数据获取方法、装置以及相关设备 |
CN110990480A (zh) * | 2018-09-30 | 2020-04-10 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN111522836A (zh) * | 2020-04-22 | 2020-08-11 | 杭州海康威视***技术有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111880773A (zh) * | 2020-07-21 | 2020-11-03 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112445859A (zh) * | 2019-08-30 | 2021-03-05 | 北京数聚鑫云信息技术有限公司 | 数据管理方法、装置和*** |
WO2021046750A1 (zh) * | 2019-09-11 | 2021-03-18 | 华为技术有限公司 | 数据重分布方法、装置及*** |
CN113282581A (zh) * | 2021-05-17 | 2021-08-20 | 广西南宁天诚智远知识产权服务有限公司 | 一种数据库数据调用方法及装置 |
CN113449185A (zh) * | 2021-06-25 | 2021-09-28 | 聚好看科技股份有限公司 | 一种信息提醒方法及服务器 |
CN113515530A (zh) * | 2021-03-30 | 2021-10-19 | 贵州白山云科技股份有限公司 | 一种缓存对象更新方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826073A (zh) * | 2009-03-06 | 2010-09-08 | 华为技术有限公司 | 分布式数据库同步方法、设备及*** |
US20140066044A1 (en) * | 2012-02-21 | 2014-03-06 | Manoj Ramnani | Crowd-sourced contact information and updating system using artificial intelligence |
CN104391862A (zh) * | 2014-10-23 | 2015-03-04 | 北京锐安科技有限公司 | 一种缓存数据更新方法及装置 |
-
2017
- 2017-04-07 CN CN201710223077.9A patent/CN107066570A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826073A (zh) * | 2009-03-06 | 2010-09-08 | 华为技术有限公司 | 分布式数据库同步方法、设备及*** |
US20140066044A1 (en) * | 2012-02-21 | 2014-03-06 | Manoj Ramnani | Crowd-sourced contact information and updating system using artificial intelligence |
CN104391862A (zh) * | 2014-10-23 | 2015-03-04 | 北京锐安科技有限公司 | 一种缓存数据更新方法及装置 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153825A (zh) * | 2017-12-07 | 2018-06-12 | 石化盈科信息技术有限责任公司 | 数据访问方法及装置 |
CN108833495A (zh) * | 2018-05-24 | 2018-11-16 | 努比亚技术有限公司 | 用户请求的数据缓存方法、设备及计算机可读存储介质 |
CN110990480A (zh) * | 2018-09-30 | 2020-04-10 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN109547406A (zh) * | 2018-10-12 | 2019-03-29 | 中国平安人寿保险股份有限公司 | 数据发送方法及装置、存储介质和电子设备 |
CN109547406B (zh) * | 2018-10-12 | 2022-05-27 | 中国平安人寿保险股份有限公司 | 数据发送方法及装置、存储介质和电子设备 |
CN109885786A (zh) * | 2019-01-23 | 2019-06-14 | 聚好看科技股份有限公司 | 数据缓存处理方法、装置、电子设备及可读存储介质 |
CN110515962A (zh) * | 2019-08-30 | 2019-11-29 | 北京三快在线科技有限公司 | 缓存数据的方法、装置、电子设备及存储介质 |
CN112445859A (zh) * | 2019-08-30 | 2021-03-05 | 北京数聚鑫云信息技术有限公司 | 数据管理方法、装置和*** |
WO2021046750A1 (zh) * | 2019-09-11 | 2021-03-18 | 华为技术有限公司 | 数据重分布方法、装置及*** |
CN112789606A (zh) * | 2019-09-11 | 2021-05-11 | 华为技术有限公司 | 数据重分布方法、装置及*** |
US11860833B2 (en) | 2019-09-11 | 2024-01-02 | Huawei Cloud Computing Technologies Co., Ltd. | Data redistribution method, apparatus, and system |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨***数据同步处理的方法、装置及*** |
CN110765165B (zh) * | 2019-10-23 | 2022-07-29 | 中国银行股份有限公司 | 一种跨***数据同步处理的方法、装置及*** |
CN110807040A (zh) * | 2019-10-30 | 2020-02-18 | 北京达佳互联信息技术有限公司 | 管理数据的方法、装置、设备及存储介质 |
CN110909008A (zh) * | 2019-11-15 | 2020-03-24 | 政采云有限公司 | 一种数据获取方法、装置以及相关设备 |
CN111522836A (zh) * | 2020-04-22 | 2020-08-11 | 杭州海康威视***技术有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111522836B (zh) * | 2020-04-22 | 2023-10-10 | 杭州海康威视***技术有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111880773A (zh) * | 2020-07-21 | 2020-11-03 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113515530A (zh) * | 2021-03-30 | 2021-10-19 | 贵州白山云科技股份有限公司 | 一种缓存对象更新方法、装置、设备及存储介质 |
CN113515530B (zh) * | 2021-03-30 | 2023-06-13 | 贵州白山云科技股份有限公司 | 一种缓存对象更新方法、装置、设备及存储介质 |
CN113282581A (zh) * | 2021-05-17 | 2021-08-20 | 广西南宁天诚智远知识产权服务有限公司 | 一种数据库数据调用方法及装置 |
CN113449185A (zh) * | 2021-06-25 | 2021-09-28 | 聚好看科技股份有限公司 | 一种信息提醒方法及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066570A (zh) | 数据管理方法及装置 | |
US9911148B2 (en) | Querying for business service processing status information | |
CN103856569B (zh) | 一种同步域名***资源信息的方法及设备 | |
US20190042659A1 (en) | Data writing and reading and apparatus and cloud storage system | |
CN109064345A (zh) | 消息处理方法、***以及计算机可读存储介质 | |
CN110191428B (zh) | 一种基于智能云平台的数据分配方法 | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
CN104954468A (zh) | 资源的分配方法及装置 | |
JP6405255B2 (ja) | 通信システム、キュー管理サーバ、及び、通信方法 | |
CN109783258A (zh) | 一种消息处理方法、装置及服务器 | |
CN110113385A (zh) | 缓存动态配置方法、装置、计算机设备及存储介质 | |
CN110740155B (zh) | 分布式***中的请求处理方法及装置 | |
CN108513145A (zh) | 一种连麦直播的控制方法及装置 | |
CN101673217B (zh) | 一种实现远端程序调用的方法和*** | |
CN107277188A (zh) | 一种确定ip地址归属信息的方法、客户端、服务器及业务*** | |
CN111383038A (zh) | 移动终端的广告展示方法、装置、移动终端和储存介质 | |
CN113626449A (zh) | 数据存储、数据查询方法及相关设备 | |
CN113518013B (zh) | 一种实现心跳机制的处理方法及装置 | |
CN109271367A (zh) | 分布式文件***多节点快照回滚方法及*** | |
CN105991744A (zh) | 用于同步用户应用数据的方法与设备 | |
CN101833585A (zh) | 数据库服务器操作控制***、方法及设备 | |
CN109309858B (zh) | 一种互斥图标的显示方法、装置、设备及介质 | |
CN110935168B (zh) | 用于全球同服架构的分布式id生成方法、装置及设备 | |
CN111506644B (zh) | 一种应用数据处理方法、装置和电子设备 | |
CN109710183B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170818 |
|
RJ01 | Rejection of invention patent application after publication |