一种基于动态语言的业务逻辑执行系统及方法技术方案

技术编号:21088891 阅读:58 留言:0更新日期:2019-05-11 09:43
一种基于动态语言的业务逻辑执行系统及方法,包括多个业务逻辑执行装置,每个业务逻辑执行装置包括调度单元和多个业务虚拟机:调度单元,接收命令请求,并根据业务和虚拟机映射表,将命令请求加入到对应的业务虚拟机的命令请求缓冲区内,每个业务虚拟机包括:业务虚拟机线程,定时查看命令请求缓冲区内是否有新的命令请求,当有新的命令请求、且空闲协程队列中有空闲协程时,从空闲协程队列中提取一个协程对象,然后将新的命令请求数据注入到被提取的协程中;命令请求缓冲区,保存命令请求;空闲协程队列,保存业务虚拟机的空闲协程。本发明专利技术属于信息技术领域,能为大规模应用系统提供一个高可靠、高稳定的业务逻辑执行环境。

A Business Logic Execution System and Method Based on Dynamic Language

【技术实现步骤摘要】
一种基于动态语言的业务逻辑执行系统及方法
本专利技术涉及一种基于动态语言的业务逻辑执行系统及方法,属于信息

技术介绍
随着互联网技术的快速发展,基于动态语言(如Lua语言)的业务逻辑开发已得到广泛的应用,并成为许多大规模业务系统的主流开发模式。为保证业务系统的高可用性、高性能和方便维护,通常需要一个非常稳定的业务逻辑执行环境作为支撑。如何给业务逻辑层提供一个高可靠稳定的执行环境?目前也有一些简单的实现方法:首先,将动态语言嵌入到一个特定的虚拟机中动态执行,可以在业务逻辑出错时,重启虚拟机,然后重新加载业务;其次,在业务中尽量编写简单的逻辑,防止出现与第三方系统之间非常耗时的调用逻辑导致业务请求大量堆积而严重影响系统性能的情况。同时,通过硬件及网络优化等手段,确保与业务逻辑交互的其他系统(数据库等)能够快速的响应业务请求;最后,通过手工给系统发信号令其重新加载配置的手段,实现被动的业务逻辑升级。以上这些简单的实现方式对于一般小规模的系统来说是可行的,但是对于大规模(例如上百的开发人员,承载几十甚至几百个复杂业务)的业务逻辑执行环境实现来说还是非常捉襟见肘的。因此,如何为大规模本文档来自技高网...

【技术保护点】
1.一种基于动态语言的业务逻辑执行系统,其特征在于,包括有多个业务逻辑执行装置,每个业务逻辑执行装置包括有调度单元和多个加载不同业务的业务虚拟机:调度单元,用于接收外部装置发送来的命令请求,并从命令请求中提取业务名,然后根据业务和虚拟机映射表,将所述命令请求加入到对应的业务虚拟机的命令请求缓冲区内,每个业务虚拟机内预置若干数量的协程,业务虚拟机进一步包括有:业务虚拟机线程,用于定时查看自身的命令请求缓冲区内是否有新的命令请求,当命令请求缓冲区内有新的命令请求、且自身的空闲协程队列中有空闲的协程时,从空闲协程队列中提取一个协程对象,然后将新的命令请求数据注入到被提取的协程中,由被提取的协程执行对...

