掌桥专利:专业的专利平台
掌桥专利
首页

元数据读取方法及装置、更新方法及装置、存储装置

文献发布时间:2023-06-19 10:24:22


元数据读取方法及装置、更新方法及装置、存储装置

技术领域

本公开涉及数据管理技术领域,具体而言,涉及一种元数据读取方法、元数据更新方法、元数据读取装置、元数据更新装置、元数据存储装置、电子设备以及计算机可读存储介质。

背景技术

互联网的迅速发展使得其业务流量也呈爆炸式增长,一些高并发大流量的Web应用服务器得到了越来越广泛的应用。元数据作为Web服务器控制及计算的核心逻辑,对于服务器运行性能、效率和稳定性有着重要影响。

在现有的元数据查询方案中,通常先在远程缓存中查询元数据,若未命中,接着在关系数据库中进行元数据的查询。但是,在这种方式中,由于每次获取元数据都需要通过网络进行远程调用,因此在高并发大流量的场景下,网络开销将成为明显瓶颈。

因此提供一种高性能的元数据读取方法及缓存装置对Web服务器开发具有重要意义。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开实施例提供一种数据读取、更新方法及装置、元数据存储装置、电子设备以及计算机可读存储介质,进而可以解决高并发大流量的场景下元数据查询的网络瓶颈问题。

根据本公开的第一方面,提供一种元数据读取方法,包括:

响应于应用端发送的元数据读取请求,在本地缓存中查询所述元数据;

若在所述本地缓存中未查询到所述元数据,则在远程缓存中查询所述元数据;

若在所述远程缓存中未查询到所述元数据,则在远程持久数据库中进行元数据的查询;

读取查询得到的所述元数据。

在本公开的一种示例性实施例中,所述本地缓存包括本地公共缓存及本地进程对象缓存,所述响应于应用端发送的元数据读取请求,在本地缓存中查询所述元数据,包括:

响应于应用端发送的元数据读取请求,在所述本地进程对象缓存中进行所述元数据的查询;

若在所述本地进程对象缓存中未查询到所述元数据,则在所述本地公共缓存中查询所述元数据。

在本公开的一种示例性实施例中,所述方法还包括:

若在所述本地公共缓存中查询到所述元数据,则将所述元数据储存至所述本地进程对象缓存并设置有效期。

在本公开的一种示例性实施例中,所述远程缓存中查询所述元数据之前,所述方法还包括:

若经检查所述应用端已获取服务器级别的锁,则再次在所述本地公共缓存中查询所述元数据;

若在所述本地公共缓存中查询到所述元数据,则释放所述服务器级别的锁,将所查询到的所述元数据缓存至所述本地进程对象缓存中并设置有效期。

在本公开的一种示例性实施例中,所述若在所述本地缓存中未查询到所述元数据,则在远程缓存中查询所述元数据,还包括:

若在所述远程缓存中查询到所述元数据,则将查询到的所述元数据依次缓存至所述本地公共缓存及所述本地进程对象缓存中并设置有效期。

在本公开的一种示例性实施例中,所述若在所述远程缓存中未查询到所述元数据,则在远程持久数据库中进行元数据的查询,还包括:

若在所述远程持久数据库中查询到所述元数据,则将查询到的所述元数据依次缓存至所述本地公共缓存、本地进程对象缓存及远程缓存中并设置有效期。

在本公开的一种示例性实施例中,所述方法还包括:

若在所述远程持久数据库中未查询到所述元数据,则返回空值并将所述空值缓存至所述本地进程对象缓存、本地公共缓存、远程缓存中的一级或多级。

根据本公开的第二方面,提供一种元数据更新方法,包括:

通过元数据管理平台对远程持久数据库及远程缓存中发生变更的元数据进行更新并发布变更消息至消息中间件;

通过Web服务器各进程订阅所述元数据管理平台发布至所述消息中间件的所述元数据变更消息,并在接收到所述变更消息后,依据所述变更消息对所述本地缓存中的元数据进行更新。

在本公开的一种示例性实施例中,所述本地缓存包括本地公共缓存及本地进程对象缓存,所述方法还包括:

Web服务器各进程定期检查所述本地进程对象缓存中的元数据是否存在于所述本地公共缓存中,若不存在,则删除所述本地进程对象缓存中缓存的所述元数据。

根据本公开的第三方面,提供一种元数据读取装置,包括:

第一查询模块,用于响应应用端发送的元数据读取请求,在本地缓存中查询所述元数据;

第二查询模块,用于当在所述本地缓存中未查询到所述元数据时,在远程缓存中查询所述元数据;

第三查询模块,用于当在所述远程缓存中未查询到所述元数据时,在远程持久数据库中进行元数据的查询;

元数据读取模块,用于将查询得到的所述元数据读取出来。

根据本公开的第四方面,提供一种元数据更新装置,包括:

第一更新模块,用于通过元数据管理平台对远程持久数据库及远程缓存中发生变更的元数据进行更新;

消息发布模块,用于通过元数据管理平台将发生变更的所述元数据的变更消息发布至消息中间件;

消息订阅模块,用于Web服务器各进程订阅所述元数据管理平台发布至所述消息中间件的所述元数据变更消息;

第二更新模块,用于在接收到所述变更消息后,依据所述变更消息对所述本地缓存中的元数据进行更新。

根据本公开的第五方面,提供一种元数据存储装置,包括:

本地缓存模块,被设为最高级缓存;

远程缓存模块,被设为次高级缓存;

远程持久数据库模块,被设为最低级存储,存储有系统中可获得的所有元数据;

其中,所述本地缓存模块、远程缓存模块及远程持久数据库模块位于同一网络通信链路。

根据本公开的第六方面,提供一种电子设备,包括:

处理器;

存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述方法。

根据本公开的第七方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述方法。

本公开示例性实施例可以具有以下部分或全部有益效果:

在本公开示例实施方式所提供的元数据读取方法中,Web在接收到应用端发送的元数据读取请求时,首先在本地缓存中查询所述元数据;若在本地缓存中未查询到所述元数据,接着在远程缓存中查询所述元数据;若在所述远程缓存中未查询到所述元数据,则在远程持久数据库中进行元数据的查询,最后将查询得到的所述元数据读取出来。一方面,本公开实施方式提供的元数据读取方法所对应的元数据存储模型设置了本地缓存,服务器在接收到元数据读取请求时,首先在本地缓存中进行元数据的查询,解决了每次获取元数据都需要通过远程网络调用的问题,降低了高并发大流量场景下的网络开销,提高了查询的速度及效率。另一方面,通过多级分层的读取方法,降低了大量请求同时打在远程持久数据库上的可能性,进而可以减轻远程持久数据库因压力过大而发生宕机的风险。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了可以应用本公开实施例的一种图片加解密方法及装置的示例性系统架构的示意图;

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;

图3示意性示出了根据本公开的一个实施例的元数据读取方法的过程的流程图;

图4示意性示出了根据本公开的一个实施例的元数据存储装置的框图;

图5示意性示出了根据本公开的一个实施例的改进后的元数据读取方法的过程的流程图;

图6示意性示出了根据本公开的一个实施例的元数据更新方法的过程的流程图;

图7示意性示出了本公开的一个实施例应用场景中元数据读取方法的过程的示意图;

图8示意性示出了本公开的一个实施例应用场景的元数据更新方法的过程的示意图;

图9示意性示出了根据本公开的一个实施例的元数据读取装置的框图;

图10示意性示出了根据本公开的一个实施例的元数据更新装置的框图;

图11示意性示出了根据本公开的一个实施例的改进后的元数据存储装置的框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出了可以应用本公开实施例的一种元数据读取、更新方法及装置的示例性应用环境的系统架构的示意图。

如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。

