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

一种基于Spring容器实现长连接管道的系统及方法

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


一种基于Spring容器实现长连接管道的系统及方法

技术领域

本发明属于通信技术领域,尤其是涉及一种基于Spring容器实现长连接管道的系统及方法。

背景技术

目前,大部分网站都是基于分布式集群来进行服务器部署的,用户通过注册账户登录前端页面,将自己的数据录入后传输至服务器,服务器会将数据持久到数据库。但是,用户数据可能涉及隐私信息,如果存储到其他服务器,容易造成泄露,增大用户安全风险。

并且在技术层面讲,目前使用基于http协议的通信,即短链接,当某个节点执行完成需要推送时,都需要进行建立连接和释放连接的操作,这个过程会耗费网络资源及时间。

发明内容

有鉴于此,本发明旨在克服现有技术中上述问题的不足之处,提出一种基于Spring容器实现长连接管道的系统及方法。

为达到上述目的,本发明的技术方案是这样实现的:

一种基于Spring容器实现长连接管道的系统,包括:

流程新增或更新模块,用于在流程新增或更新时保存流程信息,并使用短连接将流程信息推送给短连接数据接收模块;

短连接数据接收模块,用于判断流程状态,并根据流程状态决定是否驱动节点执行模块;

节点执行模块,用于进行长连接数据推送;

长连接数据接收模块,用于接收节点执行模块的推送数据,并根据流程信息选择调用节点执行模块,或根据流程状态决定是否关闭长连接管理。

本申请还提供了一种基于Spring容器实现长连接管道的方法,包括以下步骤:

S1.通过流程新增或更新模块在流程新增或更新时保存流程信息,并通过短连接推送流程信息给其他接收方;

S2.通过短连接数据接收模块接收短连接推送来的流程信息,并根据流程状态决定是否驱动节点执行模块;

S3.通过节点执行模块进行长连接数据推送;

S4.通过长连接数据接收模块接收节点执行模块的推送的长连接数据,并判断流程是否继续执行,如果流程继续执行,则驱动节点执行模块,在流程状态不变更的情况下,静默执行整个流程;如果流程不继续执行,则根据流程状态决来决定是否需要保存当前数据或是否需要关闭长连接管道。

进一步的,步骤S2中,短连接数据接收模块的操作过程为:

S21.保存流程信息;

S22.判断流程状态是否为开始状态,如果流程状态为开始状态,则驱动节点执行模块,结束当前短连接数据接收模块业务;如果状态为暂停或终止状态,则直接结束当前短连接数据接收模块业务。

进一步的,步骤S3中节点执行模块的操作过程为:

S31.判断当前节点能否执行,如果不满足执行条件,则保存数据,结束当前节点执行模块业务;如果满足执行条件,则执行业务处理,获得计算结果,进入步骤S32;

S32.判断计算结果是否需要推送,如果需要进行数据推送,则拼接ip+port+流程ID形成bean,从spring容器中获取长连接管道,并进入步骤S33;如果不需要进行数据推送,则判断是否存在下一个节点,如果存在,则重新开始执行步骤S31,如果不存在,则结束流程;

S33.利用获得的长连接管道进行数据推送。

进一步的,步骤S32中,拼接ip+port+流程ID,从spring容器中获取长连接管道时,如果长连接管道不存在,则先根据ip和port启动长连接客户端并阻塞,然后获取长连接管道,将长连接管道注册到spring容器中。

进一步的,步骤S32中,不存在下一个节点时,流程执行过程为:

S321.变更流程状态为结束状态;

S322.使用短连接进行数据推送,此时会驱动短连接数据接收模块,控制其他参与方关闭长连接管道,彻底结束此次的流程计算;

S323.关闭长连接通道,并注销bean,结束当前节点执行模块业务。

进一步的,步骤S4中,根据流程状态决来决定是否需要保存当前数据或是否需要关闭长连接管道的具体过程为:

S41.如果流程状态为暂停,则保留当前数据,结束当前长连接数据接收模块业务;

如果流程状态为非暂停,则关闭长连接,并注销bean,结束当前长连接数据接收模块业务。

相对于现有技术,本发明具有以下优势:

本发明所述的一种基于Spring容器实现长连接管道的系统及方法使用长连接管道在流程请求方和接收方等多个服务节点之间进行数据交互并完成流程计算;系统设计包含流程新增或更新、短连接数据接收、节点执行、长连接数据接收等四个模块,通过节点执行和长连接数据接收两个模块完成流程计算,通过流程新增或更新和短连接数据接收两个模块来控制流程是否开始或终止;通过长短连接相互结合,实现了用户实时控制流程进度的目的,合理利用了服务器资源;同时也避免了用户数据的泄露。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的流程新增或更新模块流程图;

图2为本发明实施例所述的短连接数据接收模块流程图;