【技术特征摘要】
1.一种基于动态语言的业务逻辑执行系统,其特征在于,包括有多个业务逻辑执行装置,每个业务逻辑执行装置包括有调度单元和多个加载不同业务的业务虚拟机:调度单元,用于接收外部装置发送来的命令请求,并从命令请求中提取业务名,然后根据业务和虚拟机映射表,将所述命令请求加入到对应的业务虚拟机的命令请求缓冲区内,每个业务虚拟机内预置若干数量的协程,业务虚拟机进一步包括有:业务虚拟机线程,用于定时查看自身的命令请求缓冲区内是否有新的命令请求,当命令请求缓冲区内有新的命令请求、且自身的空闲协程队列中有空闲的协程时,从空闲协程队列中提取一个协程对象,然后将新的命令请求数据注入到被提取的协程中,由被提取的协程执行对应的业务逻辑;命令请求缓冲区,用于保存由调度单元发送过来的命令请求;空闲协程队列,用于保存业务虚拟机的当前为空闲状态的协程。2.根据权利要求1所述的系统,其特征在于,业务虚拟机还包括有:协程,用于执行业务逻辑,在执行业务逻辑过程中向外部装置发送调用消息后,修改自身状态为挂起状态,并加入到挂起协程队列中,再由业务虚拟机线程继续执行其他已就绪的协程;响应事件缓冲区,用于保存协程在执行业务逻辑处理过程中向外部装置发送调用消息后,外部装置所返回的响应事件消息;挂起协程队列,用于保存业务虚拟机的当前为挂起状态的协程。3.根据权利要求2所述的系统,其特征在于,协程在执行业务逻辑过程中向外部装置发送调用消息时,在调用消息中添加协程所属的业务虚拟机编号和协程自身编号,当调用消息中不能添加信息时,则将业务虚拟机编号和协程自身编号写入消息映射表,当业务逻辑执行装置内的调度单元接收到外部装置返回的响应事件消息时,从响应事件消息中提取业务虚拟机编号、或者查询消息映射表获得业务虚拟机编号,然后将响应事件消息加入到对应业务虚拟机的响应事件缓冲区中,业务虚拟机线程查看自身的响应事件缓冲区内是否有新的响应事件消息,如果有,则从响应事件消息中提取协程编号、或者查询消息映射表获得协程编号,然后将响应事件数据注入到挂起协程队列中对应的协程中,并恢复该协程的业务逻辑代码执行,协程继续执行业务逻辑。4.根据权利要求2所述的系统,其特征在于,业务虚拟机还包括有:协程监控部件,用于检测每个挂起协程是否存在等待外部装置响应超时,如果是,则根据业务逻辑的设定,向业务逻辑注入调用外部装置超时信息,然后恢复业务执行、或终止超时的挂起协程,并向业务客户端回复错误应答;检测每个非空闲协程是否存在整体执行超时,如果是,则终止超时协程的执行,并向业务客户端回复错误应答;当协程执行完业务逻辑后,检测协程的返回状态是否存在异常,如果是,则创建一个新的协程替换异常协程,然后回收异常协程资源。5.根据权利要求2所述的系统,其特征在于,业务逻辑执行装置还包括有:业务虚拟机管理器,用于定时扫描业务逻辑执行装置内的每个业务虚拟机,判断是否每个业务虚拟机的健康指标超过健康阈值或业务虚拟机线程出现运转异常,如果是,则健康指标超过健康阈值或业务虚拟机线程出现运转异常的业务虚拟机是异常虚拟机,创建一个新的加载相同业务逻辑代码的业务虚拟机实例,并销毁异常虚拟机;如果否,则继续扫描下一个业务虚拟机,其中,业务虚拟机的健康指标包括但不限于:消息处理总量、消息处理成功量、消息处理失败量、消息处理超时量,判断业务虚拟机线程是否出现运转异常进一步包括但不限于:判断业务虚拟机指标是否正常、或判断业务虚拟机线程运转心跳是否正常,业务虚拟机线程运转心跳是否正常通过心跳埋点来检查,即业务虚拟机线程在空闲、处理新命令请求、处理新响应事件时,更新心跳埋点以向业务虚拟机管理器上报心跳时间,当业务虚拟机管理器检测到业务虚拟机线程运转心跳的更新时间超过更新时间阈值,则表示业务虚拟机线程出现运转异常。6.根据权利要求2所述的系统,其特征在于,业务逻辑执行装置还包括有:业务虚拟机管理器,定时扫描业务逻辑代码文件,并判断每个业务逻辑代码文件是否发生了变化,如果发生了变化,则根据变化后的业务文件,创建一个新的业务虚拟机,读取业务与虚拟机映射表中该业务对应的原业务虚拟机,将业务与虚拟机映射表中的原业务虚拟机修改为新的业务虚拟机,以使得新的命令请求被分发给新的业务虚拟机,并将原业务虚拟机放入到待回收虚拟机队列,当原业务虚拟机处理完已分配的存量命令请求后,从待回收虚拟机队列中回收原业务虚拟机。7.根据权利要求2所述的系统,其特征在于,业务逻辑执行装置还包括有:业务虚拟机管理器,定时扫描API支撑库文件,并判断每个API支撑库是否发生了变化,如果发生了变化,则获取所有依赖该发生了变化的API支撑库的业务虚拟机,并由获取的所有业务虚拟机构成原业务虚拟机列表,然后从原业务虚拟机列表中逐一提取每个原业务虚拟机,对所提取的原业务虚拟机的处理如下:根据变化后的API支撑库,创建一个新的业务虚拟机,将业务与虚拟机映射表中的原业务虚拟机修改为新的业务虚拟机,以使得新的命令请求被分发给新的业务虚拟机,并将原业务虚拟机放入到待回收虚拟机队列,当原业务虚拟机处...

【专利技术属性】
技术研发人员:张建虎汪青峰姜金旺夏森丽张桂权植东梧王昊廖瀚文唐强曾懿肖辉春李佳丽陈亮程相凯
申请(专利权)人:杭州东信北邮信息技术有限公司
类型:发明
国别省市:浙江,33

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

1