本公开实施例所提供的元数据读取、更新方法可以由服务器105执行,相应的,元数据读取、更新方法装置及元数据存储装置也可以设置于服务器105中。本公开实施例所提供的元数据读取、更新方法也可以由终端设备101、102、103与服务器105共同执行,相应地,元数据读取、更新装置及元数据存储装置可以设置于终端设备101、102、103与服务器105中。本示例性实施例中对此不做特殊限定。

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。

需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。

以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。

以下对本公开实施例的技术方案进行详细阐述:

互联网的迅速发展使得Web服务器得到了越来越广泛的应用,而Web服务器业务元数据作为控制Web服务器控制和计算的核心逻辑直接影响着服务器运行的性能、效率和稳定性,因此提供一种高性能的元数据读取方法及缓存装置对Web服务器开发具有重要意义。

针对这一现状,在本示例实施方式中,发明人提供了如图3所示的一种元数据读取方法,具体实现可以如下:

步骤S310:在远程Redis内存数据库中查询所要读取的元数据;

步骤S311:判断在远程Redis内存数据库中是否查询到上述元数据,若查询得到该元数据,则将查询得到的元数据读取出来,若未查询到,则进入步骤S320的流程;

步骤S320:在关系数据库DB中查询上述元数据;

步骤S321:判断在远程Redis内存数据库中是否查询到上述元数据,若查询得到该元数据,则进入步骤S322的流程;

步骤S322:将查询到的元数据读取出来并存储至远程Redis内存数据库中。

相应地,发明人还提出了与上述元数据查询方法相对应的元数据存储模型,该元数据存储模型具体细节如图4所示,主要包括以下模块:

远程缓存模块410被设为最高级缓存;

远程持久数据库模块420被设为次低级存储,存储有系统中可获得的所有元数据;

其中,远程缓存模块及远程持久数据库模块位于同一网络通信链路。但是,经检验上述元数据读取方法及该方法对应的模型存在以下问题:首先,在该方法中,由于应用端未设计本地缓存,每次获取元数据均需要通过远程网络调用,因此在高并发大流量的场景下,网络开销将会成为明显瓶颈;其次,该方法也未对无效Key做处理,存在缓存被击穿导致远程持久数据库崩溃的风险。

为了解决上述方法及模型中存在的问题,在本示例实施方式中,发明人又提出了一种新的技术方案,以下对本公开实施例的技术方案进行详细阐述:

本示例实施方式首先提供了一种元数据读取方法,该元数据读取方法可以应用于上述服务器105,也可以同时应用于上述终端设备101、102、103中的一个或多个以及上述服务器105,如图5所示,具体包括以下步骤:

步骤S510.响应于应用端发送的元数据读取请求,在本地缓存中查询所述元数据;

步骤S520.若在所述本地缓存中未查询到所述元数据,则在远程缓存中查询所述元数据;

步骤S530.若在所述远程缓存中未查询到所述元数据,则在远程持久数据库中进行元数据的查询;

步骤S540.读取查询得到的所述元数据。

在公开示例实施方式所提供的元数据读取方法中,一方面,本公开实施方式提供的元数据读取方法所对应的元数据存储模型设置了本地缓存,服务器在接收到元数据读取请求时,首先在本地缓存中进行元数据的查询,解决了每次获取元数据都需要通过远程网络调用的问题,降低了高并发大流量场景下的网络开销,提高了查询的速度及效率。另一方面,通过多级分层的读取方法,降低了大量请求同时打在数据库上的可能性,进而可以减轻数据库因压力过大而发生宕机的风险。

下面,在另一实施例中,对上述步骤进行更加详细的说明。

在步骤S510中,响应于应用端发送的元数据读取请求,在本地缓存中查询所述元数据。

在本示例实施方式中,应用端可以为终端设备上向服务器发送元数据读取请求的应用程序。例如,该应用端可以为社交软件,也可以为浏览器,还可以为交通出行软件。除此之外,其他向服务器发送元数据读取请求的任一应用程序也都属于本示例实施方式的保护范畴。

在本示例实施方式中,元数据为一种中介数据,是描述数据的数据,可以用来识别、描述和定位基于网络的电子资源。作为一种管理内容的工具,元数据可以提升信息的关联性、有效性,对于信息的升级和交互操作也具有重要意义。举例而言,该元数据可以为用来管理和支配信息资源的管理型元数据,也可以为用来描述和识别信息资源的描述型元数据,还可以为与系统运行相关的技术型元数据。除此之外,实现其他功能的元数据类型也属于本示例实施方式的保护范畴。

在本示例实施方式中,响应应用端发送的元数据读取请求的可以为Web服务器,该服务器的主要功能为提供网上信息浏览服务。举例而言,该服务器可以为Nginx服务器,本示例实施方式中,通过采用Nginx服务器可以在支持高达数万个并发连接数响应的同时,不增加内存、CPU等系统资源消耗且运行稳定。此外,该Web服务器还可以为IIS或Apache等服务器,本示例实施方式对此不做特殊限定。

在本示例实施方式中,本地缓存可以为设置在应用端的缓存结构,也是上述元数据查询方法所对应的元数据存储模型中的最高级缓存,本地缓存的设置使得服务器不必在每次接收到元数据查询请求时都进行远程网络调用,提高了查询的速度和效率,同时也解决了高并发大流量环境下的网络开销瓶颈问题。

在本示例实施方式中,上述本地缓存可以为一级或多级缓存结构。例如,该本地缓存可以为包括本地公共缓存和本地进程级对象缓存的两级缓存结构,其中,本地公共缓存可以采用服务器端OpenResty提供的ngx.shared.DICT进行缓存,服务器的各进程例如可以通过ngx.shared的接口访问该缓存并执行存取操作。除此之外,采用其他方式实现本地公共缓存,使服务器各进程均可以访问该缓存的方式也属于本示例实施方式的保护范畴;本地进程级对象缓存中存储服务器编程语言支持的对象数据类型,故服务器进程语言能直接存取该对象而不需进行转换操作,使得服务器运行性能达到最佳。举例而言,该本地进程级对象缓存可以采用反向代理方式,也可以应用程序缓存的方式,还可以采用浏览器本地缓存实现,本示例实施方式对此不做特殊限定。

在本示例实施方式中,当接收到应用端发送的元数据查询请求时,首先依照从高级到低级的顺序依次查询本地缓存的各级缓存,在某级缓存中查询成功时,将查询到的元数据读取出来,同时存储至一个或多个比该缓存级别高的缓存中并设置有效期。以上述包含本地公共缓存和本地进程级对象缓存的两级缓存机制为例,本地缓存的查询流程具体可以如下:首先在本地进程级对象缓存中进行元数据的查询,若查询成功,则将查询到的元数据读取出来;若查询失败,则进一步在本地公共缓存中进行查询,若在本地公共缓存中查询到该元数据,则将查询到的元数据读取出来,同时存储至本地进程级对象缓存中并设置有效期。若在本地公共缓存中未查询到该元数据,则进入步骤S520的流程。以上场景只是一种示例性说明,本示例性实施例中并不以此为限。

在步骤S520中,若在所述本地缓存中未查询到所述元数据,则在远程缓存中查询所述元数据。

在本示例实施方式中,远程缓存可以为与本地缓存在同一通信链路上的内存数据库。其中,该通信链路可以是无线的,也可以是有线的,或者是有线与无线的混合通信链路。内存数据库所有的操作都是在内存中进行的,降低了IO操作,提高了性能,可以满足实时性。举例而言,该远程缓存可以为Redis分布式内存数据库,还可以为memcached等其他类型的内存数据库,本示例实施方式对此不做特殊限定。

在本示例实施方式中,在远程缓存中查询元数据之前,首先要检查发出该元数据查询请求的应用端是否获取了服务器级别的锁。若经检查该应用端获取了服务器级别的锁,则在本地最低级缓存中再次查询所要读取的元数据,若在本地最低级缓存中查询到该元数据,则释放上述服务器级别的锁,读取查询到的元数据,将该元数据缓存至一级或多级本地缓存中并设置有效期。若在本地最低级缓存中未查询到该元数据,则在远程缓存中查询该元数据,若在远程缓存中查询到该元数据,读取查询到的元数据,将该元数据缓存至一级或多级本地缓存中并设置有效期。若在远程缓存中未查询到该元数据,则进入步骤S530的流程。

在本示例实施方式中,上述服务器级别的锁可以通过resty.lock来实现,服务器各进程需要从远程缓存更新数据时必须获取该锁,获取到该锁之后重新检查本地最高级缓存是否已经缓存所要查询的元数据,这样可以防止高并发时大量请求打到远程缓存,进而波及到远程持久数据库存储,降低了远程持久数据库被高并发流量击垮的风险。需要说明的是,通过其他技术手段实现上述服务器级别的锁也属于本示例实施方式的保护范畴。

以上述包括本地进程对象缓存和本地公共缓存的两级本地缓存结构为例,上述在远程缓存中查询元数据的具体实现可以为:检查发出元数据查询请求的应用端是否已获取服务器级别的锁,若经检查已获取该服务器级别的锁,则再次在本地公共缓存中查询所要读取的元数据。若在本地公共缓存中查询到该元数据,则释放该服务器级别的锁,将查询到的元数据缓存至本地进程对象缓存中并设置有效期。若在本地公共缓存中未查询到该元数据,则在远程缓存中进行该元数据的查询。若在远程缓存中查询到该元数据,则将查询到的元数据依次缓存至本地公共缓存及本地进程对象缓存中并设置有效期。若在远程缓存中未查询到该元数据,则进入步骤S530的流程。需要说明的是,以上场景只是一种示例性说明,本示例性实施例中并不以此为限。

在步骤S530中,若在所述远程缓存中未查询到所述元数据,则在远程持久数据库中进行元数据的查询。

在本示例实施方式中,远程持久数据库为与本地缓存及远程缓存在同一通信链路上的关系数据库。其中,该通信链路可以是无线的,也可以是有线的,或者是有线与无线的混合通信链路。举例而言,该远程持久数据库可以为Mysql数据库、也可以为Oracle数据库、还可以为DB2数据库等其他数据库,本示例实施方式对此不做特殊限定。

在本示例实施方式中,在远程持久数据库中查询元数据的方式可以为通过show语句查询元数据,也可以从INFORMATION_SCHEMA数据库里查询相关表来得到元数据,还可以使用mysqlshow、mysqldump等命令行程序来进行元数据的查询,本示例实施方式对此不做特殊限定。

在本示例实施方式中,若在远程持久数据库中查询到所要读取的元数据,将查询到的元数据依次缓存至本地缓存的各级缓存及远程缓存中并设置有效期。若在远程持久数据库中未查询到该元数据,则返回空值并将该空值缓存至本地缓存及远程缓存的一级或多级中。通过将无效查询设置为空值并缓存至一级或多级缓存中,可以降低缓存被击穿而导致数据库崩溃的风险。

在步骤S540中,读取查询得到的所述元数据。当在上述各级缓存及存储中查询到上述元数据时,将所查询到的元数据读取出来。

接着,本示例实施方式还提供了一种元数据更新方法,如图6所示,具体包括如下步骤:

步骤S610:通过元数据管理平台对远程持久数据库及远程缓存中发生变更的元数据进行更新并发布变更消息至消息中间件;

步骤S620:通过Web服务器各进程订阅所述元数据管理平台发布至所述消息中间件的所述元数据变更消息,并在接收到所述变更消息后,依据所述变更消息对所述本地缓存中的元数据进行更新。

下面,在另一实施例中,对上述步骤进行更加详细的说明。

