CN107623729A - 一种缓存方法、设备及缓存服务系统 - Google Patents
一种缓存方法、设备及缓存服务系统 Download PDFInfo
- Publication number
- CN107623729A CN107623729A CN201710807452.4A CN201710807452A CN107623729A CN 107623729 A CN107623729 A CN 107623729A CN 201710807452 A CN201710807452 A CN 201710807452A CN 107623729 A CN107623729 A CN 107623729A
- Authority
- CN
- China
- Prior art keywords
- caching server
- micro services
- caching
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000003860 storage Methods 0.000 claims abstract description 24
- 239000000872 buffer Substances 0.000 claims abstract description 20
- 238000012986 modification Methods 0.000 claims description 39
- 230000004048 modification Effects 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 17
- 230000008859 change Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 26
- 238000013461 design Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 11
- 230000009286 beneficial effect Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 5
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101150053844 APP1 gene Proteins 0.000 description 2
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 2
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种缓存方法、设备及缓存服务系统,涉及缓存技术领域,能够使缓存服务器根据微服务设备发送的数据操作请求及时更新缓存数据。该缓存方法包括:缓存服务器接收微服务设备发送的数据操作请求;当所述缓存服务器确定所述数据操作请求需要通过其他微服务设备执行时,则所述缓存服务器向所述其他微服务设备转发所述数据操作请求;所述缓存服务器接收所述其他微服务设备根据所述数据操作请求执行相应操作之后发送的执行结果;所述缓存服务器将所述执行结果转发至所述微服务设备,并根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据。本申请用于数据缓存。
Description
技术领域
本申请涉及缓存技术,尤其涉及一种缓存方法、设备及缓存服务系统。
背景技术
微服务架构是一项在云中部署应用和服务的架构风格。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些就应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台使部署、管理和服务功能交付变得更加简单。微服务架构流行后,越来越多的web(World Wide Web,全球广域网)服务开始采用REST(Representational State Transfer,表述性状态传递)风格设计和实现。每个微服务的业务开发,都依赖于第三方微服务提供的RSET接口。
在现有技术中,许多网站通常会使用分布式高速缓存系统(例如:MemCache)技术来提升网站的访问速度。MemCache是一套分布式的高速缓存系统,其是一种开放源代码软件,以BSD license(Berkeley Software Distribution license,伯克利软件发行版许可证)授权发布。对于一些大型的、需要频繁访问数据库的网站,通过使用MemCache缓存系统,访问速度提升效果十分显著。
在使用MemCache缓存系统为微服务设备上运行的微服务提供缓存服务时,如图1所示,在MemCache缓存系统中包括由多个缓存节点(Node)组成的缓存集群,微服务设备使用MemCache提供的客户端开发包,通过TCP(Transmission Control Protocol,传输控制协议)协议和MemCache缓存集群进行通讯并获取缓存数据。若获取缓存失败,则由微服务设备直接调用其他微服务设备提供的REST接口获取数据,之后再利用获取的数据对MemCache缓存集群中的缓存数据进行定时更新。
在上述过程中,发明人发现现有技术中至少存在以下技术问题:当服务需求方微服务设备调用服务提供方微服务设备提供的REST接口获取数据时,MemCache缓存系统需要从服务需求方微服务设备定时获取数据,以对MemCache缓存系统中的缓存数据进行更新。这样就存在缓存数据不能及时更新的问题,进而当微服务设备从MemCache缓存系统中获取缓存数据时,就无法保证所获取的缓存数据是最新数据。另外,因为MemCache缓存系统只对从服务提供方微服务设备获取的数据更新缓存数据,因此,当服务需求方微服务设备需要对服务提供方微服务设备中的数据进行其他修改操作(例如新建、更新、删除)时,MemCache缓存系统无法根据修改操作更新MemCache缓存系统中的缓存数据。
发明内容
本申请的实施例提供一种缓存方法、设备及缓存服务系统,能够在微服务设备发送的数据操作请求需要通过其他微服务设备执行时,通过由缓存服务器来向另一微服务设备转发数据操作请求,使缓存服务器能够根据该数据操作请求以及从另一微服务设备返回的执行结果,对缓存服务器中的缓存数据及时进行更新或清除,进而确保了缓存服务器中的缓存数据始终为最新数据。为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供了一种缓存方法,包括:缓存服务器接收微服务设备发送的数据操作请求。当缓存服务器确定数据操作请求需要通过其他微服务设备执行时,则缓存服务器向其他微服务设备转发数据操作请求。其他微服务设备根据数据操作请求执行相应操作,并向缓存服务器发送执行结果。缓存服务器将执行结果转发至微服务设备,并根据执行结果修改缓存服务器中数据操作请求对应的缓存数据。在本申请实施例提供的缓存方法中,能够在微服务设备发送的数据操作请求需要通过其他微服务设备执行时,根据其他微服务设备发送的执行结果对缓存服务器中的缓存数据及时进行相应的修改,进而保证了缓存服务器中的缓存数据始终为最新数据。避免了现有技术中因缓存服务器无法直接根据微服务设备对其他微服务设备中的数据的获取/修改操作对缓存服务器中的缓存数据进行及时更新,进而无法保证缓存服务器中的缓存数据是最新数据的问题。另外,本申请实施例中通过由缓存服务器来接收微服务设备的数据操作请求,再根据需要由缓存服务器将数据操作请求转发给其他微服务设备,进而避免了在需要通过其他微服务设备执行数据操作请求时,微服务设备所发送的数据操作请求的并发请求能力以及单位时间内请求数需要依赖于其他微服务设备的接收请求的能力的问题。
在第一种可能的设计中,结合第一方面,上述缓存服务器可以为分布式缓存服务器集群中的主缓存服务器,该分布式缓存服务器集群包括主缓存服务器,至少一个从缓存服务器以及缓存集群管理设备。其中,该分布式缓存服务器集群可以为ZooKeeper集群。进而,本申请实施例所述方法还包括,主缓存服务器接收微服务设备通过负载均衡发送的数据操作请求。缓存服务器接收其他微服务设备发送的执行结果之后,所述方法还包括主缓存服务器向缓存集群管理设备发送缓存修改通知,以便缓存集群管理设备对从缓存服务器中数据操作请求对应的缓存数据进行修改。本设计中,当主缓存服务器接收到其他微服务设备发送的执行结果后,缓存集群管理设备则根据主缓存服务器向发送的缓存修改通知,对从缓存服务器中数据操作请求对应的缓存数据进行修改,进而保证了从缓存服务器中缓存数据的及时更新。另外,本设计中在向缓存服务器发送数据操作请求之前,先通过负载均衡确定主缓存服务器,进而可以均衡各缓存服务器的访问量,保证了缓存服务器的可靠性。另外,当分布式缓存服务器集群为ZooKeeper集群时,从缓存服务器可以通过注册的ZooKeeper Watcher获取缓存修改通知,进而可以更便捷的对从缓存服务器中的缓存数据进行更新。
在第二种可能的设计中,结合上述第一方面或者第一种可能的设计,当缓存服务器确定数据操作请求需要通过其他微服务设备执行时,则缓存服务器向其他微服务设备转发数据操作请求,包括:缓存服务器确定数据操作请求为获取GET请求,并且缓存服务器确定在缓存服务器中无法查询到GET请求对应的缓存数据时,则缓存服务器向其他微服务设备转发GET请求。根据执行结果修改缓存服务器中数据操作请求对应的缓存数据,包括:根据执行结果更新缓存服务器中数据操作请求对应的缓存数据。本设计中,当缓存服务器中无法查询到GET请求对应的缓存数据时,通过由缓存服务器向其他微服务设备转发GET请求并且由缓存服务器根据其他微服务设备发送的执行结果及时对缓存数据进行更新,避免了由微服务设备直接调用其他微服务设备提供的GET接口获取数据时,缓存服务器不能直接根据GET请求的操作更新缓存数据,进而导致缓存数据更新不及时的问题。
在第三种可能的设计中,结合上述第一方面或者第一种可能的设计,当缓存服务器确定数据操作请求需要通过其他微服务设备执行时,则缓存服务器向其他微服务设备转发数据操作请求,包括:缓存服务器确定数据操作请求为数据修改请求,具体的数据修改请求可以是新建POST请求或者更新PUT请求或者删除DELETE请求,所述数据修改请求用于对所述其他微服务设备中的数据进行相应修改。则缓存服务器向其他微服务设备转发数据修改请求。缓存服务器根据执行结果修改缓存服务器中数据操作请求对应的缓存数据,包括:缓存服务器根据执行结果清除缓存服务器中数据操作请求对应的缓存数据。本设计中,当微服务设备需要调用其他微服务设备的POST或者PUT或者DELETE接口更新数据时,采用由缓存服务器接收POST请求或者PUT请求或者DELETE请求并将请求转发给其他微服务,并根据其他微服务设备的执行结果对缓存数据中对应的数据进行清除,进而使缓存服务器能够根据微服务调用其他微服务设备的POST或者PUT或者DELETE接口所更新的数据,对缓存服务器中对应的缓存数据同步进行清除,保证了缓存服务器中数据为最新数据。避免了当微服务设备调用其他微服务设备的POST或者PUT或者DELETE接口对数据进行修改后,缓存服务器不能根据修改请求同步更新缓存数据的问题。
在第四种可能的设计中,结合上述第一方面或者上述三种可能的设计,本设计中,缓存服务器与微服务设备之间使用表述性状态传递REST接口进行通讯。同时,缓存服务器中采用JS对象标记JSON格式来存储缓存数据。本设计中,缓存服务器可以与微服务设备之间用REST接口通讯,并关联REST接口的数据操作请求,具体包括GET请求或者POST请求或者PUT请求或者DELETE请求,实现在有GET或者POST或者PUT或者DELETE操作情况下及时更新缓存服务器中缓存数据的效果。并且由于本设计中的缓存服务器利用了REST接口和微服务设备进行通讯,进而使缓存服务器支持各种微服务开发框架,扩大了缓存服务器的使用范围。另外,本设计中缓存服务器采用了与微服务设备的REST接口传输数据相同的JSON格式数据,进而解决了微服务设备从缓存服务器中获取数据后还需要对缓存数据进行文本解析的问题,提升处理性能。同时,采用JSON格式来存储数据,还解决了现有技术中因为MemCache缓存系统对缓存数据的key、value的限制而导致对缓存数据大小的约束的问题。
第二方面,本申请实施例提供了另一种缓存方法,包括:微服务设备通过表述性状态传递REST接口向缓存服务器发送数据操作请求,以便缓存服务器在确定数据操作请求需要通过其他微服务设备执行后,通过REST接口向其他微服务设备转发数据操作请求;微服务设备通过REST接口接收缓存服务器发送的执行结果。其中,数据操作请求包括:GET请求、POST请求、PUT请求或者DELETE请求中的任一种。本申请实施例提供的缓存方法中,当微服务设备需要对数据进行操作时,先将数据操作请求发送至缓存服务器,再由缓存服务器确定该数据操作请求若需要通过其他微服务设备执行,则由缓存服务器向其他微服务设备转发数据操作请求。进而使微服务设备调用其他微服务设备的GET或者POST或者PUT或者DELETE接口进行数据操作时,缓存服务器可以感知到该数据操作请求并根据数据操作请求及时对缓存数据进行相应的更新。另外,本申请实施例中通过由缓存服务器来接收微服务设备的数据操作请求,再根据需要由缓存服务器将数据操作请求转发给其他微服务设备,进而避免了在需要通过其他微服务设备执行数据操作请求时,微服务设备所发送的数据操作请求的并发请求能力以及单位时间内请求数依赖于其他微服务设备的接收请求的能力的问题。
第三方面,本申请实施例提供了一种缓存服务器,该缓存服务器包括:接收模块用于接收微服务设备发送的数据操作请求;发送模块用于当确定数据操作请求需要通过其他微服务设备执行时,向其他微服务设备转发数据操作请求;接收模块还用于接收其他微服务设备根据数据操作请求执行相应操作之后发送的执行结果;发送模块还用于将执行结果转发至微服务设备;修改模块用于根据执行结果修改缓存服务器中数据操作请求对应的缓存数据。本申请实施例提供的缓存服务器可以为分布式缓存服务器集群中的主缓存服务器,该分布式缓存服务器集群包括主缓存服务器、至少一个从缓存服务器以及缓存集群管理设备,该分布式缓存服务器集群可以是ZooKeeper集群;其中,接收模块具体用于接收微服务设备通过负载均衡发送的数据操作请求;发送模块还用于接收模块接收其他微服务设备发送的执行结果之后,向缓存集群管理设备发送缓存修改通知,以便缓存集群管理设备对从缓存服务器中数据操作请求对应的缓存数据进行修改。当数据操作请求为获取GET请求时,发送模块具体用于当确定处理模块确定数据操作请求为获取GET请求并且在缓存服务器中无法查询到GET请求对应的缓存数据时,向其他微服务设备转发GET请求;修改模块具体用于根据所述执行结果更新缓存服务器中数据操作请求对应的缓存数据。当数据操作请求为用于对所述其他微服务设备中的数据进行相应修改的数据修改请求时,具体的数据修改请求包括:POST请求、PUT请求、DELETE请求中的任一种,发送模块具体用于当数据操作请求为数据修改请求时向其他微服务设备转发数据修改请求;修改模块具体用于根据执行结果清除缓存服务器中数据操作请求对应的缓存数据。另外,在本申请实施例中缓存服务器与微服务设备之间使用表述性状态传递REST接口进行通讯;缓存服务器中采用JS对象标记JSON格式存储缓存数据。基于同一发明构思,由于该缓存服务器解决问题的原理以及有益效果可以参见上述第一方面和第一方面的各可能的方法实施方式以及所带来的有益效果,因此该缓存服务器的实施可以参见上述第一方面和第一方面的各可能的方法的实施方式,重复之处不再赘述。
第四方面,本申请实施例提供了一种微服务设备,该微服务设备包括:发送模块用于通过REST接口向缓存服务器发送数据操作请求,以便缓存服务器在确定数据操作请求需要通过其他微服务设备执行后,通过REST接口向其他微服务设备转发数据操作请求;接收模块用于发送模块向缓存服务器发送数据操作请求后,通过REST接口接收缓存服务器发送的执行结果。其中,数据操作请求包括:GET请求、POST请求、PUT请求和DELETE请求中的任一种。基于同一发明构思,由于该微服务设备解决问题的原理以及有益效果可以参见上述第二方面和第二方面的各可能的方法实施方式以及所带来的有益效果,因此该微服务设备的实施可以参见上述第二方面和第二方面的各可能的方法的实施方式,重复之处不再赘述。
第五方面,本申请实施例提供一种缓存服务器,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当缓存服务器运行时,该处理器执行该存储器存储的该计算机执行指令,以使该缓存服务器执行上述第一方面中任意一项的缓存方法;基于同一发明构思,所述处理器调用存储在所述存储器中的指令以实现上述第一方面的方法设计中的方案,由于该缓存服务器解决问题的实施方式以及有益效果可以参见上述第一方面和第一方面的各可能的方法的实施方式以及有益效果,因此该缓存服务器的实施可以参见方法的实施,重复之处不再赘述。
第六方面,本申请实施例提供了一种计算机存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第一方面的缓存方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行如第一方面所述的缓存方法。
第八方面,本申请实施例提供一种微服务设备,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当微服务设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该微服务设备执行上述第二方面中任意一项的缓存方法;基于同一发明构思,所述处理器调用存储在所述存储器中的指令以实现上述第二方面的方法设计中的方案,由于该微服务设备解决问题的实施方式以及有益效果可以参见上述第二方面和第二方面的各可能的方法的实施方式以及有益效果,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
第九方面,本申请实施例提供了一种计算机存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第二方面的缓存方法。
第十方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行如第二方面所述的缓存方法。
第十一方面,本申请实施例提供一种分布式缓存服务器集群,包括上述第三方面的缓存服务器、至少一个从缓存服务器以及缓存集群管理设备。
第十二方面,本申请实施例提供一种缓存服务系统,该缓存服务系统包括上述第三方面的缓存服务器以及第四方面的微服务设备,或者包括上述第十一方面的分布式缓存服务器集群以及第四方面的微服务设备。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中所采用的一种缓存服务系统架构示意图;
图2为ZooKeeper架构的系统架构示意图;
图3为本申请的实施例提供的一种缓存服务系统的结构示意图;
图4为本申请的实施例提供的一种缓存服务系统的结构示意图;
图5为本申请的实施例提供的一种缓存服务系统的结构示意图;
图6为本申请的实施例提供的一种缓存方法的流程示意图;
图7为本申请的实施例提供的一种缓存方法的流程示意图;
图8为本申请的实施例提供的一种缓存方法的流程示意图;
图9为本申请的实施例提供的一种缓存服务器的结构示意图;
图10为本申请的实施例提供的一种缓存服务器的结构示意图;
图11为本申请的实施例提供的一种缓存服务器的结构示意图;
图12为本申请的实施例提供的一种微服务设备的结构示意图;
图13为本申请的实施例提供的一种微服务设备的结构示意图;
图14为本申请的实施例提供的一种微服务设备的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
针对本申请的实施例用到的技术数据描述如下:
REST(Representational State Transfer,表述性状态传递):一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST包括了一组结构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。RESTful使用轻量级web服务,URL(Uniform Resource Locator,统一资源定位符)定位资源,用HTTP(HyperText Transfer Protocol,超文本传输协议)动词(GET,POST,DELETE,PUT)描述操作。其中,GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。微服务架构流行后,越来越多的web服务开始采用REST风格设计和实现。每个微服务的业务开发,都依赖于第三方微服务提供的RSET接口。REST接口传输数据通常使用JSON(JavaScript Object Notation,JS对象标记)格式。但是在使用第三方微服务的RSET接口时,会遇到以下问题:1.并发请求能力、单位时间内请求数依赖第三方微服务,不能根据需求方微服务的需要无限扩展。2.浏览器、后台服务可以对第三方微服务的GET请求数据进行缓存,但是无法控制缓存的更新。在执行POST/PUT/DELETE(其中,“A/B”表示A或者B)等操作后,无法保证从缓存中获取的是最新数据。
ZooKeeper是一种分布式的、开放源码的分布式应用程序协调服务软件,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。其系统结构如图2所示,其中利用ZooKeeper建立的集群中包括多个服务节点,客户端可以选择接入其中的一个服务节点接收服务。ZooKeeper集群具有集群管理能力,可以在多个服务节点中选出主节点,保证高可靠性。ZooKeeper客户端可以用于配置数据同步,比如客户端配置/APP1路径,并且实现回调方法Watcher,那么在ZooKeeper上/APP1路径数据发生变化的时候,每个客户端都会收到通知。
Nodejs是一个基于Chrome V8引擎的JavaScript运行环境。Nodejs使用了一个事件驱动、非阻塞式I/O(input/output,输入/输出端口)的模型,使其轻量又高效。JSON格式数据可以当作Nodejs的原生对象在内存存储并进行程序处理,无需额外转换。Express是一个基于Nodejs平台的极简、灵活的web应用开发框架。可以配置对特定URL的GET/POST/DELETE/PUT的javascript处理脚本。
Key-Value是一种分布式存储系统,其中将键(key)与值(value)对应存储,在进行查询时,可以通过键key快速查询到对应的值value,具有查询速度快、存放数据量大、支持高并发的优点,是一种非常适合通过主键进行查询的方式。
本申请的实施例应用于为微服务设备上运行的微服务提供缓存服务的场景下。如图3所示,为本申请实施例提供的一种缓存服务系统的结构示意图,该缓存服务系统包括一个作为服务需求方的微服务设备101,缓存服务器1021,至少一个作为服务提供方的微服务设备103。
在具体实现中,作为一种实施例,如图4所示,缓存服务器1021可以是缓存服务器集群中的主缓存服务器,该缓存服务系统还包括缓存服务器集群,缓存服务器集群中包括多个缓存服务器(1021-102n)。例如图4中的缓存服务器集群102。其中,如图5所示,缓存服务器集群102可以是ZooKeeper集群,缓存服务器1021-102n可以是采用nodejs运行环境的Express开发框架的缓存Nodejs节点。在具体实现中,作为一种实施例,如图5所示,缓存服务器与微服务设备之间可以通过REST接口进行通讯。缓存服务器中可以采用JS对象标记JSON格式存储缓存数据。
基于上述的缓存服务系统,本申请的实施例主要通过第一微服务设备将用于获取或修改数据的数据操作请求发送至缓存服务器,当缓存服务器确定该请求需要通过第二微服务设备执行时,通过缓存服务器来向第二微服务设备转发数据操作请求,使缓存服务器能够根据该数据操作请求以及从第二微服务设备返回的执行结果,对缓存服务器中的缓存数据及时进行更新或清除,进而确保了缓存服务器中的缓存数据始终为最新数据。
具体的,本申请实施例提供了一种缓存方法,参照图6所示,包括以下步骤:
S101、第一微服务设备向缓存服务器发送数据操作请求。
其中,缓存服务器可以为分布式缓存服务器集群中的主缓存服务器,分布式缓存服务器集群包括主缓存服务器、至少一个从缓存服务器以及缓存集群管理设备。进一步的,该分布式缓存服务器集群包括ZooKeeper集群。
具体的,步骤S101可以包括:主缓存服务器接收第一微服务设备通过负载均衡并通过REST接口发送的数据操作请求。在向缓存服务器发送数据操作请求之前,先通过负载均衡确定主缓存服务器,进而可以均衡各缓存服务器的访问量,保证了缓存服务器的可靠性。此外,本申请实施例中通过由缓存服务器来接收微服务设备的数据操作请求,再根据需要由缓存服务器将数据操作请求依次转发给其他微服务设备,由于缓存服务器可以暂时缓存该数据操作请求,因此当微服务设备发送多个数据操作请求或者多个微服务设备发送数据操作请求时,先由缓存服务器缓存然后再根据需要依次转发给其他微服务设备,进而避免了在需要通过其他微服务设备执行数据操作请求时,微服务设备所发送的数据操作请求的并发请求能力以及单位时间内请求数需要依赖于其他微服务设备的接收请求的能力的问题。
另外,在本申请实施例中缓存服务器可以与微服务设备之间用REST接口通讯,进而使缓存服务器可以关联REST接口的数据修改请求,即GET/POST/PUT/DELETE请求,实现当有POST/PUT/DELETE操作情况下及时更新缓存服务器中缓存数据的效果。并且由于本设计中的缓存服务器利用了REST接口和微服务设备进行通讯,进而使缓存服务器支持各种微服务开发框架,扩大了缓存服务器的使用范围。
S102、缓存服务器接收第一微服务设备发送的数据操作请求后,当缓存服务器确定数据操作请求需要通过第二微服务设备执行时,缓存服务器向第二微服务设备转发数据操作请求。
具体的,当缓存服务器确定该数据操作请求不能通过缓存服务器中的缓存数据执行时,则缓存服务器向数据操作请求对应的第二微服务设备转发数据操作请求。
例如,当缓存服务器确定数据操作请求为获取GET请求,并且缓存服务器确定在缓存服务器中无法查询到GET请求对应的缓存数据时,则确定需要通过第二微服务设备获取数据,则缓存服务器通过REST接口向所述GET请求对应的第二微服务设备转发GET请求。或者,当缓存服务器确定数据操作请求为用于对所述第二微服务设备中的数据进行相应修改的数据修改请求时(如GET/POST/PUT/DELETE请求),则缓存服务器通过REST接口向其他微服务设备转发数据修改请求。
S103、缓存服务器接收第二微服务设备根据数据操作请求执行相应操作之后发送的执行结果。
S104、缓存服务器根据执行结果修改缓存服务器中数据操作请求对应的缓存数据。
具体的,所述缓存服务器中采用JS对象标记JSON格式存储所述缓存数据。通过缓存服务器采用了与微服务设备的REST接口传输数据相同的JSON格式数据,解决了微服务设备从缓存服务器中获取数据后还需要对缓存数据进行文本解析的问题,提升处理性能。同时,采用JSON格式来存储数据,还解决了现有技术中因为MemCache对缓存数据的key、value的限制而导致对缓存数据大小的约束的问题。
S105、缓存服务器将执行结果转发至第一微服务设备。
可选的,在本申请实施例中,当缓存服务器为分布式缓存服务器集群中的主缓存服务器时,在步骤S104后,所述缓存方法还包括:
S106、主缓存服务器向缓存集群管理设备发送缓存修改通知,以便缓存集群管理设备对从缓存服务器中数据操作请求对应的缓存数据进行修改。
其中,缓存修改通知中携带了主缓存服务器中已经修改的缓存数据的地址,即主缓存服务器中已经修改的数据操作请求对应的缓存数据的地址。具体的,在主缓存服务器向缓存集群管理设备发送缓存修改通知后,缓存集群管理设备会记录主缓存服务器中已经修改的缓存数据的地址,并向从缓存服务器发送缓存更新通知。从缓存服务器根据缓存更新通知,从主缓存服务器中对应的地址获取缓存数据,并对自己的缓存数据进行更新,进而使从缓存服务器中的缓存数据与主缓存服务器中的缓存数据保持同步更新,确保了当有微服务设备从从缓存服务器中获取缓存数据时,所获取的缓存数据为已经更新后的数据。例如,当分布式缓存服务器集群为ZooKeeper集群时,从缓存服务器可以根据注册的ZooKeeper Watcher,获取到缓存更新通知。本申请实施例中,当主缓存服务器接收到第二微服务设备发送的执行结果后,缓存集群管理设备则根据主缓存服务器向发送的缓存修改通知,对从缓存服务器中数据操作请求对应的缓存数据进行修改,进而保证了从缓存服务器中缓存数据的及时更新。
在本申请实施例提供的缓存方法中,能够在微服务设备发送的数据操作请求需要通过其他微服务设备执行时,根据其他微服务设备发送的执行结果对缓存服务器中的缓存数据及时进行相应的修改,进而保证了缓存服务器中的缓存数据始终为最新数据。避免了现有技术中因缓存服务器无法直接根据微服务设备对其他微服务设备中的数据的获取/修改操作对缓存服务器中的缓存数据进行及时更新,进而无法保证缓存服务器中的缓存数据是最新数据的问题。
当将本申请上述实施例应用于微服务设备需要调用其他微服务设备的GET接口获取数据的场景时,本申请实施例提供另一种缓存方法,参照图7所示,包括以下步骤:
S201、第一微服务设备向缓存服务器发送GET请求。
具体的,步骤S201可以包括:主缓存服务器接收第一微服务设备通过负载均衡发送的GET请求。
S202、当缓存服务器确定数据操作请求为GET请求,并且缓存服务器确定在缓存服务器中无法查询到GET请求对应的缓存数据时,缓存服务器向第二微服务设备转发数据操作请求。
具体的,当缓存服务器接收到上述GET请求后,用GET请求中的URL作为目标缓存数据的key,进而在缓存服务器中的缓存数据中查询对应的数据。若对应的数据存在,则直接向微服务设备返回目标缓存数据。若对应的缓存数据不存在,则缓存服务器通过REST接口向GET请求对应的微服务设备转发GET请求。
S203、缓存服务器接收第二微服务设备根据GET请求执行相应操作之后发送的执行结果。
具体的,缓存服务器通过REST接口向第二微服务设备转发GET请求之后,第二微服务设备根据GET请求查询对应的目标数据,并将查询到的目标数据包含在执行结果中发送至缓存服务器。
S204、缓存服务器根据执行结果修改缓存服务器中数据操作请求对应的缓存数据。
具体的,当缓存服务器为采用nodejs运行环境的Express开发框架的缓存服务器时,步骤S204具体可以包括:
S2041、将GET请求的URL在Express中作为javascript处理脚本的入口。
S2042、将GET请求的URL作为缓存数据的key。
S2043、根据GET请求的URL,通过javascript处理脚本,在缓存服务器的内存中建立URL和缓存JSON数据的映射表并存储数据缓存。
需要说明的是,在本实施例中,缓存数据默认使用缓存服务器的内存存储,更新缓存数据时,记录累计保存的缓存数据的大小;使用缓存数据时,记录访问时间。当累计缓存数据超过保存缓存数据的门限大小时,清除超过门限时长(例如1天)未使用缓存。若清除结束缓存服务器的内存的空间仍不足,则将缓存数据存储在缓存服务器的本地文件中,根据缓存数据对应的URL生成文件名。
S205、缓存服务器将执行结果转发至第一微服务设备。
具体的,缓存服务器向第一微服务设备返回其他微服务设备查询到的目标数据。
需要说明的是,在本实施例中,当GET请求为带URL参数的请求时,则不执行步骤S204,直接根据步骤S205将查询到的目标数据发送至微服务设备。
可选的,在本实施例中,当缓存服务器为分布式缓存服务器集群中的主缓存服务器时,在步骤S204后,所述缓存方法还包括:
S206、主缓存服务器向缓存集群管理设备发送缓存修改通知,以便缓存集群管理设备对从缓存服务器中数据操作请求对应的缓存数据进行修改。具体包括:
S2061、主缓存服务器向缓存集群管理设备发送缓存修改通知。
S2062、缓存集群管理设备修改对应URL的数据,并记录主缓存服务器中已经修改的数据操作请求对应的缓存数据的地址,并向从缓存服务器发送缓存更新通知。
S2063、从缓存服务器获取到缓存更新通知,进而从主缓存服务器中对应的地址获取缓存数据并对自己的缓存数据进行更新。
当分布式缓存服务器集群为ZooKeeper集群时,修改ZooKeeper集群管理设备中相应URL的路径配置,记录主缓存服务器中已经修改的数据操作请求对应的缓存数据的地址,并触发ZooKeeper Watcher。从缓存服务器根据ZooKeeper Watcher,获取到缓存更新通知,进而从主缓存服务器中对应的地址获取缓存数据并对自己的缓存数据进行更新。
在上述实施例所提供的缓存方法中,在微服务设备向缓存服务器发送数据操作请求后,当缓存服务器中无法查询到GET请求对应的缓存数据时,通过由缓存服务器向其他微服务设备转发GET请求并且由缓存服务器根据其他微服务设备发送的执行结果及时对缓存数据进行更新,避免了由微服务设备直接调用其他微服务设备提供的GET接口获取数据时,缓存服务器不能直接根据GET请求的操作更新缓存数据,进而导致缓存数据更新不及时的问题。另外,本申请上述方法实施例涉及的各步骤的所有相关内容均可以援引到第一种实施例中的相应描述,重复部分在此不再赘述。
当将本申请上述第一种实施例应用于调用其他微服务设备的数据修改接口修改数据的场景时,本申请实施例提供另一种缓存方法,参照图8所示,包括以下步骤:
S301、缓存服务器接收第一微服务设备发送的用于对所述第二微服务设备中的数据进行相应修改的数据修改请求。
具体的,数据修改请求包括:POST请求、PUT请求和DELETE请求中的任一请求,其分别表示对数据修改请求对应的其他微服务设备中的数据进行相应修改。
S302、缓存服务器向第二微服务设备转发数据修改请求。
S303、缓存服务器接收第二微服务设备根据数据修改请求执行相应操作之后发送的执行结果。
具体的,缓存服务器通过REST接口向第二微服务设备转发POST/PUT/DELETE请求之后,第二微服务设备根据POST/PUT/DELETE请求查询对应的目标数据,并对查询到的目标数据执行相应的修改,并向缓存服务器返回执行结果。
S304、缓存服务器根据执行结果清除缓存服务器中数据操作请求对应的缓存数据。
具体的,当缓存服务器为采用nodejs运行环境的Express开发框架的缓存服务器时,在Express中,用数据修改请求携带的URL作为待清除缓存数据的key,在缓存服务器中的缓存数据中查询到待清除缓存数据,并将该待清除缓存数据清除。
需要说明的是,在本实施例中,对于非URL严格匹配场景中,因为同一份数据其对应的GET请求所携带的URL和修改请求(POST/PUT/DELETE请求)所携带的URL可能是不一样的。因此需要增加URL配置规则,配置PUT/DELETE/POST请求的URL对应GET请求的URL,通过规则匹配保证在进行修改请求后,能够从缓存服务器查询到对应的缓存数据并进行清除。其中,当有URL配置规则时,则优先使用匹配规则。例如,在非URL严格匹配场景中,第一微服务设备需要对第二微服务设备中的数据A进行相应操作:当需要获取数据A时,则向第二微服务设备发送GET请求,其中GET请求所携带的用于指向数据A的URL地址为“URL1”;而当需要修改数据A时,(具体的例如需要更新数据A时)向第二微服务设备发送PUT请求,此时PUT请求中所携带的用于指向数据A的URL地址为可能并不是“URL1”而是“URL2”。因此在非URL严格匹配场景中,需要增加URL配置规则,以使得在利用PUT请求中的“URL2”地址对第二微服务中的数据A进行修改后,缓存服务器能够根据URL匹配规则,将缓存数据中“URL1”地址对应的缓存数据进行更新。
S305、缓存服务器将执行结果转发至第一微服务设备。
可选的,在本申请实施例中,当缓存服务器为分布式缓存服务器集群中的主缓存服务器时,在步骤S304后,所述缓存方法还包括:
S306、主缓存服务器向缓存集群管理设备发送缓存清除通知,以便缓存集群管理设备对从缓存服务器中数据操作请求对应的缓存数据进行清除。
S3061、主缓存服务器向缓存集群管理设备发送缓存清除通知。
S3062、缓存集群管理设备修改对应URL的缓存数据,并向从缓存服务器发送缓存清除通知。
S3063、从缓存服务器获取到缓存清除通知,对从缓存服务器中对应的缓存数据进行清除。
当分布式缓存服务器集群为ZooKeeper集群时,则从缓存服务器根据注册的ZooKeeper Watcher,获取到缓存清除通知,对从缓存服务器中对应的缓存数据进行清除。
在本申请上述实施例所提供的缓存方法中,当微服务设备需要调用其他微服务设备的POST/PUT/DELETE接口更新数据时,采用由缓存服务器接收POST/PUT/DELETE请求并将请求转发给其他微服务,并根据其他微服务设备的执行结果对缓存数据中对应的数据进行清除,进而使缓存服务器能够根据微服务调用其他微服务设备的POST/PUT/DELETE接口所更新的数据,对缓存服务器中对应的缓存数据同步进行清除,保证了缓存服务器中数据为最新数据。避免了当微服务设备调用其他微服务设备的POST/PUT/DELETE接口对数据进行修改后,缓存服务器不能根据修改请求同步清除缓存数据的问题。另外,本申请上述方法实施例涉及的各步骤的所有相关内容均可以援引到上文两个实施例中的相应描述,重复部分在此不再赘述。
本申请实施例提供一种缓存服务器,用于执行上述实施例所提供的缓存方法。本申请实施例可以根据上述方法实例对缓存服务器进行功能模块的划分。例如,可以对应各功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了上述实施例中所涉及的缓存服务器的一种可能的结构示意图,缓存服务器20包括:接收模块201、发送模块202、修改模块203。其中接收模块201用于执行图6中的步骤S101、S103,图7中的步骤S201、S203,图8中的步骤S301、S303;发送模块202用于执行图6中的步骤S102、S105、S106,图7中的步骤S202、S205、S206,图8中的S302、S305、S306;修改模块203用于执行图6中的步骤S104、图7中的步骤S204、图8中的步骤S304。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图10示出了上述实施例中所涉及的缓存服务器的一种可能的结构示意图。缓存服务器30包括:处理模块301、通信模块302和存储模块303。处理模块301用于对缓存服务器30的动作进行控制管理,例如,处理模块301用于支持缓存服务器10执行图6中的过程S101-S106、图7中的过程S201-S206、图8中的过程S301-306。通信模块302用于支持缓存服务器与其他实体的通信。存储模块303用于存储缓存服务器的程序代码和数据。
其中,处理模块301可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块302可以是收发器、收发电路或通信接口等。存储模块303可以是存储器。
当处理模块301为如图11所示的处理器,通信模块302为图11的收发器,存储模块303为图11的存储器时,本申请实施例所涉及的缓存服务器可以为如下所述的缓存服务器40。
参照图11所示,该缓存服务器40包括:处理器401、收发器402、存储器403和总线404。
其中,处理器401、收发器402、存储器403通过总线404相互连接;总线404可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器401可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
存储器403可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器402用于存储执行本申请方案的应用程序代码,并由处理器401来控制执行。收发器402用于接收外部设备输入的内容,处理器401用于执行存储器403中存储的应用程序代码,从而实现本申请实施例中所述的缓存方法。
本申请实施例提供一种微服务设备,用于执行上述实施例所提供的缓存方法。本申请实施例可以根据上述方法实例对微服务设备进行功能模块的划分。例如,可以对应各功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图12示出了上述实施例中所涉及的微服务设备的一种可能的结构示意图,微服务设备50包括:发送模块501、接收模块502。其中发送模块501用于执行图6中的步骤S101、图7中的步骤S201以及图8中的步骤S301,接收模块502用于执行图6中的步骤S105、图7中的步骤S205以及图8中的步骤S305。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图13示出了上述实施例中所涉及的微服务设备的一种可能的结构示意图。微服务设备60包括:处理模块601、通信模块602、存储模块603。处理模块601用于对微服务设备60的动作进行控制管理,例如,处理模块601用于支持微服务设备60执行图6中的步骤S101和S105、图7中的步骤S201和S205以及图8中的步骤S301和S305。通信模块602用于支持微服务设备与其他实体的通信。存储模块603用于存储微服务设备的程序代码和数据。
其中,处理模块601可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块602可以是收发器、收发电路或通信接口等。存储模块603可以是存储器。
当处理模块601为处理器,通信模块602为收发器,存储模块603为存储器时,本申请实施例所涉及的微服务设备70可以为如下所述的微服务设备70。
参照图14所示,该微服务设备70包括:处理器701、收发器702、存储器703、总线704。
其中,处理器701、收发器702、存储器703通过总线704相互连接;总线704可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器701可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
存储器703可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。收发器702用于接收外部设备输入的内容,处理器701用于执行存储器703中存储的应用程序代码,从而实现本申请实施例中所述的缓存方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (23)
1.一种缓存方法,其特征在于,所述方法应用于为微服务设备提供缓存服务的场景中,所述方法包括:
缓存服务器接收所述微服务设备发送的数据操作请求;
当所述缓存服务器确定所述数据操作请求需要通过所述其他微服务设备执行时,所述缓存服务器向所述其他微服务设备转发所述数据操作请求;
所述缓存服务器接收所述其他微服务设备根据所述数据操作请求执行相应操作之后发送的执行结果;
所述缓存服务器根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据,并将所述执行结果转发至所述微服务设备。
2.根据权利要求1所述的方法,其特征在于,所述缓存服务器为分布式缓存服务器集群中的主缓存服务器,所述分布式缓存服务器集群包括所述主缓存服务器、至少一个从缓存服务器以及缓存集群管理设备;
所述缓存服务器接收微服务设备发送的数据操作请求,包括:所述主缓存服务器接收所述微服务设备通过负载均衡发送的数据操作请求;
所述缓存服务器根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据之后,还包括:所述主缓存服务器向所述缓存集群管理设备发送缓存修改通知,以便所述缓存集群管理设备对所述从缓存服务器中所述数据操作请求对应的缓存数据进行修改。
3.根据权利要求2所述的方法,其特征在于,
所述分布式缓存服务器集群包括ZooKeeper集群。
4.根据权利要求1-3任一项所述的方法,其特征在于,包括:
所述当所述缓存服务器确定所述数据操作请求需要通过其他微服务设备执行时,则所述缓存服务器向所述其他微服务设备转发所述数据操作请求,包括:所述缓存服务器确定所述数据操作请求为获取GET请求,并且所述缓存服务器确定在所述缓存服务器中无法查询到所述GET请求对应的缓存数据时,则所述缓存服务器向所述其他微服务设备转发所述GET请求;
所述根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据,包括:根据所述执行结果更新所述缓存服务器中所述数据操作请求对应的缓存数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,包括:
所述当所述缓存服务器确定所述数据操作请求需要通过其他微服务设备执行时,则所述缓存服务器向所述其他微服务设备转发所述数据操作请求,包括:所述缓存服务器确定所述数据操作请求为数据修改请求,则所述缓存服务器向所述其他微服务设备转发所述数据修改请求;所述数据修改请求用于对所述其他微服务设备中的数据进行相应修改;
所述缓存服务器根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据,包括:所述缓存服务器根据所述执行结果清除所述缓存服务器中所述数据操作请求对应的缓存数据。
6.根据权利要求5所述的方法,其特征在于,所述数据修改请求包括以下任一种:新建POST请求、更新PUT请求以及删除DELETE请求。
7.根据权利要求1-6任一项所述的方法,其特征在于,包括:所述缓存服务器与所述微服务设备以及所述其他微服务设备之间使用表述性状态传递REST接口进行通讯;所述缓存服务器中采用JS对象标记JSON格式存储所述缓存数据。
8.一种缓存方法,其特征在于,包括:
微服务设备向缓存服务器发送数据操作请求,以便所述缓存服务器在确定所述数据操作请求需要通过其他微服务设备执行后,向所述其他微服务设备转发所述数据操作请求;
所述微服务设备接收所述缓存服务器发送的执行结果。
9.根据权利要求8所述的方法,其特征在于,
所述微服务设备以及所述其他微服务设备与所述缓存服务器之间使用表述性状态传递REST接口进行通讯;所述数据操作请求包括以下任一种:获取GET请求、新建POST请求、更新PUT请求以及删除DELETE请求。
10.一种缓存服务器,其特征在于,包括:
接收模块,用于接收微服务设备发送的数据操作请求;
发送模块,用于当确定所述接收模块接收的所述数据操作请求需要通过其他微服务设备执行时,向所述其他微服务设备转发所述数据操作请求;
所述接收模块,还用于接收所述其他微服务设备根据所述数据操作请求执行相应操作之后发送的执行结果;
所述发送模块,还用于将所述接收模块接收的所述执行结果转发至所述微服务设备;
修改模块,用于根据所述接收模块接收的所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据。
11.根据权利要求10所述缓存服务器,其特征在于,所述缓存服务器为分布式缓存服务器集群中的主缓存服务器,所述分布式缓存服务器集群包括所述主缓存服务器、至少一个从缓存服务器以及缓存集群管理设备;
所述接收模块,具体用于接收所述微服务设备通过负载均衡发送的数据操作请求;
所述发送模块,还用于在所述修改模块根据所述执行结果修改所述缓存服务器中所述数据操作请求对应的缓存数据之后,向所述缓存集群管理设备发送缓存修改通知,以便所述缓存集群管理设备对所述从缓存服务器中所述数据操作请求对应的缓存数据进行修改。
12.根据权利要求11所述缓存服务器,其特征在于,
所述分布式缓存服务器集群包括ZooKeeper集群。
13.根据权利要求10-12任一项所述缓存服务器,其特征在于,
所述发送模块,具体用于当确定所述数据操作请求为获取GET请求并且在所述缓存服务器中无法查询到所述GET请求对应的缓存数据时,向所述其他微服务设备转发所述GET请求;
所述修改模块,具体用于根据所述接收模块接收的所述执行结果更新所述缓存服务器中所述数据操作请求对应的缓存数据。
14.根据权利要求10-12任一项所述缓存服务器,其特征在于,
所述发送模块,具体用于当所述处理模块确定所述数据操作请求为数据修改请求时,向所述其他微服务设备转发所述数据修改请求;所述数据修改请求用于对所述其他微服务设备中的数据进行相应修改;
所述修改模块,具体用于根据所述接收模块接收的所述执行结果清除所述缓存服务器中所述数据操作请求对应的缓存数据。
15.根据权利要求14所述缓存服务器,其特征在于,所述数据修改请求包括以下任一种:新建POST请求、更新PUT请求以及删除DELETE请求。
16.根据权利要求10-15任一项所述缓存服务器,其特征在于,所述缓存服务器与微服务设备之间使用表述性状态传递REST接口进行通讯;所述缓存服务器中采用JS对象标记JSON格式存储所述缓存数据。
17.一种微服务设备,其特征在于,包括:
发送模块,用于向缓存服务器发送数据操作请求,以便所述缓存服务器在确定所述数据操作请求需要通过其他微服务设备执行后,向所述其他微服务设备转发所述数据操作请求;
接收模块,用于所述发送模块向缓存服务器发送数据操作请求后,接收所述缓存服务器发送的执行结果。
18.根据权利要求17所述的微服务设备,其特征在于,
所述微服务设备以及所述其他微服务设备与所述缓存服务器之间使用表述性状态传递REST接口进行通讯;所述数据操作请求包括以下任一种:获取GET请求、新建POST请求、更新PUT请求以及删除DELETE请求。
19.一种缓存服务器,其特征在于,包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述缓存服务器运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述缓存服务器执行如权利要求1-7中任一项所述的缓存方法。
20.一种计算机存储介质,其特征在于,包括指令,当其在计算机上运行时,使得所述计算机执行如权利要求1-7中任一项所述的缓存方法。
21.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得所述计算机执行如权利要求1-7中任一项所述的缓存方法。
22.一种分布式缓存服务器集群,其特征在于,包括主缓存服务器、至少一个从缓存服务器以及缓存集群管理设备;所述主缓存服务器为如权利要求10-16任一项所述的缓存服务器。
23.一种缓存服务系统,其特征在于,包括权利要求10-16任一项所述的缓存服务器,以及权利要求17或18所述的微服务设备;或者,包括权利要求22所述的分布式缓存服务器集群,以及权利要求17或18所述的微服务设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710807452.4A CN107623729B (zh) | 2017-09-08 | 2017-09-08 | 一种缓存方法、设备及缓存服务系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710807452.4A CN107623729B (zh) | 2017-09-08 | 2017-09-08 | 一种缓存方法、设备及缓存服务系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107623729A true CN107623729A (zh) | 2018-01-23 |
CN107623729B CN107623729B (zh) | 2021-01-15 |
Family
ID=61089647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710807452.4A Active CN107623729B (zh) | 2017-09-08 | 2017-09-08 | 一种缓存方法、设备及缓存服务系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107623729B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600360A (zh) * | 2018-04-18 | 2018-09-28 | 国电南京自动化股份有限公司 | 一种基于zookeeper的REST服务系统和方法 |
CN108833500A (zh) * | 2018-05-29 | 2018-11-16 | 阿里巴巴集团控股有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN109062940A (zh) * | 2018-06-20 | 2018-12-21 | 北京爱蜂科技有限公司 | 一种基于微服务架构的多模式交易实现系统及方法 |
CN109167810A (zh) * | 2018-07-27 | 2019-01-08 | 阿里巴巴集团控股有限公司 | 监听、通知、刷新方法和装置、计算设备及存储介质 |
CN109388508A (zh) * | 2018-10-10 | 2019-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN109582684A (zh) * | 2018-11-30 | 2019-04-05 | 深圳市盟天科技有限公司 | 一种本地缓存数据的更新方法、装置、服务器及存储介质 |
CN109618017A (zh) * | 2018-12-12 | 2019-04-12 | 北京知道创宇信息技术有限公司 | 域名管理方法、装置及系统 |
CN110032893A (zh) * | 2019-03-12 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于秘密分享的安全模型预测方法和装置 |
CN110413333A (zh) * | 2018-04-28 | 2019-11-05 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN110795484A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种微服务设备及其数据翻译方法、装置和存储介质 |
CN110895474A (zh) * | 2018-08-24 | 2020-03-20 | 深圳市鸿合创新信息技术有限责任公司 | 一种终端微服务装置及方法、电子设备 |
CN110928532A (zh) * | 2019-11-20 | 2020-03-27 | 杭州安恒信息技术股份有限公司 | 一种高一致性微服务架构及其数据更新方法 |
CN112055039A (zh) * | 2019-06-06 | 2020-12-08 | 阿里巴巴集团控股有限公司 | 数据访问方法、装置、系统及计算设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196852A (zh) * | 2008-01-03 | 2008-06-11 | 杭州华三通信技术有限公司 | 分布式缓存方法及其系统、以及缓存设备和非缓存设备 |
CN101854378A (zh) * | 2010-02-26 | 2010-10-06 | 深圳市同洲电子股份有限公司 | 一种数据操作方法和数据操作设备 |
CN103037004A (zh) * | 2012-12-21 | 2013-04-10 | 曙光信息产业(北京)有限公司 | 云存储系统操作的实现方法和装置 |
CN103516731A (zh) * | 2012-06-15 | 2014-01-15 | 华为技术有限公司 | 一种缓存服务器的服务方法、缓存服务器及系统 |
CN104572230A (zh) * | 2015-02-13 | 2015-04-29 | 小米科技有限责任公司 | 脚本文件的加载方法、脚本文件生成方法及装置 |
CN105447092A (zh) * | 2015-11-09 | 2016-03-30 | 联动优势科技有限公司 | 一种缓存方法及装置 |
CN105871607A (zh) * | 2016-03-29 | 2016-08-17 | 联想(北京)有限公司 | 信息处理方法及服务平台 |
US20170093651A1 (en) * | 2015-09-30 | 2017-03-30 | Bank Of America Corporation | Channel accessible single function micro service data collection process for light analytics |
CN106933872A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种通过传统文件系统接口访问云存储服务的方法及装置 |
CN107025234A (zh) * | 2016-02-01 | 2017-08-08 | 中国移动通信集团公司 | 一种信息推送方法及缓存服务器 |
-
2017
- 2017-09-08 CN CN201710807452.4A patent/CN107623729B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196852A (zh) * | 2008-01-03 | 2008-06-11 | 杭州华三通信技术有限公司 | 分布式缓存方法及其系统、以及缓存设备和非缓存设备 |
CN101854378A (zh) * | 2010-02-26 | 2010-10-06 | 深圳市同洲电子股份有限公司 | 一种数据操作方法和数据操作设备 |
CN103516731A (zh) * | 2012-06-15 | 2014-01-15 | 华为技术有限公司 | 一种缓存服务器的服务方法、缓存服务器及系统 |
CN103037004A (zh) * | 2012-12-21 | 2013-04-10 | 曙光信息产业(北京)有限公司 | 云存储系统操作的实现方法和装置 |
CN104572230A (zh) * | 2015-02-13 | 2015-04-29 | 小米科技有限责任公司 | 脚本文件的加载方法、脚本文件生成方法及装置 |
US20170093651A1 (en) * | 2015-09-30 | 2017-03-30 | Bank Of America Corporation | Channel accessible single function micro service data collection process for light analytics |
CN105447092A (zh) * | 2015-11-09 | 2016-03-30 | 联动优势科技有限公司 | 一种缓存方法及装置 |
CN106933872A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种通过传统文件系统接口访问云存储服务的方法及装置 |
CN107025234A (zh) * | 2016-02-01 | 2017-08-08 | 中国移动通信集团公司 | 一种信息推送方法及缓存服务器 |
CN105871607A (zh) * | 2016-03-29 | 2016-08-17 | 联想(北京)有限公司 | 信息处理方法及服务平台 |
Non-Patent Citations (1)
Title |
---|
张晶等: ""微服务框架的设计与实现"", 《计算机系统应用》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600360A (zh) * | 2018-04-18 | 2018-09-28 | 国电南京自动化股份有限公司 | 一种基于zookeeper的REST服务系统和方法 |
CN110413333A (zh) * | 2018-04-28 | 2019-11-05 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN110413333B (zh) * | 2018-04-28 | 2022-04-22 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN108833500A (zh) * | 2018-05-29 | 2018-11-16 | 阿里巴巴集团控股有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN108833500B (zh) * | 2018-05-29 | 2021-03-30 | 创新先进技术有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN109062940A (zh) * | 2018-06-20 | 2018-12-21 | 北京爱蜂科技有限公司 | 一种基于微服务架构的多模式交易实现系统及方法 |
CN109167810A (zh) * | 2018-07-27 | 2019-01-08 | 阿里巴巴集团控股有限公司 | 监听、通知、刷新方法和装置、计算设备及存储介质 |
CN110895474A (zh) * | 2018-08-24 | 2020-03-20 | 深圳市鸿合创新信息技术有限责任公司 | 一种终端微服务装置及方法、电子设备 |
CN109388508A (zh) * | 2018-10-10 | 2019-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN109388508B (zh) * | 2018-10-10 | 2021-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN109582684B (zh) * | 2018-11-30 | 2021-11-09 | 深圳市乐信信息服务有限公司 | 一种本地缓存数据的更新方法、装置、服务器及存储介质 |
CN109582684A (zh) * | 2018-11-30 | 2019-04-05 | 深圳市盟天科技有限公司 | 一种本地缓存数据的更新方法、装置、服务器及存储介质 |
CN109618017A (zh) * | 2018-12-12 | 2019-04-12 | 北京知道创宇信息技术有限公司 | 域名管理方法、装置及系统 |
CN110032893A (zh) * | 2019-03-12 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于秘密分享的安全模型预测方法和装置 |
CN112055039A (zh) * | 2019-06-06 | 2020-12-08 | 阿里巴巴集团控股有限公司 | 数据访问方法、装置、系统及计算设备 |
CN110795484A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种微服务设备及其数据翻译方法、装置和存储介质 |
CN110928532A (zh) * | 2019-11-20 | 2020-03-27 | 杭州安恒信息技术股份有限公司 | 一种高一致性微服务架构及其数据更新方法 |
CN110928532B (zh) * | 2019-11-20 | 2022-04-29 | 杭州安恒信息技术股份有限公司 | 一种高一致性微服务架构及其数据更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107623729B (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107623729A (zh) | 一种缓存方法、设备及缓存服务系统 | |
US11514304B2 (en) | Continuously provisioning large-scale machine learning models | |
US20220318657A1 (en) | Artificial intelligence delivery edge network | |
US10303522B2 (en) | System and method for distributed graphics processing unit (GPU) computation | |
JP2022522368A (ja) | モバイルエッジコンピューティングノードの選択方法、装置及びシステム | |
JP2022536787A (ja) | ネットワークデータプレーンのエッジデータベース管理 | |
US9098312B2 (en) | Methods for dynamically generating an application interface for a modeled entity and devices thereof | |
CN104539681B (zh) | 分布式gis加速系统和gis服务的处理方法 | |
US9673998B2 (en) | Differential cache for representational state transfer (REST) API | |
US11038959B2 (en) | State management and object storage in a distributed cloud computing network | |
CN111371679A (zh) | 一种基于kubernetes与Kong实现API网关的方法 | |
US9847903B2 (en) | Method and apparatus for configuring a communication system | |
US10984048B2 (en) | Efficient graph database traversal | |
CN102833361B (zh) | 为资源请求终止连接和选择目标源装置 | |
CN107015989A (zh) | 数据处理方法和装置 | |
CN110113188A (zh) | 跨子域通信运维方法、总运维服务器和介质 | |
CN110232411A (zh) | 模型蒸馏实现方法、装置、系统、计算机设备及存储介质 | |
CN110601994B (zh) | 云环境下微服务链感知的负载均衡方法 | |
US20120266186A1 (en) | Providing inter-platform application launch in context | |
CN107786669A (zh) | 一种负载均衡处理的方法、服务器、装置及存储介质 | |
CN109603149A (zh) | 数据同步方法及装置 | |
CN108365976B (zh) | 网络服务的优化方法及装置 | |
CN105791370B (zh) | 一种数据处理方法及相关服务器 | |
CN104205730B (zh) | 网元数据访问方法、虚拟网元、网络管理服务器及网络管理系统 | |
CN108200211A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |