首页> 中国专利> 基于Lua协程的程序并发IO优化方法及系统

基于Lua协程的程序并发IO优化方法及系统

摘要

本发明提供了一种基于Lua协程的程序并发IO优化方法及系统。该方法包括:当业务层需要执行IO操作时,运行在业务层的协程通过中间接口向IO事件循环提交IO监听请求;IO事件循环等待与IO监听请求对应的IO句柄就绪后,调用该IO句柄执行相应的IO操作。本发明提供的基于Lua协程的程序并发IO优化方法及系统能够实现一种同时满足高并发、可维护性、可扩展性好的并发IO优化方案。

著录项

  • 公开/公告号CN112732404A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 湖南同有飞骥科技有限公司;

    申请/专利号CN202110026009.X

  • 申请日2021-01-08

  • 分类号G06F9/455(20060101);G06F9/48(20060101);G06F9/50(20060101);G06F8/41(20180101);

  • 代理机构11303 北京方韬法业专利代理事务所(普通合伙);

  • 代理人党小林

  • 地址 410000 湖南省长沙市长沙高新开发区尖山路39号长沙中电软件园有限公司总部大楼G0552室

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明涉及并行处理技术领域,特别是涉及一种基于Lua协程的程序并发IO优化方法及系统。

背景技术

互联网与改良数据发展的今天,并行处理大量数据已成为服务器的日常基本场景,基于此,服务器对于并发IO的处理能力已成为评判业务性能的重要指标。

对于并发IO的需求,传统的两类解决方案分别为基于异步IO的回调方案和基于多进程(线程)的并行方案。目前业界也诞生了一些新的解决方案,有各自的侧重优势,如gevent、go-routine等。

对于基于异步IO的回调方案(如select、epoll),回调的形式切断了连续功能代码上下文,导致当代码规模变大后软件开发和维护变得困难,开发效率较低。

对于基于多进程(线程)的并行方案,存在系统资源占用大(内存占用、CPU上下文切换)、并发数上限较低、并行资源需要进行同步控制加锁的问题。

对于genvent,虽然借助greenlet协程实现了并发IO,没有系统级线程的切换开销,并且开发效率极高,但是greenlet协程本质是对python原生堆栈的一种补充实现,内存占用仍然较大。

对于go-routine,性能较高,但go的一些设计思想和特点(如编译型、静态链接、自带GC),进而出现的体积大、占用资源较多,决定了其设计适配的仍然是大型高端服务器通用应用层场景。

发明内容

本发明要解决的技术问题是提供一种基于Lua协程的程序并发IO优化方法及系统,能够实现一种同时满足高并发、可维护性、可扩展性好的并发IO优化方案。

为解决上述技术问题,本发明提供了一种基于Lua协程的程序并发IO优化方法,所述方法包括:当业务层需要执行IO操作时,运行在业务层的协程通过中间接口向IO事件循环提交IO监听请求;IO事件循环等待与IO监听请求对应的IO句柄就绪后,调用该IO句柄执行相应的IO操作,且所述IO操作由业务层的Lua代码执行。

在一些实施方式中,运行在业务层的协程由Lua语言编写。

在一些实施方式中,还包括:IO事件循环发现监听的IO句柄就绪,则重入IO句柄对应的协程,继续执行业务层逻辑代码。

在一些实施方式中,IO事件循环及IO句柄运行在核心调度层。

在一些实施方式中,IO事件循环及IO句柄由C语言编写。

在一些实施方式中,还包括:业务层通过中间接口将IO操作注册到核心调度层。

此外,本发明还提供了一种基于Lua协程的程序并发IO优化系统,所述系统包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据前文所述的基于Lua协程的程序并发IO优化方法。

采用这样的设计后,本发明至少具有以下优点:

本发明基于Lua协程(一种用户态轻量级线程),摒弃了传统系统级线程,所以实现并发IO时无CPU上下文切换开销,具有资源占用小的特点。

本发明基于脚本,同时营造了连续的IO代码上下文,所以方便维护扩展业务代码。另外,脚本方案使得热更新也成为可能。

本发明因为使用Lua这种胶水脚本,所以可以轻易结合核心C程序,保留高并发、高性能的特点,或者对现有系统级程序进行二次开发优化。

附图说明

上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。

图1是本发明实施例提供的基于Lua协程的程序并发IO优化方法的实现架构图;

图2是本发明实施例提供的基于Lua协程的程序并发IO优化方法的流程示意图;

图3是本发明实施例提供的基于Lua协程的程序并发IO优化系统的架构图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

本发明实现了一种同时满足高并发、可维护性可扩展性好的并发IO优化方案,适用于低端服务器环境应用、系统级软件开发、存储开发应用等场景。

参见图1,本发明主要采用如下架构:

1、业务代码以Lua协程的形式运行在业务层;

2、以C(或其他系统级程序语言)实现的IO事件循环(如epoll)运行在核心调度层;

3、业务层通过中间接口将IO操作注册到核心调度层,打通IO事件与事件处理。

参见图2,本发明的典型时序图举例如下:

1、业务代码发生IO操作时,向事件循环提交一个IO监听请求,并让出CPU执行权;

2、事件循环发现监听的IO句柄就绪,则重入IO句柄对应的原协程继续执行业务代码;

3、由于此时IO句柄已就绪,所以业务代码能正确执行;

4、对于所有的并发协程,发起IO操作时并未阻塞出当前进程,而是主动让出执行权,因此整个进程具有高并发处理IO事件的能力。

协程的让出与重入的伪代码实现,如下:

业务部分的伪代码如下:

图3示出了基于Lua协程的程序并发IO优化系统的结构。参见图3,例如,所述基于Lua协程的程序并发IO优化系统300可以用于充当并行处理系统中的优化IO系统。如本文所述,基于Lua协程的程序并发IO优化系统300可以用于在并行处理系统中实现对并发IO的优化调度功能。基于Lua协程的程序并发IO优化系统300可以在单个节点中实现,或者基于Lua协程的程序并发IO优化系统300的功能可以在网络中的多个节点中实现。本领域的技术人员应意识到,术语基于Lua协程的程序并发IO优化系统包括广泛意义上的设备,图3中示出的基于Lua协程的程序并发IO优化系统300仅是其中一个示例。包括基于Lua协程的程序并发IO优化系统300是为了表述清楚,并不旨在将本发明的应用限制为特定的基于Lua协程的程序并发IO优化系统实施例或某一类基于Lua协程的程序并发IO优化系统实施例。本发明所述的至少部分特征/方法可以在网络装置或组件,例如,基于Lua协程的程序并发IO优化系统300中实现。例如,本发明中的特征/方法可以采用硬件、固件和/或在硬件上安装运行的软件实现。基于Lua协程的程序并发IO优化系统300可以是任何通过网络处理,存储和/或转发数据帧的设备,例如,服务器,客户端,数据源等。如图3所示,基于Lua协程的程序并发IO优化系统300可以包括收发器(Tx/Rx)310,其可以是发射器,接收器,或其组合。Tx/Rx310可以耦合到多个端口350(例如上行接口和/或下行接口),用于从其他节点发送和/或接收帧。处理器330可耦合至Tx/Rx 310,以处理帧和/或确定向哪些节点发送帧。处理器330可以包括一个或多个多核处理器和/或存储器设备332,其可以用作数据存储器,缓冲区等。处理器330可以被实现为通用处理器,或者可以是一个或多个专用集成电路(applicationspecific integrated circuit,简称ASIC)和/或数字信号处理器(digital signalprocessor,简称DSP)的一部分。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,本领域技术人员利用上述揭示的技术内容做出些许简单修改、等同变化或修饰,均落在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号