CN108696374B - 更新客户端配置的方法和装置 - Google Patents
更新客户端配置的方法和装置 Download PDFInfo
- Publication number
- CN108696374B CN108696374B CN201710228324.4A CN201710228324A CN108696374B CN 108696374 B CN108696374 B CN 108696374B CN 201710228324 A CN201710228324 A CN 201710228324A CN 108696374 B CN108696374 B CN 108696374B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- update
- request
- 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.)
- Active
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
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- 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/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种更新客户端配置的方法、装置、电子设备和存储介质。所述方法包括:由服务器接收来自所述客户端的初始订阅请求;根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;接收来自所述客户端的客户端更新请求;从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新;以及根据判断结果,对所述客户端更新请求进行响应。有助于减少服务端处理压力并提高通信及时性,优化分布式环境下客户端和服务器端之间的通讯方式。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种更新客户端配置的方法、装置、电子设备和存储介质。
背景技术
目前的电子商务领域中,分布式环境由于其自身在数据处理、负载平衡等各项能力上的优势被广泛采用。而在一个分布式环境中,同类型的服务往往会部署很多实例(即,客户端;下文中将各种实例统称为客户端),这些客户端在运行的过程中需要主动或被动地使用到一种或多种配置。
因此在现有技术中,访问到服务器的客户端数目以及每个客户端所订阅的配置项的数目都是非常巨大的,为了更好地维护各个客户端所需的大量配置,便产生了配置管理服务。但是当配置项的订阅量增加时,对配置中心服务仍会产生较大的压力,容易产生timeout,或者50X(服务器过载)错误。
发明内容
有鉴于此,本发明提供一种更新客户端配置的方法和装置,有助于减少服务端处理压力并提高通信及时性,从而优化分布式环境下客户端和服务器端之间的通讯方式。
为实现上述目的,根据本发明实施例的一个方面,提供了一种更新客户端配置的方法。
本发明的更新客户端配置的方法包括:由服务器接收来自所述客户端的初始订阅请求,其中,所述客户端已经与所述服务器建立连接;根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;接收来自所述客户端的客户端更新请求,所述客户端更新请求包括对与所述客户端相关联的一个或多个配置项的更新以及与所述客户端相关联的客户端标识符;从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新;以及根据判断结果,对所述客户端更新请求进行响应。
可选地,所述根据判断结果,对所述客户端更新请求进行响应进一步包括:判断所述配置项数据库中是否存在更新;响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的所述连接。
可选地,所述连接为HTTP连接。
可选地,将所述更新传送至所述客户端进一步包括:将全部所述更新进行组合;根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;将所述一个或多个子分组传送至所述客户端。
可选地,在所述预定时间段内保持与所述客户端之间的连接进一步包括:判断在所述预定时间段内所述配置项数据库中是否出现更新;响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
可选地,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。
根据本发明的另一个方面,提供了一种更新客户端配置的装置。
本发明的更新客户端配置的装置包括:接收模块,所述接收模块用于接收来自所述客户端的初始订阅请求以及客户端更新请求;服务器监听映射创建模块,所述服务器监听映射创建模块用于根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;存储模块,所述存储模块用于将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;检索模块,所述检索模块用于从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;请求处理模块,所述请求处理模块用于根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新,以及根据判断结果,对所述客户端更新请求进行响应。
可选地,所述请求处理模块进一步用于:判断所述配置项数据库中是否存在更新;响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的所述连接。
可选地,所述连接为HTTP连接。
可选地,所述装置还包括:组合/拆分模块,所述组合/拆分模块用于:将全部所述更新进行组合;根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;将所述一个或多个子分组传送至所述客户端。
可选地,所述请求处理模块进一步用于:判断在所述预定时间段内所述配置项数据库中是否出现更新;响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
可选地,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。
为实现上述目的,根据本发明的再一方面,提供了一种电子设备。
本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的更新客户端配置的方法。
为实现上述目的,根据本发明的又一方面,提供了一种计算机可读存储介质。
本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的更新客户端配置的方法。
根据本发明的技术方案,在统一配置服务的基础上,减少了服务端的处理压力并且增强了客户与服务器之间通信的时效性,从而优化分布式环境下客户端和服务器端通讯方式。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施方式的一种更新客户端配置的方法的主要步骤的示意图;
图2是根据图1所示的一种更新客户端配置的方法的步骤S6的详细步骤示意图;
图3是根据本发明实施方式的更新客户端配置的装置的主要组成部分的示意图;
图4是根据本发明实施方式的另一种客户端-服务器架构的示意图;
图5是根据本发明实施方式的另一种客户端和服务器之间的完整交互流程的示意图;
图6是根据图5所示的另一种客户端和服务器之间的完整交互流程中的更新配置过程的示意图;
图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施方式做出说明,其中包括本发明实施方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施方式做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
分布式配置管理的本质基本上就是一种推送-订阅模式的运用。配置的应用方是订阅者(即,客户端),配置管理服务则是推送方(即,服务器)。
参照附图1,是根据本发明实施方式的一种更新客户端配置的方法的主要步骤的示意图,对本发明所提供的更新客户端配置的方法的一个总体的实施例进行描述。所述方法包括:
步骤S1:由服务器接收来自所述客户端的初始订阅请求,其中,所述客户端已经与所述服务器建立连接;
步骤S2:根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;
步骤S3:接收来自所述客户端的客户端更新请求,所述客户端更新请求包括对与所述客户端相关联的一个或多个配置项的更新以及与所述客户端相关联的客户端标识符;
步骤S4:从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;
步骤S5:根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新;
步骤S6:根据判断结果,对所述客户端更新请求进行响应。
本发明所述的技术改变了现有技术中相同客户端需要对多个配置项分别请求更新的方式,通过使用客户端标识符来统一更新该客户端上的所有配置项,大大减少了客户端与服务器之间的通信量。例如,在相同客户端一次要请求ABCDE五个配置项的情况下,现有技术需要向服务器发送针对ABCDE的五个请求,而本发明的技术采用以客户端为单位进行请求,统一从服务器拉取该客户端的所有配置项,这样就只用请求一次,大大减轻了服务器压力和资源占用,减少了服务端的处理压力,从而优化分布式环境下客户端和服务器端通讯方式。
下面将在上述总体实施例的基础上,对本发明所述方法的各个步骤进行详细描述。以下对于本发明所述方法的描述是以本发明所提供的装置(如图3所示的装置)为例进行描述,也就是说,下述步骤可以由本发明所提供的装置执行。在其他实施例中,本发明所述的方法中的步骤也可以由本发明所提供的终端设备(如图7所示的终端设备)来执行。所述方法是由客户端-服务器通信模式中的服务器侧执行。在其他实施例中,所述方法也可由其他方式独立或组合实现。
步骤S1:由服务器接收来自所述客户端的初始订阅请求,其中,所述客户端已经与所述服务器建立连接。
所述初始订阅请求是客户端在首次启动时发起的订阅请求,目的在于在服务器端创建并保存与该客户端相关联的信息以便进行之后的一系列通信。其中,客户端在发送请求之前已经基于通信协议在客户端与服务器之间建立了通信连接。
可选地,所述连接为HTTP连接。
现有技术中,通常使用通过zookeeper的客户端订阅功能,由zookeeper定时推送数据到客户端进行数据同步。并且,在服务器变化的时候,也及时将变化推送给客户端。但这样的基于zookeeper的watch(所述watch为zookeeper创建的一个监控点,为订阅某个配置项A的客户端监控A的变化,A一旦变化立即推送给客户端)缺点在于其工程量较重,适应性差,需要客户端接入zookeeper,对部分内外网应用透传同一zookeeper服务,安全性较差,需要中转服务。
在一些实施例中,作为改进,本发明所提供的方法中不采用zookeeper,改用http。这是由于zookeeper是一种公用组件,用于在服务器集群之间进行调度,客户端和服务器都需要通过zookeeper进行信息交互(可理解为客户端和服务器需要通过相应的版本,客户端上也要安装zookeeper),但zookeeper存在很多问题,比如在分布式系统中只能保证最终在所有服务器中的数据一致性,而无法确保过程当中的数据一致性(zookeeper的处理机制,少数服从多数),而且服务器必须要对客户端公布其端口连接,相比来说,http在连接方式上更加简单并且更加契合实际需求,解决了利用zookeeper订阅,监听方案如果配置项多,监听节点过多引起的性能问题,以及大部分环境利用zookeeper无法做到http请求通用性的问题。
步骤S2:根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中。
在一些实施例中,在接收到来自所述客户端的初始订阅请求之后,服务器要在服务器端对所述客户端进行注册,即创建并维持一个与所述客户端相关联的监听映射关系(即,所述服务器监听映射)并向客户端返回注册成功与否的信息。例如,所述服务器监听映射为:
Map<bean<id,version>,Sbean<List<Subscribe>,version>>
此处整合在一起进行描述:bean<id,version>bean为客户端对象,id为客户端唯一标识,version为客户端当前配置信息版本。Sbean<List<Subscribe>,version>为服务端订阅信息的版本号,List<Subscribe>为所有订阅集合,version为订阅信心当前产生的版本。此版本实际为各订阅项版本通过特定方法计算出来的值。
步骤S3:接收来自所述客户端的客户端更新请求,所述客户端更新请求包括对与所述客户端相关联的一个或多个配置项的更新以及与所述客户端相关联的客户端标识符。
现有技术中,基于http的轮询次数过多,基本按照订阅值或者目录进行订阅,单次客户端数据同步请求量为:
T=C1*K1+C2*K2+…+Cn*Kn,
其中,T代表单一批次总请求次数;C1…Cn代表服务器量(1~n),k1…kn代表各自的订阅值数量。
例如,一次需要请求ABCDE五个配置项,A对应5(C1)个服务器,每个服务器有5(K1)个值;B对应6(C2)个服务器,每个服务器有6(K2)个值;等。因此,当订阅量增加,或者接入的应用增加,对配置中心服务会产生较大的压力,容易产生timeout,或者50X(服务器过载)错误。
本发明所述的技术改变了现有技术中相同客户端需要对多个配置项分别请求更新的方式,通过使用客户端标识符来统一更新该客户端上的所有配置项,大大减少了客户端与服务器之间的通信量。例如,在相同客户端一次要请求ABCDE五个配置项的情况下,现有技术需要向服务器发送针对ABCDE的五个请求,而本发明的技术采用以客户端为单位进行请求,统一从服务器拉取该客户端的所有配置项,这样就只用请求一次,大大减轻了服务器压力和资源占用。请求量由原本“T=C1*K1+C2*K2+…+Cn*Kn”到最小n(开启客户端同一缓存)最大c1+c2+…+cn,减少了服务端的处理压力,从而优化分布式环境下客户端和服务器端通讯方式。其中,所述客户端标识符是所述客户端根据相关地址、mac等自动生成的客户端的唯一识别信息。
步骤S4:从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射。
在一些实施例中,存储在服务器中的所述服务器监听映射会持续监听所关联的配置项以及版本信息等相关信息的更新情况,一旦监听到来自其他模块的更新,便及时更新对应服务器监听映射中的相关信息。所以,在接收到来自所述客户端的客户端更新请求之后,服务器会从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射,以便获取最新的映射信息。
步骤S5:根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新。
在一些实施例中,由于所述服务器监听映射中的内容是实时更新的,所以可以被用来和客户端的现有版本和配置项信息进行比对,从而判断与所述客户端相关联的所述一个或多个配置项是否存在更新。
步骤S6:根据判断结果,对所述客户端更新请求进行响应。
参照图2,是根据图1所示的一种更新客户端配置的方法的步骤S6的详细步骤示意图。
优选地,步骤S6中的所述根据判断结果,对所述客户端更新请求进行响应进一步包括:
步骤S610:判断所述配置项数据库中是否存在更新;
步骤S620:响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;
步骤S630:响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的所述连接。
进一步地,将所述更新传送至所述客户端进一步包括:
步骤S621:将全部所述更新进行组合;
步骤S622:根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;
步骤S623:将所述一个或多个子分组传送至所述客户端。
进一步地,在所述预定时间段内保持与所述客户端之间的连接进一步包括:
步骤S631:判断在所述预定时间段内所述配置项数据库中是否出现更新;
步骤S632:响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;
步骤S633:响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
更进一步地,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。即,所述客户端响应于接收到来自所述服务器的消息,向所述服务器发送另一个客户端更新请求。
在一些实施例中,本发明在步骤S1至步骤S6的基础上,进一步对客户端与服务器之间的通信方式做出了进一步的改进,即对步骤S6进行了细分。在现有技术中,客户端和服务器的交互策略通常采用普通轮询(polling),订阅的及时性依赖于轮询时间被设置的长短,设置过长无法及时响应消息,设置过短,对配置中心访问请求量过大。而在本发明所提供的技术中,采用长轮询(long-polling)代替普通轮询,并且设置服务器hold住来自客户端的请求60s,进一步优化了交互中的及时性。配置信息变更由原本设置的轮询时间生效提升为立即生效,大大增强其实时性,更进一步地优化了分布式环境下客户端和服务器端通讯方式。
在一些实施例中,如果相同客户端一次要请求ABCDE五个配置项,按照本发明的方法,服务器会将ABCDE五个配置项打包发送,但由于网络中的流量控制,整个包太大,于是按照流量限制n将整个包拆成多个大小为n的子包,当请求相同客户端的所有配置项时,先发送一个子包,客户端接收到子包后会依照长轮询的规则紧接着再发一个请求,客户端接着发下一个子包,如此循环直到发完,客户端会根据子包里的标识自动识别并将子包组合再分解成ABCDE。这和常见的通信协议中底层的拆包的方式很像,但本发明的技术发生在应用层。通过这种方式,可以解决服务器配置中心针对订阅信息,值过大时引起的网络超时异常,以及网络堵塞问题,防止了配置信息单批次传输数据量过大的问题,能自动适应分批传递,大大加强配置中心的性能,更进一步地优化了分布式环境下客户端和服务器端通讯方式。
参照附图3,是根据本发明实施方式的更新客户端配置的装置300的主要组成部分的示意图。
根据本发明的另一个方面,提供了一种更新客户端配置的装置300。
本发明的更新客户端配置的装置300,包括:
接收模块310,所述接收模块310用于接收来自所述客户端的初始订阅请求以及客户端更新请求;
服务器监听映射创建模块320,所述服务器监听映射创建模块320用于根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;
存储模块330,所述存储模块330用于将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;
检索模块340,所述检索模块340用于从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;
请求处理模块350,所述请求处理模块350用于根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新,以及根据判断结果,对所述客户端更新请求进行响应。
可选地,所述请求处理模块350进一步用于:
判断所述配置项数据库中是否存在更新;
响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;
响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的所述连接。
可选地,所述连接为HTTP连接。
可选地,所述装置还包括:
组合/拆分模块,所述组合/拆分模块用于:
将全部所述更新进行组合;
根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;
将所述一个或多个子分组传送至所述客户端。
可选地,所述请求处理模块350进一步用于:
判断在所述预定时间段内所述配置项数据库中是否出现更新;
响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;
响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
可选地,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。
参照附图4,是根据本发明实施方式的另一种客户端-服务器架构的示意图。
在一些实施例中,本发明还提供了一种示例客户端-服务器架构。其中,所述客户端包括:
注册订阅模块410:此模块用于进行客户端订阅信息的管理,所述订阅信息包括配置目录信息和节点信息,以及订阅请求、去除订阅等相关功能信息。客户端可以实现共同备份和竞争请求,这样同一类型的服务,各个客户端会通过定时的锁竞争,只发起一个到服务端的请求,本实现默认是所有实例单独请求。其中,所述锁竞争是一种本地决策机制,用于决定多个客户端中的哪个客户端去请求服务器,可以进一步减少请求数目。
Long-polling请求模块420:此模块为客户端同步数据的核心管理模块,通过long-polling的请求方式请求此客户端的配置信息,每当一个请求失败或者成功,再继续发起同样的请求。对于同一客户端页仅保持一个long-polling的请求,请求携带客户端的唯一识别信息,并根据客户端提供最大数据包大小(即,数据分组接收阈值)进行自动分批数据接收控制。其中,所述客户端标识符是所述客户端根据相关地址、mac等自动生成的客户端的唯一识别信息。
本地备份模块430:提供本地缓存和备份,在服务端异常时,取本地信息进行操作。
所述示例客户端-服务器架构中的所述服务器包括:
请求异步处理模块440:具有内部存在线程保持功能,将前端请求hold住指定最大时间,当有配置变更及反馈给客户端,否则等待请求达到最大时间时返回空信息。
配置信息发布/订阅的内部模块450:保存客户端请求订阅信息,以客户端唯一识别码进行整体关联,客户端订阅各key,如果有变更,直接通知客户端请求服务。替选地,服务器上的配置项一旦有变更,可以直接推送给客户端。
配置同步自检模块460:当有配置项更新或者变更,通知所有服务器端进行配置信息的同步,保证缓存和存储数据的一致性。
缓存和存储模块470:redis和文件缓存,和数据库存储模块。
参照图5,是根据本发明实施方式的另一种客户端和服务器之间的完整交互流程的示意图;并参照图6,是根据图5所示的另一种客户端和服务器之间的完整交互流程中的更新配置过程的示意图。
1.客户端启动时发起注册订阅信息,在服务器端关联维持一个Map<bean<id,version>,Sbean<List<Subscribe>,version>>的监听映射关系,并返回客户端注册成功与否信息。
2.客户端比对本地缓存,发起首次同步请求。
3.服务器端根据对比客户端的缓存版本信息,返回最新配置信息或者告知客户端当前配置信息已经为最新。此处客户端和服务端可能交互多次,次数为Math.ceil(update(size)/once(max_size))。
4.客户端发起获取更新配置请求。
5.服务端获取客户端请求进行异步处理,判断该客户端所有订阅配置项,是否有更新信息(此处为发布订阅模式的推送方式),如果有更新,立即根据客户端设置网络影响的大小,进行数据的返回,否则保持客户端连接,等待配置变更信息,如果在最大超时时间(默认60s)内还未有配置信息变更,返回客户端空信息。
6.客户端继续发起请求信息,重复以上步骤4和5(如附图5中所示)。
7.当客户端有新增订阅配置项,发起订阅请求,服务端更新Map<bean<id,version>,Sbean<List<Subscribe>,version>的监听映射关系。
8.客户端继续重复步骤6。
注意:步骤5中如果有配置信息变更,会变更Sbean<List<Subscribe>,version>的version版本信息,当客户端完整接收配置变更后更新bean<id,version>的version对象,并且大于网络最大传输大小,配置项会分为多次异步返回,在客户端进行拼接,通过上面描述的long-polling方式,会极大减少数据整体获取的时间。同样实例维持的List<Subscribe>是为同一引用对象,减少重复订阅请求处理。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的更新客户端配置的方法。
本发明的非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的更新客户端配置的方法。
如图7所示,其示出了适于用来实现本申请实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分707;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:由服务器接收来自所述客户端的初始订阅请求,其中,所述客户端已经与所述服务器建立连接;根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;接收来自所述客户端的客户端更新请求,所述客户端更新请求包括对与所述客户端相关联的一个或多个配置项的更新以及与所述客户端相关联的客户端标识符;从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新;以及根据判断结果,对所述客户端更新请求进行响应。
根据本发明实施例的技术方案,在统一配置服务的基础上,减少了服务端的处理压力并且增强了客户与服务器之间通信的时效性,从而优化分布式环境下客户端和服务器端通讯方式。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
根据本发明实施例的技术方案,改变了现有技术中相同客户端需要对多个配置项分别请求更新的方式,通过使用客户端标识符来统一更新该客户端上的所有配置项,大大减少了客户端与服务器之间的通信量,减轻了服务器压力和资源占用,减少了服务端的处理压力,从而优化分布式环境下客户端和服务器端通讯方式。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种更新客户端配置的方法,其特征在于,包括:由服务器接收来自所述客户端的初始订阅请求,其中,所述客户端已经与所述服务器建立连接;
根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;
接收来自所述客户端的客户端更新请求,所述客户端更新请求包括对与所述客户端相关联的一个或多个配置项的更新以及与所述客户端相关联的客户端标识符;
从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;
根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新;以及
根据判断结果,对所述客户端更新请求进行响应;
所述根据判断结果,对所述客户端更新请求进行响应进一步包括:判断所述配置项数据库中是否存在更新;响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;
其中,将所述更新传送至所述客户端进一步包括:将全部所述更新进行组合;根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;将所述一个或多个子分组传送至所述客户端;其中,在将所述一个或多个子分组传送至所述客户端时,先发送一个子分组,并在客户端接收到所述子分组并依照长轮询的规则再发一个请求后,接着发下一个子分组,如此循环直至发完所有的子分组。
2.根据权利要求1所述的方法,其特征在于,所述根据判断结果,对所述客户端更新请求进行响应进一步包括:
响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的所述连接。
3.根据权利要求1所述的方法,其特征在于,所述连接为HTTP连接。
4.根据权利要求2所述的方法,其特征在于,在所述预定时间段内保持与所述客户端之间的连接进一步包括:
判断在所述预定时间段内所述配置项数据库中是否出现更新;
响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;
响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
5.根据权利要求4所述的方法,其特征在于,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。
6.一种更新客户端配置的装置,其特征在于,包括:
接收模块,所述接收模块用于接收来自所述客户端的初始订阅请求以及客户端更新请求;
服务器监听映射创建模块,所述服务器监听映射创建模块用于根据所述初始订阅请求,创建与所述客户端相关联的服务器监听映射;
存储模块,所述存储模块用于将所述服务器监听映射以及与所述客户端相关联的一个或多个配置项的数据存储在配置项数据库中;
检索模块,所述检索模块用于从所述配置项数据库中检索与所述客户端相关联的所述服务器监听映射;
请求处理模块,所述请求处理模块用于根据检索到的所述服务器监听映射,判断与所述客户端相关联的所述一个或多个配置项是否存在更新,以及根据判断结果,对所述客户端更新请求进行响应;
所述请求处理模块进一步用于:判断所述配置项数据库中是否存在更新;响应于所述配置项数据库中存在更新,将所述更新传送至所述客户端;
组合/拆分模块,所述组合/拆分模块用于:将全部所述更新进行组合;根据所述客户端提供的数据分组接收阈值,将经组合的更新拆分为一个或多个子分组;将所述一个或多个子分组传送至所述客户端;其中,在将所述一个或多个子分组传送至所述客户端时,先发送一个子分组,并在客户端接收到所述子分组并依照长轮询的规则再发一个请求后,接着发下一个子分组,如此循环直至发完所有的子分组。
7.根据权利要求6所述的装置,其特征在于,所述请求处理模块进一步用于:
响应于所述配置项数据库中不存在更新,在预定时间段内保持所述服务器与所述客户端之间的连接。
8.根据权利要求7所述的装置,其特征在于,所述连接为HTTP连接。
9.根据权利要求7所述的装置,其特征在于,所述请求处理模块进一步用于:
判断在所述预定时间段内所述配置项数据库中是否出现更新;
响应于在所述预定时间段内所述配置项数据库中出现更新,将所述更新传送至所述客户端;
响应于在所述预定时间段内所述配置项数据库中没有出现更新,在所述预定时间段结束时向所述客户端传送空信息。
10.根据权利要求9所述的装置,其特征在于,在向所述客户端发送消息之后,接收所述客户端响应于接收到所述消息而向所述服务器发送的另一个客户端更新请求。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710228324.4A CN108696374B (zh) | 2017-04-10 | 2017-04-10 | 更新客户端配置的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710228324.4A CN108696374B (zh) | 2017-04-10 | 2017-04-10 | 更新客户端配置的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108696374A CN108696374A (zh) | 2018-10-23 |
CN108696374B true CN108696374B (zh) | 2021-10-01 |
Family
ID=63843068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710228324.4A Active CN108696374B (zh) | 2017-04-10 | 2017-04-10 | 更新客户端配置的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108696374B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885320A (zh) * | 2018-12-29 | 2019-06-14 | 深圳云天励飞技术有限公司 | 一种配置信息的更新方法、装置及电子设备 |
WO2020155414A1 (en) * | 2019-01-29 | 2020-08-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for subscription update |
CN110471679B (zh) * | 2019-07-08 | 2024-04-02 | 中国平安人寿保险股份有限公司 | 客户端资源配置更新方法、装置及存储介质、服务器 |
CN110609701A (zh) * | 2019-08-29 | 2019-12-24 | 凡普数字技术有限公司 | 提供服务的方法、装置和存储介质 |
CN110944037B (zh) * | 2019-10-25 | 2023-04-07 | 浙江大华技术股份有限公司 | 客户端缓存更改配置的方法、计算机设备和存储介质 |
CN110944059B (zh) * | 2019-12-04 | 2022-07-05 | 中国石油化工股份有限公司 | 一种通信方法及装置 |
CN111314118B (zh) * | 2020-01-19 | 2023-04-07 | 中移(杭州)信息技术有限公司 | 数据管理方法、装置、电子设备及存储介质 |
CN111538514A (zh) * | 2020-04-17 | 2020-08-14 | 北京三快在线科技有限公司 | 企业应用的更新方法、装置、存储介质及电子设备 |
CN111782687A (zh) * | 2020-05-20 | 2020-10-16 | 北京皮尔布莱尼软件有限公司 | 一种数据检索系统和方法 |
CN111857800A (zh) * | 2020-07-01 | 2020-10-30 | 北京达佳互联信息技术有限公司 | 组件动态配置方法、装置、电子设备及存储介质 |
CN111796851A (zh) * | 2020-08-06 | 2020-10-20 | 北京百度网讯科技有限公司 | 客户端基础库更新方法、装置、电子设备和存储介质 |
CN112235184B (zh) * | 2020-09-08 | 2023-02-10 | 北京首钢自动化信息技术有限公司 | 一种基于事件驱动的信息推送方法、装置及电子设备 |
CN113434316A (zh) * | 2021-07-16 | 2021-09-24 | 南京炫佳网络科技有限公司 | 一种基于redis插件的功能集成方法、装置、设备及存储介质 |
CN114465896A (zh) * | 2022-03-30 | 2022-05-10 | 深信服科技股份有限公司 | 一种配置信息处理方法、装置、设备及可读存储介质 |
CN115333940A (zh) * | 2022-08-11 | 2022-11-11 | 以萨技术股份有限公司 | 基于etcd实现配置监听的方法和系统 |
CN116048564B (zh) * | 2022-08-19 | 2023-10-20 | 荣耀终端有限公司 | 一种参数更新方法、终端、服务器、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102625156A (zh) * | 2011-01-27 | 2012-08-01 | 天脉聚源(北京)传媒科技有限公司 | 一种信息同步的方法和系统 |
CN102882907A (zh) * | 2011-07-14 | 2013-01-16 | 鸿富锦精密工业(深圳)有限公司 | 客户端配置系统及方法 |
CN103597465A (zh) * | 2011-06-15 | 2014-02-19 | 微软公司 | 高效的状态协调 |
CN105099761A (zh) * | 2015-06-26 | 2015-11-25 | 广东欧珀移动通信有限公司 | 一种集中管理客户端的配置信息的方法和系统 |
CN105245567A (zh) * | 2015-08-28 | 2016-01-13 | 北京坚石诚信科技有限公司 | 一种处理更新请求的方法和服务器系统 |
CN105407149A (zh) * | 2015-10-29 | 2016-03-16 | 广州酷狗计算机科技有限公司 | 消息推送方法及装置 |
-
2017
- 2017-04-10 CN CN201710228324.4A patent/CN108696374B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102625156A (zh) * | 2011-01-27 | 2012-08-01 | 天脉聚源(北京)传媒科技有限公司 | 一种信息同步的方法和系统 |
CN103597465A (zh) * | 2011-06-15 | 2014-02-19 | 微软公司 | 高效的状态协调 |
CN102882907A (zh) * | 2011-07-14 | 2013-01-16 | 鸿富锦精密工业(深圳)有限公司 | 客户端配置系统及方法 |
CN105099761A (zh) * | 2015-06-26 | 2015-11-25 | 广东欧珀移动通信有限公司 | 一种集中管理客户端的配置信息的方法和系统 |
CN105245567A (zh) * | 2015-08-28 | 2016-01-13 | 北京坚石诚信科技有限公司 | 一种处理更新请求的方法和服务器系统 |
CN105407149A (zh) * | 2015-10-29 | 2016-03-16 | 广州酷狗计算机科技有限公司 | 消息推送方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108696374A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696374B (zh) | 更新客户端配置的方法和装置 | |
CN108388479B (zh) | 延迟消息推送方法、装置、计算机设备及存储介质 | |
WO2021237433A1 (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN109995801B (zh) | 一种消息传输方法和装置 | |
CN110837409B (zh) | 一种定时执行任务的方法和系统 | |
CN111917687A (zh) | 一种循环推送提醒消息的方法和装置 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN111181765A (zh) | 一种任务处理方法和装置 | |
CN112104679B (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
CN110798495B (zh) | 用于在集群架构模式下端到端的消息推送的方法和服务器 | |
CN113127923A (zh) | 管理权限的方法和装置 | |
CN112653632A (zh) | 一种流量控制实现方法和装置 | |
CN112084042A (zh) | 一种消息处理的方法和装置 | |
CN111831503A (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN106657195B (zh) | 任务处理方法和中继设备 | |
CN113783913A (zh) | 一种消息推送管理方法和装置 | |
CN110324370B (zh) | 服务端向客户端推送数据的方法和装置 | |
CN110113176B (zh) | 用于配置服务器的信息同步方法及装置 | |
CN113553206B (zh) | 数据事件执行方法、装置、电子设备和计算机可读介质 | |
CN113238808B (zh) | 一种消息推送方法和装置 | |
CN113765813A (zh) | 一种动态调整报文接收速率的方法和装置 | |
CN111193656A (zh) | 一种消息推送方法和装置 | |
CN108600025B (zh) | 一种系统自动容灾的方法和装置 | |
CN113132480B (zh) | 一种数据传输方法、装置和系统 | |
CN113778504B (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 |