在步骤S610中,通过元数据管理平台对远程持久数据库及远程缓存中发生变更的元数据进行更新并发布变更消息至消息中间件。

在本示例实施方式中,消息中间件也叫消息队列,是独立部署在服务器上的一种应用,提供接口供其他系统调用,通常用于各个系统之间通信的解耦。举例而言,该消息中间件可以为activeMQ,也可以为rabbitMQ,还可以为kaffka等其他消息中间件,本示例实施方式对此不做特殊限定。

在本示例实施方式中,元数据管理平台对于远程持久数据库及远程缓存中元数据的更新可以为删除,也可以为插入,还可以是修改等其他的数据更变操作,本示例实施方式对此不做特殊限定。

步骤S620:通过Web服务器各进程订阅元数据管理平台发布至所述消息中间件的元数据变更消息,并在接收到变更消息后,依据变更消息对本地缓存中的元数据进行更新。

在本示例实施方式中,Web服务器各进程依据接收到的订阅消息对于本地缓存的更新可以为删除,也可以为插入,还可以是修改等其他的数据更变操作,本示例实施方式对此不做特殊限定。

在本示例实施方式中,当本地缓存为多级缓存结构时,各级缓存之间需要进行同步更新。以上述包括本地进程对象缓存和本地公共缓存的两级本地缓存结构为例,具体实现为:Web服务器各进程定期检查本地进程对象缓存中的元数据是否存在于本地公共缓存中,若不存在,则删除本地进程对象缓存中缓存的元数据。

下面结合图7及图8的具体场景对本示例实施方式中的元数据读取方法及元数据更新方法进行进一步的说明。在该应用场景中,远程持久数据库存储均采用Mysql数据库,被设为第1级缓存;远程缓存均采用远程Redis分布式内存数据库,被设为第2级缓存;本地缓存均为包括本地进程对象缓存和本地公共缓存的两级本地缓存结构。其中,本地进程对象缓存被设为第4级缓存,本地公共缓存被设为第3级缓存。

接下来,结合如图7所示的流程对该具体应用场景中的元数据读取方法进行详细的说明:

在步骤S710中,响应于应用端发送的元数据读取请求,在本地进程对象缓存中进行元数据的查询,若在本地进程对象缓存中未查询到该元数据,则进入步骤S720。

步骤S720:在本地公共缓存中查询上述元数据,若在本地公共缓存中查询到该元数据,则将该元数据储存至本地进程对象缓存并设置有效期,其中,本地公共缓存采用服务器端OpenResty提供的ngx.shared.DICT进行缓存。

在本具体应用场景中,若在本地公共缓存中未查询到上述元数据,则检查发出元数据查询请求的应用端是否已获取服务器级别的锁,若经检查已获取该服务器级别的锁,则再次在本地公共缓存中查询所要读取的元数据。若在本地公共缓存中查询到该元数据,则释放该服务器级别的锁,将查询到的元数据缓存至本地进程对象缓存中并设置有效期。若在本地公共缓存中未查询到该元数据,则进入步骤S730。

步骤S730:在远程Redis分布式内存数据库中进行该元数据的查询,若在远程缓存中查询到该元数据,则将查询到的元数据依次缓存至本地公共缓存及本地进程对象缓存中并设置有效期。若在远程缓存中未查询到该元数据,则进入步骤S740的流程。

步骤S740:在远程Mysql数据库中查询上述元数据,若在远程持久数据库中查询到所要读取的元数据,将查询到的元数据依次缓存至本地缓存的各级缓存及远程缓存中并设置有效期。若在远程持久数据库中未查询到该元数据,则返回空值并将该空值缓存至本地缓存及远程缓存的一级或多级中。

接下来,结合如图8所示的流程对该具体应用场景中的元数据更新方法进行详细的说明:

步骤S810:查找发生变更的元数据,其中上述变更包括元数据的增加、修改及删除等。

步骤S820:通过元数据管理平台对远程持久数据库中发生变更的元数据进行更新。

步骤S830:通过元数据管理平台对远程分布式数据库缓存中发生变更的元数据进行更新。

步骤S840:通过元数据管理平台发布元数据变更消息至消息中间件。

步骤S850:通过Web服务器各进程订阅元数据管理平台发布至消息中间件的元数据变更消息。

步骤S860:根据接收到的订阅消息判断本地缓存是否有需要进行更新的元数据,若不需进行元数据的更新,则继续监听订阅消息,若需要进行更新,则进入步骤S870。

步骤S870:对本地公共缓存中发生变更的元数据进行更新。

步骤S880:对本地进程对象缓存中发生变更的元数据进行更新。

该具体应用场景所对应的元数据更新方法还包括对本地公共缓存及本地进程对象缓存的元数据进行同步,具体包括如下步骤:

步骤S890:通过Web服务器各进程定期检查本地进程对象缓存。

步骤S891:判断本地进程对象缓存中的元数据是否存在于本地公共缓存中。

步骤S892:若本地进程对象缓存中的元数据在本地公共缓存中不存在,则删除本地进程对象缓存中的该元数据。

应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

进一步地,本示例实施方式提供了一种元数据读取装置。参考图9所示,该元数据读取装置900可以包括第一查询模块910、第二查询模块920、第三查询模块930以及元数据读取模块940。其中:

第一查询模块910可以用于响应应用端发送的元数据读取请求,在本地缓存中查询所述元数据;

第二查询模块920可以用于当在所述本地缓存中未查询到所述元数据时,在远程缓存中查询所述元数据;

第三查询模块930可以用于当在所述远程缓存中未查询到所述元数据时,在远程持久数据库中进行元数据的查询;

元数据读取模块940可以用于将查询得到的所述元数据读取出来。

上述元数据读取装置中各模块或单元的具体细节已经在对应的图片加密方法中进行了详细的描述,因此此处不再赘述。

相应地,本示例实施方式中,还提供了一种元数据更新装置。参考图10所示,该元数据更新装置1000可以包括第一更新模块1010、消息发布模块1020、消息订阅模块1030以及消息订阅模块1040。其中:

第一更新模块1010可以用于通过元数据管理平台对远程持久数据库及远程缓存中发生变更的元数据进行更新;

消息发布模块1020可以用于通过元数据管理平台将发生变更的所述元数据的变更消息发布至消息中间件;

消息订阅模块1030可以用于Web服务器各进程订阅所述元数据管理平台发布至所述消息中间件的所述元数据变更消息;

第二更新模块1040可以用于Web服务器各进程在接收到所述变更消息后,依据所述变更消息对所述本地缓存中的元数据进行更新。

在本示例实施方式的一种具体实施例中,上述元数据更新装置还可以包括本地缓存同步模块,主要用于通过Web服务器各进程定期检查所述本地进程对象缓存中的元数据是否存在于所述本地公共缓存中,若不存在,则删除所述本地进程对象缓存中缓存的所述元数据。

上述元数据更新装置中各模块或单元的具体细节已经在对应的图片解密方法中进行了详细的描述,因此此处不再赘述。

除此之外,对应于上述的元数据读取方法及元数据更新方法,本示例实施方式还提供了一种元数据存储装置。参考图11所示,该元数据存储装置1100可以包括本地缓存模块1110、远程缓存模块1120以及远程持久数据库模块1130。其中:

本地缓存模块1110被设为最高级缓存;

远程缓存模块1120被设为次高级缓存;

远程持久数据库模块1130被设为最低级存储,存储有系统中可获得的所有元数据;

其中,所述本地缓存模块、远程缓存模块及远程持久数据库模块位于同一网络通信链路。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述方法。例如,所述电子设备可以实现如图3~图8所示的各个步骤等。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

相关技术
  • 元数据读取方法及装置、更新方法及装置、存储装置
  • 一种元数据更新方法、装置及元数据服务器
技术分类

06120112533265