图3为本发明实施例所述的节点执行模块流程图;

图4为本发明实施例所述的长连接数据接收模块流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本发明。

一种基于Spring容器实现长连接管道的系统,包括:

流程新增或更新模块,用于在流程新增或更新时保存流程信息,并使用短连接将流程信息推送给短连接数据接收模块;

短连接数据接收模块,用于判断流程状态,并根据流程状态决定是否驱动节点执行模块;

节点执行模块,用于进行长连接数据推送;

长连接数据接收模块,用于接收节点执行模块的推送数据,并根据流程信息选择调用节点执行模块,或根据流程状态决定是否关闭长连接管理。

如图所示,本申请还提供了一种基于Spring容器实现长连接管道的方法,包括以下步骤:

S1.通过流程新增或更新模块在流程新增或更新时保存流程信息,并通过短连接推送流程信息给其他接收方,此时会驱动短连接数据接收模块,结束流程新增或更新模块业务;

S2.通过短连接数据接收模块接收短连接推送来的流程信息,并根据流程状态决定是否驱动节点执行模块;

S3.通过节点执行模块进行长连接数据推送;

S4.通过长连接数据接收模块接收节点执行模块的推送的长连接数据,并判断流程是否继续执行,如果流程继续执行,则驱动节点执行模块,结束当前长连接数据接收模块业务,在流程状态不变更的情况下,静默执行整个流程;如果流程不继续执行,则根据流程状态决来决定是否需要保存当前数据或是否需要关闭长连接管道。

步骤S2中,短连接数据接收模块的操作过程为:

S21.保存流程信息;

S22.判断流程状态是否为开始状态,如果流程状态为开始状态,则驱动节点执行模块,结束当前短连接数据接收模块业务;如果状态为暂停或终止状态,则直接结束当前短连接数据接收模块业务。

步骤S3中节点执行模块的操作过程为:

S31.判断当前节点能否执行,如果不满足执行条件,则保存数据,结束当前节点执行模块业务;如果满足执行条件,则执行业务处理,获得计算结果,进入步骤S32;

S32.判断计算结果是否需要推送,如果需要进行数据推送,则拼接ip+port+流程ID形成bean,从spring容器中获取长连接管道,并进入步骤S33;如果不需要进行数据推送,则判断是否存在下一个节点,如果存在,则重新开始执行步骤S31,进行计算下一个流程节点,如果不存在,则结束流程;

S33.利用获得的长连接管道进行数据推送,此时会驱动长连接数据接收模块开始执行业务。

步骤S32中,拼接ip+port+流程ID,从spring容器中获取长连接管道时,如果长连接管道不存在,则先根据ip和port启动长连接客户端并阻塞,然后获取长连接管道,将长连接管道注册到spring容器中,bean的名称是ip+port+流程ID。

步骤S32中,不存在下一个节点时,流程执行过程为:

S321.变更流程状态为结束状态;

S322.使用短连接进行数据推送,此时会驱动短连接数据接收模块,控制其他参与方关闭长连接管道,彻底结束此次的流程计算;

S323.关闭长连接通道,并注销bean,结束当前节点执行模块业务。

步骤S4中,根据流程状态决来决定是否需要保存当前数据或是否需要关闭长连接管道的具体过程为:

S41.如果流程状态为暂停,则保留当前数据,结束当前长连接数据接收模块业务;

如果流程状态为非暂停,即终止或结束,则关闭长连接,并注销bean,结束当前长连接数据接收模块业务。

本实施例中,使用spring容器来维护长连接管道信息。目前大部分是采用Map来维护长连接的,使用spring容器来维护的优势在于可以在长连接管道初始化或销毁时由用户自己进行功能扩充,实现个性化功能定制。例如:spring服务直接关闭或重启,会导致管道销毁,此时就可以通过destroyMethod方法将请求数据保存,方便下次重新执行,降低损失,提升性能。

同时,Map在key存在的情况下会直接覆盖,如果用户操作不当,可能会出现重复新建socket客户端并绑定到socket服务端的情况,导致旧通道不再使用,造成内存泄漏。而基于spring容器来维护,如果注测的beanName已存在,服务器会报错,这样用户就能感知到问题所在,方便及时调整。

通过短连接实时变更流程状态,长连接数据接收模块会根据任务状态来决定是否需要保存当前数据或是否需要关闭长连接管道,实现了在不影响当前节点执行情况的前提下来控制流程的暂停或终止,有效降低损失,并且可以自主判断是否需要关闭长连接管道,降低了服务器压力。通过使用长短连接交替使用,合理利用了服务器资源,提高了性能。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于Java反射和Spring容器实现业务数据搜索的方法及装置
  • 一种基于Java和Spring容器实现RPC的方法
技术分类

06120115962071