配置信息的推送方法及系统、配置信息的接收方法及系统技术方案

技术编号:17783879 阅读:29 留言:0更新日期:2018-04-22 15:05
本发明专利技术提出了一种配置信息的推送方法、系统、配置信息的接收方法、系统、计算机装置及计算机可读存储介质,其中用于服务端的配置信息的推送方法包括:接收来自客户端的HTTP请求;检测配置信息的更新信息,同时将更新信息存储至阻塞队列;将阻塞队列中的更新信息推送至客户端;当阻塞队列中不存在更新信息时,令客户端推送更新信息的线程等待通知;同时判断是否出现请求超时异常或网络异常;当未出现请求超时异常或网络异常,以及阻塞队列中已存储有更新信息时,将更新信息推送至客户端。采用基于长轮询方案连接等待和重试,实现类似长连接效果,可以有效的在HTTP协议的基础上,达到实时获取变更状态的效果。

【技术实现步骤摘要】
配置信息的推送方法及系统、配置信息的接收方法及系统
本专利技术涉及数据处理
,具体而言,涉及一种配置信息的推送方法、系统、配置信息的接收方法、系统、计算机装置及计算机可读存储介质。
技术介绍
在互联网应用场景下,一个完整的业务通常由多个微服务组成,每个微服务在开发环境、测试环境、预发布环境和生产环境对应着不同的配置信息,需要针对不同环境维护多份。开发者在开发测试以及联调的时候需要对应不同的环境信息。而频繁的修改和调整配置信息会带来了很大麻烦,并且大量的配置文件的维护给运维人员带来相当大的困扰。为解决上述问题出现了配置中心,在局域网下如图1所示,私有部署一份配置中心服务,客户端可以通过Socket连接或者Zookeeper的Watcher机制,监听服务端的配置变化。但是如果配置中心以公有服务的方式提供使用时,全链路经过了SLB、Nginx可能还有内部的Haproxy的层层转发,即使配置长时间不超时,也可能由于中间层的网络问题,造成链接异常。所以此类服务不适用类似局域网场景下的TCP直连场景,配置文件的获取和监听方式需要改变。如果以无状态的HTTP请求方式,客户端不断的查询配置状态,获取到不同状态时再重新下载文件更新到本地,方案如图2所示,为了安全性,需要对请求进行加签、验签等操作。缺少了TCP的长链接机制,以传统的无状态的HTTP方式轮询访问服务端,会增加服务端的压力。同时,在大多数时间里,在配置文件没有变化,无谓的客户端发起的轮询检查,消耗大量的资源。
技术实现思路
本专利技术旨在至少解决现有技术或相关技术中存在的技术问题之一。为此,本专利技术的一个方面在于提出了一种配置信息的推送方法。本专利技术的另一个方面在于提出了一种配置信息的推送系统。本专利技术的再一个方面在于提出了一种配置信息的接收方法。本专利技术的又一个方面在于提出了一种配置信息的接收系统。本专利技术的又一个方面在于提出了一种计算机装置。本专利技术的又一个方面在于提出了一种计算机可读存储介质。有鉴于此,根据本专利技术的一个方面,提出了一种配置信息的推送方法,用于服务端,服务端包括多个阻塞队列,每个阻塞队列对应不同的客户端连接,配置信息的推送方法包括:接收来自客户端的HTTP请求;检测配置信息的更新信息,同时将更新信息存储至阻塞队列;将阻塞队列中的更新信息推送至客户端;当阻塞队列中不存在更新信息时,令客户端推送更新信息的线程等待通知;判断是否出现请求超时异常或网络异常;当未出现请求超时异常或网络异常,以及阻塞队列中已存储有更新信息时,将更新信息推送至客户端。本专利技术提供的配置信息的推送方法,运维管理员可以登录云服务,维护配置信息的内容和版本。SLB、Nginx等负载均衡服务器,一般设置为连接超时时间为30S左右,优选为30S,配置轮询时间间隔为30S之内。在运行期,实时的调整配置信息的变化,通过单独的线程监听外部队列任何配置文件的更新信息,其中外部队列例如消息队列(RabbitMQ),会在消息队列中发送该更新信息,将该更新信息转化为特殊结构存储到对应的阻塞队列(BlockingQueue)中。将存储在阻塞队列中的更新信息推送至客户端,如果阻塞队列中没有更新信息服务端并不立即发送,而是利用阻塞队列挂住线程,有更新信息后立即发送,此为和短轮询最大的差异。如果等待过程中没有超时或者网络异常,则在阻塞队列中已存储有更新信息时将更新信息推送至客户端。采用基于长轮询方案连接等待和重试,实现类似长连接效果,可以有效的在HTTP协议的基础上,达到实时获取变更状态的效果。根据本专利技术的上述配置信息的推送方法,还可以具有以下技术特征:在上述技术方案中,优选地,还包括:当出现请求超时异常或网络异常时,记录请求超时异常或网络异常,并构造异常信息发送至客户端;接收下一HTTP请求;根据下一HTTP请求监听已建立或新建阻塞队列。在该技术方案中,如果等待过程中有超时或者网络异常,则构造异常信息返回给客户端。客户端会处理后发起新的请求,新的请求可以落到服务端集群的任意一节点(服务端),同时构建新的阻塞队列。实现异常通知,能够使客户端知晓超时或者网络异常等信息。在上述任一技术方案中,优选地,检测配置信息的更新信息,同时将更新信息存储至阻塞队列的步骤,具体包括:检测配置信息的更新信息;判断是否存在阻塞队列;当存在阻塞队列时,将更新信息存储至阻塞队列;当不存在阻塞队列时,建立阻塞队列,并将更新信息存储至阻塞队列。在该技术方案中,检测到更新信息后,判断本地是否有阻塞队列,当存在时直接将更新信息存储至阻塞队列,当不存在时先建立阻塞队列,在将更新信息存储至阻塞队列,通过阻塞队列存储更新信息,进而实现将更新信息近实时的通知到客户端。在上述任一技术方案中,优选地,还包括:监听将阻塞队列中的更新信息推送至客户端的过程,获取推送信息;将推送信息存储至Redis数据库,并通过预设方式展示所述推送信息。在该技术方案中,服务端可以针对每个阻塞队列对应的配置监听请求,以不同的key和value存储连接的监控信息到Redis数据库中,key的命名设置固定的规则。利用Redis中key的超时机制,可以自动消除断开连接的状态。整体的监控程序可以利用Redis的Scan机制,定时的分析监控信息,以图表的方式来展示,实现统一监控某一配置信息推送到各个客户端的状态以及连接的状态。此外,Redis可以采用集群的方式来部署,来保证高可用性。在上述任一技术方案中,优选地,还包括:将客户端的连接状态与会话信息存储至Redis数据库;利用Shiro安全框架对会话信息进行管理,以清理客户端的重复连接。在该技术方案中,使用Shiro安全框架和Redis数据库结合,禁用原生的Session的使用,提供SessionManager(会话管理)的实现,供业务调用来存储token(用户令牌)等验证信息。实现清理客户端重复的连接,避免重复推送。根据本专利技术的另一个方面,提出了一种配置信息的推送系统,用于服务端,服务端包括多个阻塞队列,每个阻塞队列对应不同的客户端连接,配置信息的推送系统包括:接收单元,用于接收来自客户端的HTTP请求;检测单元,用于检测配置信息的更新信息,同时将更新信息存储至阻塞队列;推送单元,用于将阻塞队列中的更新信息推送至客户端;挂起单元,用于当阻塞队列中不存在更新信息时,令客户端推送更新信息的线程等待新通知;判断单元,用于判断是否出现请求超时异常或网络异常;推送单元,还用于当未出现请求超时异常或网络异常,以及阻塞队列中已存储有更新信息时,将更新信息推送至客户端。本专利技术提供的配置信息的推送系统,通过运维管理员可以登录云服务,维护配置信息的内容和版本。SLB、Nginx等负载均衡服务器,一般设置为连接超时时间为30S左右,优选为30S,配置轮询时间间隔为30S之内。在运行期,实时的调整配置信息的变化,通过单独的线程监听外部队列任何配置文件的更新信息,其中外部队列例如消息队列(RabbitMQ),会在消息队列中发送该更新信息,将该更新信息转化为特殊结构存储到对应的阻塞队列(BlockingQueue)中。将存储在阻塞队列中的更新信息推送至客户端,如果阻塞队列中没有更新信息服务端并不立即发送,而是利用阻塞队列挂住线程,有更新信息后立即发送,此为和短本文档来自技高网...
配置信息的推送方法及系统、配置信息的接收方法及系统

