CN111988186A - 一种配置同步方法及相关装置 - Google Patents
一种配置同步方法及相关装置 Download PDFInfo
- Publication number
- CN111988186A CN111988186A CN202010908701.0A CN202010908701A CN111988186A CN 111988186 A CN111988186 A CN 111988186A CN 202010908701 A CN202010908701 A CN 202010908701A CN 111988186 A CN111988186 A CN 111988186A
- Authority
- CN
- China
- Prior art keywords
- queue
- client
- configuration information
- registration
- configuration
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及分布式部署领域,提供一种配置同步方法及相关装置,所述方法应用于中间件,包括:接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;接收所述服务端发送的所述配置信息;根据所述配置信息,更新所述阻塞队列;通过所述阻塞队列,将所述配置信息同步到所述客户端。本申请实施例的技术方案,能够降低运维成本,节约服务器资源。
Description
技术领域
本申请涉及分布式部署领域,尤其涉及一种配置同步方法及相关装置。
背景技术
分布式应用指的是应用程序分布在不同计算机上,通过网络来共同完成任务的工作方式。ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,用于为分布式应用提供一致***,提供的功能包括对客户端进行配置同步。
但是,使用ZooKeeper对客户端进行配置同步时,至少需要三个服务器节点实现,也就是说,通过ZooKeeper实现客户端的配置同步,一方面,运维成本较高,另一方面,在较小的应用中使用时,由于至少需要三个服务器节点,会造成服务器资源的浪费。
发明内容
本申请提供了一种配置同步方法及相关装置,能够降低运维成本,节约服务器资源。
本申请第一方面提供了一种配置同步方法,所述方法应用于中间件,所述方法包括:
接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
接收所述服务端发送的所述配置信息;
根据所述配置信息,更新所述阻塞队列;
通过所述阻塞队列,将所述配置信息同步到所述客户端。
本申请第二方面提供了一种配置同步装置,所述装置应用于中间件,所述装置包括:
第一接收模块,用于接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
创建模块,用于根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
发送模块,用于向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
第二接收模块,用于接收所述服务端发送的所述配置信息;
更新模块,用于根据所述配置信息,更新所述阻塞队列;
同步模块,用于通过所述阻塞队列,将所述配置信息同步到所述客户端。
本申请第三方面提供了一种电子设备,所述电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行本申请第一方面任一方法中的步骤的指令。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现本申请第一方面任一方法中所描述的部分或全部步骤。
可以看到,通过本申请提出的配置同步方法及相关装置,首先,中间件接收客户端发送的注册请求,注册请求携带客户端的注册信息,其次,根据注册信息,创建客户端的注册队列,以及创建客户端的阻塞队列,其次,向服务端发送携带注册队列的配置请求,配置请求用于指示服务端根据注册队列确定客户端的配置信息,其次,接收服务端发送的配置信息,其次,根据配置信息,更新阻塞队列,最后,通过阻塞队列,将配置信息同步到客户端。这样,通过中间件代替目前使用的ZooKeeper实现客户端的配置同步,不需要使用至少三个服务器节点,通过该中间件就可以实现配置同步,一方面,降低了运维成本,另一方面,不管是对于大型应用还是小型应用都可以通过该中间件实现配置同步,从而节约了服务器资源。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种配置同步***的示意图;
图2为本申请实施例提供的一种配置同步方法的流程示意图;
图3为本申请实施例提供的另一种配置同步方法的流程示意图;
图4为本申请实施例提供的一种配置同步装置的示意图;
图5为本申请实施例涉及的硬件运行环境的电子设备结构示意图。
具体实施方式
本申请实施例提供的配置同步方法及相关装置,能够降低运维成本,节约服务器资源。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面对本申请实施例进行详细介绍。
首先参见图1,图1为本申请实施例提供的一种配置同步***的示意图。如图1所示,配置同步***100包括中间件101、客户端102和服务端103,中间件101与至少一个客户端102连接,中间件还与至少一个服务端103连接。
中间件101接收客户端102发送的注册请求,所述注册请求携带所述客户端102的注册信息;中间件101根据所述注册信息,创建所述客户端102的注册队列,以及创建所述客户端102的阻塞队列;中间件101向服务端103发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端103根据所述注册队列确定所述客户端102的配置信息;中间件101接收所述服务端103发送的所述配置信息;中间件101根据所述配置信息,更新所述阻塞队列;中间件101通过所述阻塞队列,将所述配置信息同步到所述客户端102。
具体的,在分布式应用中,使用中间件提供配置同步服务。客户端需要同步配置时,首先注册到中间件中,中间件接收客户端的注册请求,对于每一个注册到中间件的客户端,中间件都会为该客户端创建存放内容的队列,包括注册队列和阻塞队列。服务端接收中间件的配置请求,确定客户端的配置信息,并且将该配置信息推送到中间件中。中间件根据该配置信息,更新阻塞队列。客户端监听该阻塞队列,从而获取该配置信息。
可选的,客户端还可以将获取到的配置信息存储在中间件的历史配置队列中,从而可以实现版本维护。除此之外,客户端还可以将当前所使用的所有配置文件都存储在中间件的导出队列中,从而可以实现配置文件的集中维护。
可以看出,通过中间件代替目前使用的ZooKeeper实现客户端的配置同步,不需要使用至少三个服务器节点,通过该中间件就可以实现配置同步,一方面,降低了运维成本,另一方面,不管是对于大型应用还是小型应用都可以通过该中间件实现配置同步,从而节约了服务器资源。
参见图2,图2为本申请实施例提供的一种配置同步方法的流程示意图,该配置同步方法可以应用于图1所示的中间件。其中,如图2所示,本申请实施例提供的一种配置同步方法可以包括:
201、中间件接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息。
具体的,在分布式应用中,使用中间件提供配置同步服务。客户端需要同步配置时,首先注册到中间件中,中间件接收客户端的注册请求,该注册请求携带该客户端的注册信息。
202、中间件根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列。
具体的,对于每一个注册到中间件的客户端,中间件都会为该客户端创建存放内容的队列,包括注册队列和阻塞队列。
可选的,注册信息包括客户端的服务名称、客户端的IP地址和客户端的端口号中的至少一项,中间件根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列,包括:根据所述注册信息,确定所述注册队列的第一队列标识,以及确定所述阻塞队列的第二队列标识;根据所述第一队列标识,创建所述注册队列;根据所述第二队列标识,创建所述阻塞队列。
在一种可能的实施方式中,注册信息包括客户端的服务名称、客户端的IP地址和客户端的端口号,第一队列标识包括了客户端的服务名称、客户端的IP地址和客户端的端口号,第二队列标识也包括了客户端的服务名称、客户端的IP地址和客户端的端口号。
可选的,中间件根据所述注册信息,创建所述客户端的注册队列之后,中间件还可以设置所述注册队列的有效时间;记录所述注册队列的创建时间;中间件获取当前时间;若所述当前时间与所述创建时间的时间差不小于所述有效时间,则中间件删除所述注册队列。
具体的,中间件设置注册队列的有效时间,有效时间可以自由设置,用于控制每一次创建的注册队列在中间件中的生存时间。中间件创建注册队列后,记录该注册队列的创建时间,然后,中间件获取当前时间,通过比较当前时间与该注册队列的创建时间,可以确定该注册队列在中间件中的生存时间是否到达预先设置的有效时间。如果到达预先设置的有效时间,那么中间件就会删除该注册队列,也就是说该注册队列中的内容也会被删除。当客户端重新在中间件中注册时,中间件又会重新创建新的注册队列。
这样,当客户端宕机时,若该客户端的注册队列在中间件中的生存时间到达了预先设置的有效时间,则中间件中就不会有该客户端的注册队列,后期中间件如果要获取所有的客户端信息,就可以获取最新的客户端信息。
203、中间件向服务端发送携带所述注册队列的配置请求。
中间件创建了注册队列后,向服务端发送携带该注册队列的配置请求,该配置请求用于指示服务端根据该注册队列确定客户端的配置信息。
204、服务端根据所述注册队列确定所述客户端的配置信息。
205、中间件接收所述服务端发送的所述配置信息。
服务端根据该注册队列确定客户端的配置信息后,向中间件发送该配置信息,中间件接收服务端发送的该配置信息。
206、中间件根据所述配置信息,更新所述阻塞队列。
具体的,对于每一个注册到中间件的客户端,中间件都会为该客户端创建存放内容的队列,包括注册队列和阻塞队列。中间件接收到服务端发送的配置信息后,根据该配置信息,更新客户端对应的阻塞队列。
可选的,阻塞队列包括版本信息和原始配置信息,中间件根据所述配置信息,更新所述阻塞队列,包括:获取所述配置信息对应的版本信息;根据所述配置信息对应的版本信息,更新所述阻塞队列中的版本信息;将所述阻塞队列中的原始配置信息更新为所述配置信息。
具体的,中间件为客户端创建了对应的阻塞队列后,如果该阻塞队列中无内容,则中间件在获取到配置信息后,将该配置信息和该配置信息对应的版本信息放入该阻塞队列中,以更新该阻塞队列。如果该阻塞队列中有内容,也就是说该阻塞队列中包括了客户端的原始配置信息和该原始配置信息对应的版本信息,则中间件在获取到配置信息后,根据获取到的配置信息对应的版本信息更新该阻塞队列中原始的配置信息,并且将该阻塞队列中的原始配置信息更新为获取到的配置信息,从而实现阻塞队列的更新。
207、中间件通过所述阻塞队列,将所述配置信息同步到所述客户端。
具体的,客户端监听该阻塞队列,如果该阻塞队列中没有内容,则客户端继续监听,如果有内容进入该阻塞队列,则客户端获取该阻塞队列中的信息,也即获取该配置信息,从而实现配置同步。
可选的,中间件还可以创建客户端的历史配置队列,所述历史配置队列包括所述客户端通过所述阻塞队列获取到的至少一条配置信息以及至少一条版本信息,所述至少一条配置信息与所述至少一条版本信息一一对应;当通过所述阻塞队列将所述配置信息同步到所述客户端失败时,中间件根据所述至少一条版本信息从所述至少一条配置信息中获取最新配置信息;中间件将所述最新配置信息同步到所述客户端。
具体的,每次客户端从中间件的阻塞队列中获取到配置信息后,将该配置信息放入中间件的历史配置队列中,这样,该历史配置队列中包括了至少一条配置信息以及与该至少一条配置信息一一对应的至少一条版本信息,如果客户端从中间件的阻塞队列中获取配置信息失败了,那么客户端可以从历史配置队列中获取到之前获取到的最新的配置信息。并且,客户端还可以再继续监听阻塞队列,并且继续尝试从阻塞队列中获取最新的配置信息。
这样,当客户端不能获取最新配置信息时,通过历史配置队列,客户端还是可以获取到之前获取到的最新配置信息,***的稳定性较高。
可选的,中间件设置所述历史配置队列包含的配置信息的数量阈值M,M为正整数;中间件获取所述至少一条配置信息的数量N,N为正整数;当N大于M时,中间件删除所述至少一条配置信息中的(N-M)条配置信息。
具体的,中间件可以对历史配置队列进行优化,当历史配置队列中包含的配置信息的数量大于预先设置的数量阈值时,则删除多余的配置信息,保证历史配置队列中包含的配置信息的数量不大于预先设置的数量阈值。这样,可以节省中间件的存储空间。
可以看出,通过本申请提出的配置同步方法,在分布式应用中,使用中间件提供配置同步服务。当客户端需要同步配置时,通过中间件代替目前使用的ZooKeeper实现客户端的配置同步,不需要使用至少三个服务器节点,通过该中间件就可以实现配置同步,一方面,降低了运维成本,另一方面,不管是对于大型应用还是小型应用都可以通过该中间件实现配置同步,从而节约了服务器资源。
参见图3,图3为本申请实施例提供的另一种配置同步方法的流程示意图,该配置同步方法可以应用于图1所示的中间件。其中,如图3所示,本申请实施例提供的另一种配置同步方法可以包括:
301、中间件接收客户端发送的注册请求,该注册请求携带该客户端的注册信息。
具体的,在分布式应用中,使用中间件提供配置同步服务。客户端需要同步配置时,首先注册到中间件中,中间件接收客户端的注册请求,该注册请求携带该客户端的注册信息。
在一种可能的实施方式中,该中间件可以是Redis组件,Redis是现在大多数应用中必备的中间件,通过Redis实现客户端的配置同步,一方面维护成本较低,另一方面也可以节省服务器资源。
302、中间件根据该注册信息,创建客户端的注册队列和阻塞队列。
具体的,对于每一个注册到中间件的客户端,中间件都会为该客户端创建存放内容的队列,包括注册队列和阻塞队列。
可选的,注册信息包括客户端的服务名称、客户端的IP地址和客户端的端口号中的至少一项,中间件根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列,包括:根据所述注册信息,确定所述注册队列的第一队列标识,以及确定所述阻塞队列的第二队列标识;根据所述第一队列标识,创建所述注册队列;根据所述第二队列标识,创建所述阻塞队列。
在一种可能的实施方式中,注册信息包括客户端的服务名称、客户端的IP地址和客户端的端口号,第一队列标识包括了客户端的服务名称、客户端的IP地址和客户端的端口号,第二队列标识也包括了客户端的服务名称、客户端的IP地址和客户端的端口号。
可选的,中间件根据注册信息,创建客户端的注册队列之后,中间件还可以设置该注册队列的有效时间;记录该注册队列的创建时间;中间件获取当前时间;若当前时间与该创建时间的时间差不小于该有效时间,则中间件删除该注册队列。
具体的,中间件设置注册队列的有效时间,有效时间可以自由设置,用于控制每一次创建的注册队列在中间件中的生存时间。中间件创建注册队列后,记录该注册队列的创建时间,然后,中间件获取当前时间,通过比较当前时间与该注册队列的创建时间,可以确定该注册队列在中间件中的生存时间是否到达预先设置的有效时间。如果到达预先设置的有效时间,那么中间件就会删除该注册队列,也就是说该注册队列中的内容也会被删除。当客户端重新在中间件中注册时,中间件又会重新创建新的注册队列。
这样,当客户端宕机时,若该客户端的注册队列在中间件中的生存时间到达了预先设置的有效时间,则中间件中就不会有该客户端的注册队列,后期中间件如果要获取所有的客户端信息,就可以获取最新的客户端信息。
举例来说,设置注册队列的有效时间为10分钟,也就是说注册队列在中间件中的生存时间最长为10分钟。具体过程为:每个客户端在中间件中注册时,中间件先判断是否存储了该客户端的注册队列,如果不存在,则创建该客户端的注册队列,并把客户端的注册信息放入该注册队列。然后,客户端每过一定时间,就会主动向中间件上报自己的信息。如果10分钟时间到了,中间件就会删除该客户端对应的注册队列,该客户端的注册信息也会消失。当客户端重新在中间件注册时,中间件就会创建新的注册队列,把该客户端的注册信息放入新创建的注册队列中。
303、中间件向服务端发送携带该注册队列的配置请求。
中间件创建了注册队列后,向服务端发送携带该注册队列的配置请求,该配置请求用于指示服务端根据该注册队列确定客户端的配置信息。
304、服务端根据该注册队列确定客户端的配置信息。
305、中间件接收服务端发送的该配置信息。
服务端根据该注册队列确定客户端的配置信息后,向中间件发送该配置信息,中间件接收服务端发送的该配置信息。
306、中间件获取该配置信息对应的版本信息,根据该配置信息对应的版本信息,更新该阻塞队列中的版本信息。
对于每一个注册到中间件的客户端,中间件都会为该客户端创建存放内容的队列,包括注册队列和阻塞队列。中间件接收到服务端发送的配置信息后,根据该配置信息,更新客户端对应的阻塞队列。其中,阻塞队列包括版本信息和原始配置信息,中间件获取该配置信息对应的版本信息,然后根据该配置信息对应的版本信息,更新该阻塞队列中的版本信息。
具体的,中间件为客户端创建了对应的阻塞队列后,如果该阻塞队列中无内容,则中间件在获取到配置信息后,将该配置信息对应的版本信息放入该阻塞队列中,以更新该阻塞队列。如果该阻塞队列中有内容,也就是说该阻塞队列中包括了原始配置信息对应的版本信息,则中间件在获取到配置信息后,根据获取到的配置信息对应的版本信息更新该阻塞队列中原始的配置信息,从而实现阻塞队列的更新。
307、中间件将该阻塞队列中的原始配置信息更新为该配置信息。
中间件接收到服务端发送的配置信息后,根据该配置信息,更新客户端对应的阻塞队列。其中,阻塞队列包括版本信息和原始配置信息,中间件获取该配置信息后,将该阻塞队列中的原始配置信息更新为该配置信息。
具体的,中间件为客户端创建了对应的阻塞队列后,如果该阻塞队列中无内容,则中间件在获取到配置信息后,将该配置信息放入该阻塞队列中,以更新该阻塞队列。如果该阻塞队列中有内容,也就是说该阻塞队列中包括了客户端的原始配置信息,则中间件在获取到配置信息后,将该阻塞队列中的原始配置信息更新为获取到的配置信息,从而实现阻塞队列的更新。
在一种可能的实施方式中,阻塞队列中包含的信息包括以下信息:
(1)id:全局唯一标识,可以通过中间件的自增功能实现,可以用于后期进行功能扩展。
在一种可能的实施方式中,在功能扩展方面,首先id是自增的一个数字,所以id说明之前上传到中间件的配置文件的个数,使用此数据(id)主要是对历史数据的统计或者说对服务访问的频率,因为访问一次id就会增加1。id可以用于数据分析。
(2)version:版本信息,可以对数据进行回滚时使用,或者可以具体指定使用哪个版本数据,通过version可以实现版本信息与配置信息的对应关系,通过版本信息可以直接定位到具体的配置信息,提高了数据获取效率。
具体的,数据回滚是指回到指定的版本号上,版本号是发版数据方所知道的,并且由数据发版方维护的。比如有v1.0、v1.2、v1.3三个版本的数据,如果最新的版本数据有问题或者不想使用最新的数据版本,可以回退到比较老的版本,那只需要指定版本号v1.1,根据版本号就可以知道要恢复到哪个版本上的数据。
(3)queueKey:队列标识,根据该队列标识可以在中间件中创建相应的队列。
(4)useCount:使用次数,在进行历史数据清理时所使用的一个参考数据。
(5)data:用于具体存储的配置数据。
(6)nameSpace:命名空间,用于对不同的服务进行区分,例如要获取的是监听配置的配置信息,那么命名空间可以是watch;再例如要获取的是注册的配置信息,那么命名空间可以是registry,加以区别。
(7)fileName:文件名称,也即配置文件的名称。
(8)profile:配置文件的环境名称,环境经常会被分为prd(生产环境)、stg(测试环境)、dev(开发环境)、uat(验收环境)等等。
(9)create_time:创建时间,用于判断数据的新旧。
(10)create_by:由哪台服务器创建的,可以用于后期对数据的更改进行跟踪。
308、客户端监听该阻塞队列,获取该配置信息。
具体的,客户端监听该阻塞队列,如果该阻塞队列中没有内容,则客户端继续监听,如果有内容进入该阻塞队列,则客户端获取该阻塞队列中的信息,也即获取该配置信息,从而实现配置同步。
309、中间件创建客户端的历史配置队列。
具体的,中间件还可以创建客户端的历史配置队列,该历史配置队列包括客户端通过阻塞队列获取到的至少一条配置信息以及至少一条版本信息,该至少一条配置信息与该至少一条版本信息一一对应。
310、当通过阻塞队列将配置信息同步到客户端失败时,中间件从该历史配置队列中获取最新配置信息。
具体的,当通过阻塞队列将配置信息同步到客户端失败时,中间件根据历史配置队列中的至少一条版本信息,从历史配置队列中的至少一条配置信息中获取最新配置信息。
311、中间件将该最新配置信息同步到客户端。
具体的,每次客户端从中间件的阻塞队列中获取到配置信息后,将该配置信息放入中间件的历史配置队列中,这样,该历史配置队列中包括了至少一条配置信息以及与该至少一条配置信息一一对应的至少一条版本信息,如果客户端从中间件的阻塞队列中获取配置信息失败了,那么客户端可以从历史配置队列中获取到之前获取到的最新的配置信息。并且,客户端还可以再继续监听阻塞队列,并且继续尝试从阻塞队列中获取最新的配置信息。
这样,当客户端不能获取最新配置信息时,通过历史配置队列,客户端还是可以获取到之前获取到的最新配置信息,***的稳定性较高。
可选的,中间件还设置该历史配置队列包含的配置信息的数量阈值M,M为正整数;中间件获取至少一条配置信息的数量N,N为正整数;当N大于M时,中间件删除该至少一条配置信息中的(N-M)条配置信息。
具体的,中间件可以对历史配置队列进行优化,当历史配置队列中包含的配置信息的数量大于预先设置的数量阈值时,则删除多余的配置信息,保证历史配置队列中包含的配置信息的数量不大于预先设置的数量阈值。这样,可以节省中间件的存储空间。
在一种可能的实施方式中,中间件删除该至少一条配置信息中的(N-M)条配置信息包括:中间件获取与该至少一条配置信息一一对应的至少一个创建时间,根据该至少一个创建时间,从该至少一条配置信息中删除创建时间晚的(N-M)条配置信息。
在另一种可能的实施方式中,中间件删除该至少一条配置信息中的(N-M)条配置信息包括:中间件获取与该至少一条配置信息一一对应的至少一个使用次数,根据该至少一个使用次数,从该至少一条配置信息中删除使用次数少的(N-M)条配置信息。
举例来说,中间件对历史配置队列进行优化的优化方式包括以下两种:
(1)根据数据的创建时间进行优化:
历史配置队列中保存的配置信息只有10条,如果超过了10条,则较老的数据出队,较新的数据入队。中间件可以根据create_time(创建时间)来进行判断,这样可以保证中间件中不会存储太多的垃圾数据,因为有时候越老的数据被使用的可能性越低,从而节省了中间件的存储空间。
(2)根据数据的使用次数进行优化:
历史配置队列中保存的配置信息只有10条,如果超过了10条,则使用次数较少的数据出队,使用次数较多的数据入队。中间件可以根据useCount(使用次数)来进行判断,使用次数代表当前配置信息被使用过的次数,如果使用次数低,就可以删除。这样可以保证中间件中不会存储太多的垃圾数据,因为有时候越老的数据被使用的可能性越低,从而节省了中间件的存储空间。
可以看出,通过本申请提出的配置同步方法,在分布式应用中,使用中间件提供配置同步服务。当客户端需要同步配置时,通过中间件代替目前使用的ZooKeeper实现客户端的配置同步,不需要使用至少三个服务器节点,通过该中间件就可以实现配置同步,一方面,降低了运维成本,另一方面,不管是对于大型应用还是小型应用都可以通过该中间件实现配置同步,从而节约了服务器资源。
参见图4,图4为本申请实施例提供的一种配置同步装置的示意图,该配置同步装置应用于中间件。其中,如图4所示,本申请实施例提供的一种配置同步装置可以包括:
第一接收模块401,用于接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
创建模块402,用于根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
发送模块403,用于向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
第二接收模块404,用于接收所述服务端发送的所述配置信息;
更新模块405,用于根据所述配置信息,更新所述阻塞队列;
同步模块406,用于通过所述阻塞队列,将所述配置信息同步到所述客户端。
本申请实施例中配置同步装置的具体实施可参见上述配置同步方法的各实施例,在此不做赘述。
参见图5,图5为本申请的实施例涉及的硬件运行环境的电子设备结构示意图。其中,如图5所示,本申请的实施例涉及的硬件运行环境的电子设备可以包括:
处理器501,例如CPU。
存储器502,可选的,存储器可以为高速RAM存储器,也可以是稳定的存储器,例如磁盘存储器。
通信接口503,用于实现处理器501和存储器502之间的连接通信。
本领域技术人员可以理解,图5中示出的电子设备的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图5所示,存储器502中可以包括操作***、网络通信模块以及配置同步程序。操作***是管理和控制电子设备硬件和软件资源的程序,支持配置同步程序以及其他软件或程序的运行。网络通信模块用于实现存储器502内部各组件之间的通信,以及与电子设备中其他硬件和软件之间通信。
在图5所示的电子设备中,处理器501用于执行存储器502中存储的配置同步程序,实现以下步骤:
接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
接收所述服务端发送的所述配置信息;
根据所述配置信息,更新所述阻塞队列;
通过所述阻塞队列,将所述配置信息同步到所述客户端。
本申请实施例中电子设备的具体实施可参见上述配置同步方法的各实施例,在此不做赘述。
本申请的另一个实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行以实现以下步骤:
接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
接收所述服务端发送的所述配置信息;
根据所述配置信息,更新所述阻塞队列;
通过所述阻塞队列,将所述配置信息同步到所述客户端。
本申请实施例中计算机可读存储介质的具体实施可参见上述配置同步方法的各实施例,在此不做赘述。
还需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种配置同步方法,其特征在于,所述方法应用于中间件,所述方法包括:
接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
接收所述服务端发送的所述配置信息;
根据所述配置信息,更新所述阻塞队列;
通过所述阻塞队列,将所述配置信息同步到所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述注册信息包括所述客户端的服务名称、所述客户端的IP地址和所述客户端的端口号中的至少一项,所述根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列,包括:
根据所述注册信息,确定所述注册队列的第一队列标识,以及确定所述阻塞队列的第二队列标识;
根据所述第一队列标识,创建所述注册队列;
根据所述第二队列标识,创建所述阻塞队列。
3.根据权利要求1或2所述的方法,其特征在于,在所述根据所述注册信息,创建所述客户端的注册队列之后,所述方法还包括:
设置所述注册队列的有效时间;
记录所述注册队列的创建时间;
获取当前时间;
若所述当前时间与所述创建时间的时间差不小于所述有效时间,则删除所述注册队列。
4.根据权利要求1所述的方法,其特征在于,所述阻塞队列包括版本信息和原始配置信息,所述根据所述配置信息,更新所述阻塞队列,包括:
获取所述配置信息对应的版本信息;
根据所述配置信息对应的版本信息,更新所述阻塞队列中的版本信息;
将所述阻塞队列中的原始配置信息更新为所述配置信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
创建所述客户端的历史配置队列,所述历史配置队列包括所述客户端通过所述阻塞队列获取到的至少一条配置信息以及至少一条版本信息,所述至少一条配置信息与所述至少一条版本信息一一对应;
当通过所述阻塞队列将所述配置信息同步到所述客户端失败时,根据所述至少一条版本信息从所述至少一条配置信息中获取最新配置信息;
将所述最新配置信息同步到所述客户端。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
设置所述历史配置队列包含的配置信息的数量阈值M,M为正整数;
获取所述至少一条配置信息的数量N,N为正整数;
当N大于M时,删除所述至少一条配置信息中的(N-M)条配置信息。
7.根据权利要求6所述的方法,其特征在于,所述删除所述至少一条配置信息中的(N-M)条配置信息包括:
获取与所述至少一条配置信息一一对应的至少一个创建时间,根据所述至少一个创建时间,从所述至少一条配置信息中删除创建时间晚的(N-M)条配置信息;
或者,获取与所述至少一条配置信息一一对应的至少一个使用次数,根据所述至少一个使用次数,从所述至少一条配置信息中删除使用次数少的(N-M)条配置信息。
8.一种配置同步装置,其特征在于,所述装置应用于中间件,所述方法包括:
第一接收模块,用于接收客户端发送的注册请求,所述注册请求携带所述客户端的注册信息;
创建模块,用于根据所述注册信息,创建所述客户端的注册队列,以及创建所述客户端的阻塞队列;
发送模块,用于向服务端发送携带所述注册队列的配置请求,所述配置请求用于指示所述服务端根据所述注册队列确定所述客户端的配置信息;
第二接收模块,用于接收所述服务端发送的所述配置信息;
更新模块,用于根据所述配置信息,更新所述阻塞队列;
同步模块,用于通过所述阻塞队列,将所述配置信息同步到所述客户端。
9.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行权利要求1至7任一项方法中的步骤的指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010908701.0A CN111988186B (zh) | 2020-09-02 | 2020-09-02 | 一种配置同步方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010908701.0A CN111988186B (zh) | 2020-09-02 | 2020-09-02 | 一种配置同步方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111988186A true CN111988186A (zh) | 2020-11-24 |
CN111988186B CN111988186B (zh) | 2023-04-11 |
Family
ID=73448292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010908701.0A Active CN111988186B (zh) | 2020-09-02 | 2020-09-02 | 一种配置同步方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111988186B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080034068A1 (en) * | 2006-08-04 | 2008-02-07 | Apple Computer, Inc. | Automatic Application Provisioning |
CN107947960A (zh) * | 2017-10-13 | 2018-04-20 | 用友网络科技股份有限公司 | 配置信息的推送方法及***、配置信息的接收方法及*** |
CN110007950A (zh) * | 2019-04-10 | 2019-07-12 | 优信拍(北京)信息科技有限公司 | 一种应用程序接口的管理方法、装置及服务器 |
CN110597595A (zh) * | 2019-09-30 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 多语言信息的提供方法、配置方法、装置、设备和介质 |
CN111262726A (zh) * | 2020-01-08 | 2020-06-09 | Oppo广东移动通信有限公司 | 一种配置信息更新方法、装置及计算机可读存储介质 |
CN111314416A (zh) * | 2019-12-30 | 2020-06-19 | 广州市百果园网络科技有限公司 | 数据同步方法、装置、***、设备和存储介质 |
-
2020
- 2020-09-02 CN CN202010908701.0A patent/CN111988186B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080034068A1 (en) * | 2006-08-04 | 2008-02-07 | Apple Computer, Inc. | Automatic Application Provisioning |
CN107947960A (zh) * | 2017-10-13 | 2018-04-20 | 用友网络科技股份有限公司 | 配置信息的推送方法及***、配置信息的接收方法及*** |
CN110007950A (zh) * | 2019-04-10 | 2019-07-12 | 优信拍(北京)信息科技有限公司 | 一种应用程序接口的管理方法、装置及服务器 |
CN110597595A (zh) * | 2019-09-30 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 多语言信息的提供方法、配置方法、装置、设备和介质 |
CN111314416A (zh) * | 2019-12-30 | 2020-06-19 | 广州市百果园网络科技有限公司 | 数据同步方法、装置、***、设备和存储介质 |
CN111262726A (zh) * | 2020-01-08 | 2020-06-09 | Oppo广东移动通信有限公司 | 一种配置信息更新方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111988186B (zh) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107465767B (zh) | 一种数据同步的方法和*** | |
CN110737442A (zh) | 一种边缘应用管理方法及*** | |
CN108200219B (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN105138691A (zh) | 分析用户业务量的方法和*** | |
CN104601366A (zh) | 一种控制、服务节点配置服务的方法及装置 | |
CN110572464A (zh) | 底层资源状态同步方法、装置、云平台***及存储介质 | |
CN106850724B (zh) | 数据推送方法及装置 | |
CN107704550A (zh) | 文件迁移方法、装置以及计算机可读存储介质 | |
CN114900449B (zh) | 一种资源信息管理方法、***及装置 | |
CN105320577A (zh) | 一种数据备份和恢复方法、***及装置 | |
CN110213359B (zh) | 一种基于d2d的车联网组网数据推送***和方法 | |
CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
KR20160026138A (ko) | 클라우드 데이터 시스템의 급속 동기화 방법 및 그를 이용한 클라우드 데이터 시스템 | |
CN112181049B (zh) | 集群时间同步方法、装置、***、设备及可读存储介质 | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
CN111988186B (zh) | 一种配置同步方法及相关装置 | |
CN112804313B (zh) | 基于跨域边缘节点的数据同步方法、装置、设备及介质 | |
CN115189931A (zh) | 一种分布式密钥管理方法、装置、设备、存储介质 | |
CN107786661B (zh) | 信息同步方法 | |
CN112685486B (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN110650033B (zh) | 分布式应用配置管理的方法和分布式计算*** | |
CN113760843A (zh) | 一种站点部署方法及终端 | |
CN112685501A (zh) | 一种中心节点与边缘节点的数据同步方法、装置及*** | |
CN110990193A (zh) | 日志备份的方法、装置及*** | |
CN110674148A (zh) | 数据库的数据更新同步方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.) Applicant after: ONECONNECT FINANCIAL TECHNOLOGY Co.,Ltd. (SHANGHAI) Address before: Room 201, Building A, No. 1 Qianwan Road, Qianhaisheng Cooperation Zone, Shenzhen City, Guangdong Province, 518000 Applicant before: ONECONNECT FINANCIAL TECHNOLOGY Co.,Ltd. (SHANGHAI) |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |