八月瓜首页 > 专利查询 > H04电通信技术 >正文

一种分布式实时业务系统中的异步网关的实现方法

基本信息

  • 申请号 CN202110564869.9 
  • 公开号 CN113037875B 
  • 申请日 2021/05/24 
  • 公开日 2021/07/27 
  • 申请人 武汉众邦银行股份有限公司  
  • 优先权日期  
  • 发明人 钟铮 李耀 彭磊  
  • 主分类号 H04L29/08 
  • 申请人地址 432200 湖北省武汉市黄陂区盘龙城经济开发区汉口北大道88号汉口北国际商品交易中心D2区1-2层、22-23层 
  • 分类号 H04L29/08;H04L29/06 
  • 专利代理机构 成都正煜知识产权代理事务所(普通合伙) 51312 
  • 当前专利状态 发明专利授权公告 
  • 代理人 李龙 
  • 有效性 有效专利 
  • 法律状态
  •  

摘要

本发明涉及信息技术领域,提供了一种分布式实时业务系统中的异步网关方案,主旨在于解决当网关线程池耗尽,业务拥塞导致各子系统处理业务逻辑时,网关中的业务线程同步阻塞,消耗大量系统资源,造成业务请求超时等问题。
主要方案包括采用一个独立的线程用于持续监听IO操作任务执行情况,当IO操作任务完成时,更新IO操作任务状态为已完成;对于请求XML报文的IO操作任务、调用业务子系统发送请求JOSN报文的IO操作任务、发起接收业务子系统响应的响应JSON报文的IO操作任务起将响应JSON报文进行XML转换后并向第三方业务系统返回响应的XML报文的IO操作任务状态为未完成时,切换至其他任务避免服务阻塞。
展开

权利要求书


1.一种分布式实时业务系统中的异步网关的实现方法,其特征在于,包括以下步骤:步骤1、新建一个独立的线程用于持续监听IO操作任务执行情况,当IO操作任务完成时,更新IO操作任务状态为已完成;步骤2、在当前线程发起一个新的任务,发起用于接收第三方业务系统的业务处理任务的请求XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,进行步骤A;步骤3、在当前线程发起一个新的任务,发起请求XML报文进行JSON转换得到请求JSON报文,调用业务子系统发送请求JOSN报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤4、在当前线程发起一个新的任务,发起接收业务子系统响应的响应JSON报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤5、在当前线程发起一个新的任务,发起将响应JSON报文进行XML转换后并向第三方业务系统返回响应的XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤A、将步骤A的上一步骤计为变量步骤A,关联当前线程与IO操作任务并写入列表,遍历列表判断IO操作任务状态,如为“已完成”则开始加载任务的上下文信息并进行后续的业务逻辑处理,即进行变量步骤A的下一步,如为“未完成”则保存当前任务在当前运行线程的上下文信息,并进行变量步骤A。
2.根据权利要求1所述的一种分布式实时业务系统中的异步网关的实现方法,其特征在于,限制步骤2中新的任务与IO操作任务的总数。
3.根据权利要求1所述的一种分布式实时业务系统中的异步网关的实现方法,其特征在于,所述IO操作任务设置有GUID。
展开

说明书

技术领域
本技术直接运用于互联网分布式微服务架构领域,尤其针对在微服务比较完善下,快速响应业务实现需要,通过该技术可以实现网关层对微服务各个模块间的解耦,提高网关的吞吐量,保障网关系统的可靠性和稳定性。
背景技术
目前行内综合理财平台,所有请求都是通过ESB调用理财网关,由网关同步调用各业务子系统实现。
该系统依然采用的是传统技术体系的多线程技术方案,所有对外暴露的服务都是通过集群化的网关统一接入,实现行内存款业务的统一服务。
网关在单机上各业务子模块的请求处理使用同一个线程池,完成报文转换、路由、负载均衡等。
由于网关中对各子系统为同步调用,导致各子系统处理业务逻辑时,网关中的业务线程同步阻塞,消耗大量系统资源。
随着业务规模的增长,以及监管政策的变化,三方渠道客户快速回流,行内互联网渠道流量的急速激增。
直接导致系统请求量增加,同时后端业务系统处理耗时变长,网关线程池耗尽,业务拥塞。
虽然当前方案为现行运用较为广泛的方案之一,通过增加网关集群数量的横向扩展也可以增加业务吞吐量。
但是相较于本方案将新型编程语言中的异步编程并发模型应用到行内分布式业务网关,传统方案在IO密集型业务系统中,会存在大量空闲线程,对服务器CPU和内存等系统资源造成大量浪费。
发明内容
本发明的目的在于解决当网关线程池耗尽,业务拥塞导致各子系统处理业务逻辑时,网关中的业务线程同步阻塞,消耗大量系统资源,造成业务请求超时等问题。
为解决上述技术问题,本发明采用以下技术方案:一种分布式实时业务系统中的异步网关的实现方法,包括以下步骤:步骤1、新建一个独立的线程用于持续监听IO操作任务执行情况,当IO操作任务完成时,更新IO操作任务状态为已完成;步骤2、在当前线程发起一个新的任务,发起用于接收第三方业务系统的业务处理任务的请求XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,进行步骤A;步骤3、在当前线程发起一个新的任务,发起请求XML报文进行JSON转换得到请求JSON报文,调用业务子系统发送请求JOSN报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤4、在当前线程发起一个新的任务,发起接收业务子系统响应的响应JSON报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤5、在当前线程发起一个新的任务,发起将响应JSON报文进行XML转换后并向第三方业务系统返回响应的XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤A、将步骤A的上一步骤计为变量步骤A,关联当前线程与IO操作任务并写入列表,遍历列表判断IO操作任务状态,如为“已完成”则开始加载任务的上下文信息并进行后续的业务逻辑处理,即进行变量步骤A的下一步,如为“未完成”则保存当前任务在当前运行线程的上下文信息,并进行变量步骤A。