【技术保护点】
一种配置信息的推送方法,用于服务端,其特征在于,所述服务端包括多个阻塞队列,每个所述阻塞队列对应不同的客户端连接,所述配置信息的推送方法包括:接收来自所述客户端的HTTP请求;检测配置信息的更新信息,同时将所述更新信息存储至阻塞队列;将所述阻塞队列中的所述更新信息推送至所述客户端;当所述阻塞队列中不存在所述更新信息时,令所述客户端推送所述更新信息的线程等待通知;判断是否出现请求超时异常或网络异常;当未出现所述请求超时异常或所述网络异常,以及所述阻塞队列中已存储有所述更新信息时,将所述更新信息推送至所述客户端。

【技术特征摘要】
1.一种配置信息的推送方法,用于服务端,其特征在于,所述服务端包括多个阻塞队列,每个所述阻塞队列对应不同的客户端连接,所述配置信息的推送方法包括:接收来自所述客户端的HTTP请求;检测配置信息的更新信息,同时将所述更新信息存储至阻塞队列;将所述阻塞队列中的所述更新信息推送至所述客户端;当所述阻塞队列中不存在所述更新信息时,令所述客户端推送所述更新信息的线程等待通知;判断是否出现请求超时异常或网络异常;当未出现所述请求超时异常或所述网络异常,以及所述阻塞队列中已存储有所述更新信息时,将所述更新信息推送至所述客户端。2.根据权利要求1所述的配置信息的推送方法,其特征在于,还包括:当出现所述请求超时异常或所述网络异常时,记录所述请求超时异常或所述网络异常,并构造异常信息发送至所述客户端;接收下一HTTP请求;根据所述下一HTTP请求监控已建立或新建的阻塞队列。3.根据权利要求2所述的配置信息的推送方法,其特征在于,所述检测配置信息的更新信息,同时将所述更新信息存储至所述阻塞队列的步骤,具体包括:检测所述配置信息的所述更新信息;判断是否存在所述阻塞队列;当存在所述阻塞队列时,将所述更新信息存储至所述阻塞队列;当不存在所述阻塞队列时,建立所述阻塞队列,并将所述更新信息存储至所述阻塞队列。4.根据权利要求1至3中任一项所述的配置信息的推送方法,其特征在于,还包括:监听将所述阻塞队列中的所述更新信息推送至所述客户端的过程,获取推送信息;将所述推送信息存储至Redis数据库,并通过预设方式展示所述推送信息。5.根据权利要求4所述的配置信息的推送方法,其特征在于,还包括:将客户端的连接状态与会话信息存储至所述Redis数据库;利用Shiro安全框架对所述会话信息进行管理,以清理客户端的重复连接。6.一种配置信息的推送系统,用于服务端,其特征在于,所述服务端包括多个阻塞队列,每个所述阻塞队列对应不同的客户端连接,所述配置信息的推送系统包括:接收单元,用于接收来自所述客户端的HTTP请求;检测单元,用于检测配置信息的更新信息,同时将所述更新信息存储至阻塞队列;推送单元,用于将所述阻塞队列中的所述更新信息推送至所述客户端;挂起单元,用于当所述阻塞队列中不存在所述更新信息时,令所述客户端推送所述更新信息的线程等待新通知;判断单元,用于判断是否出现请求超时异常或网络异常;所述推送单元,还用于当未出现所述请求超时异常或所述网络异常,以及所述阻塞队列中已存储有所述更新信息时,将所述更新信息推送至所述客户端。7.根据权利要求6所述的配置信息的推送系统,其特征在于,还包括:记录单元,用于当出现所述请求超时异常或所述网络异常时,记录所述请求超时异常或所述网络异常,并构造异常信息发送至所述客户端;所述接收单元,还用于接收下一HTTP请求;监听单元,用于根据所述下一HTTP请求监控已建立或新建的阻塞队列。8.根据权利要求7所述的配置信息的推送系统,其特征在于,所述检测单元,用于检测所述配置信息的所述更新信息;所述判断单元,还用于判断是否存在所述阻塞队列;建立单元,用于当存在所述阻塞队列时,将所述更新信息存储至所述阻塞队列;以及当不存在所述阻塞队列时,建立所...

【专利技术属性】
技术研发人员:刘建民
申请(专利权)人:用友网络科技股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1