上述技术方案中,限制步骤2中新的任务与IO操作任务的总数。
以控制IO操作人任务的总数以及后续步骤能够得到及时的执行。
上述技术方案中,所述IO操作任务设置有GUID作为唯一引用标识,方便程序调用。
因为本发明采用上述技术方案,因此具备以下有益效果:1、本发明充分利用cpu时间片,将造成阻塞的IO操作任务进行时间片控制,避免单个线程的业务阻塞问题。
阻塞调用是指调用结果返回之前,当前线程会被挂起。
调用线程只有在得到结果之后才会返回。
2、将业务子系统的调用异步化,降低网关对系统资源的占用。
3、采用通用化的数据流报文转换,不受业务字段扩展的影响,将网关与业务子系统充分解耦。
4、显著降低IO密集型业务场景中网关系统的 CPU 和内存的资源占用。
5、显著提升IO密集型业务场景中网关性能,可以使用少量的线程处理大量的业务请求。
最大化网关的并发性、吞吐量、稳定性、独立性。
具体实施方式
现有技术中,同步执行和异步执行是计算机信息处理技术领域常规的技术手段,为保证计算执行效率,当单线程的运行任务发生了阻塞,现有技术常规的做法是另起一个线程进行后续其他任务的处理,以便达到更高的效率,避免阻塞等待引起执行效率的降低。
如单核CPU仅仅只有一个线程,因CPU的一个线程一次只能处理1个任务,如当前任务发生了阻塞那么对于后续的任务请求,则会出现卡顿的现象。
网关在单机上各业务子模块的请求处理使用同一个线程池,完成报文转换、路由、负载均衡等。
由于网关中对各子系统为同步调用,导致各子系统处理业务逻辑时,网关中的所占用的服务器的CPU核心线程消耗殆尽,当CPU提供的现成足够的时候,当一个线程发生了阻塞,则在线程池中由其他线程来执行后续期任务请求来保证任务响应效率,但是当大量的业务任务发生阻塞时,CPU提供的线程耗尽,则业务线程同步阻塞,消耗大量系统资源。
为此本发明提供了一种分布式实时业务系统中的异步网关装置及其实现方法。
一种分布式实时业务系统中的异步网关装置,包括以下模块:监听线程模块:新建一个独立的线程用于持续监听IO操作任务执行情况,当IO操作任务完成时,更新IO操作任务状态为已完成;业务请求XML报文接收模块:在当前线程发起一个新的任务,发起用于接收第三方业务系统的业务处理任务的请求XML报文的IO操作任务,将任务置为未完成,由监听线程模块的独立线程监听更新IO操作任务状态,调用公共调用模块,等待公共调用模块返回,如标识为1则结束本模块执行,如标识为0,继续执行本模块。
请求JSON报文转换请求模块:在当前线程发起一个新的任务,发起请求XML报文进行JSON转换得到请求JSON报文,调用业务子系统发送请求JOSN报文的IO操作任务,将任务置为未完成,由监听线程模块的独立线程监听更新IO操作任务状态,调用公共调用模块,等待公共调用模块返回,如标识为1则结束本模块执行,如标识为0,继续执行本模块。
请求JSON报文响应模块:在当前线程发起一个新的任务,发起接收业务子系统响应的响应JSON报文的IO操作任务,将任务置为未完成,由监听线程模块的独立线程监听更新IO操作任务状态,调用公共调用模块,等待公共调用模块返回,如标识为1则结束本模块执行,如标识为0,继续执行本模块。
业务响应JSON报文模块:在当前线程发起一个新的任务,发起将响应JSON报文进行XML转换后并向第三方业务系统返回响应的XML报文的IO操作任务,将任务置为未完成,由监听线程模块的独立线程监听更新IO操作任务状态,调用公共调用模块,等待公共调用模块返回,如标识为1则结束本模块执行,如标识为0,继续执行本模块。
公共调用模块:保存调用模块信息,关联当前线程与IO操作任务并写入列表,遍历列表判断IO操作任务状态,如为“已完成”则开始加载任务的上下文信息并进行后续的业务逻辑处理,向原模块返回标识1,如为“未完成”则保存当前任务在当前运行线程的上下文信息,向原模块返回标识0。
本发明还提供了一种分布式实时业务系统中的异步网关的实现方法,包括以下步骤:步骤1、新建一个独立的线程用于持续监听IO操作任务执行情况,当IO操作任务完成时,更新IO操作任务状态为已完成;步骤2、在当前线程发起一个新的任务,发起用于接收第三方业务系统的业务处理任务的请求XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,进行步骤A;步骤3、在当前线程发起一个新的任务,发起请求XML报文进行JSON转换得到请求JSON报文,调用业务子系统发送请求JOSN报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤4、在当前线程发起一个新的任务,发起接收业务子系统响应的响应JSON报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤5、在当前线程发起一个新的任务,发起将响应JSON报文进行XML转换后并向第三方业务系统返回响应的XML报文的IO操作任务,将任务置为未完成,由步骤1的独立线程监听更新IO操作任务状态,并进行步骤A;步骤A、将步骤A的上一步骤计为变量步骤A,关联当前线程与IO操作任务并写入列表,遍历列表判断IO操作任务状态,如为“已完成”则开始加载任务的上下文信息并进行后续的业务逻辑处理,即进行变量步骤A的下一步,如为“未完成”则保存当前任务在当前运行线程的上下文信息,并进行变量步骤A。

展开

查看更多专利详情信息请先登录或注册会员

相关专利类别推荐

获取手机验证码,即可注册成为会员

专利详情咨询

咨询内容

姓名

手机

验证码

用户登录

手机号

手机验证码

提示

不能再减了!!!

提交成功

八月瓜客服中心已经收到您的信息,正在为您派遣知识产权顾问。知识产权顾问会携带贴心的服务以闪电搬的速度与您联系。

扫一扫关注八月瓜微信 创业一手掌握