[发明专利]一种基于协程的事件调度方法和系统在审
申请号: | 202310030895.2 | 申请日: | 2023-01-10 |
公开(公告)号: | CN116089041A | 公开(公告)日: | 2023-05-09 |
发明(设计)人: | 吴博诚;黄创光;钟衡;饶端;蓝启桐 | 申请(专利权)人: | 天翼云科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/445;G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100010 北京市东城区青*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 事件 调度 方法 系统 | ||
本申请公开了一种基于协程的事件调度方法和系统,涉及计算机应用技术领域。方法包括:在监测到用户触发的预设事件的情况下,获取预设事件的事件信息,事件信息包括预设事件对应的版本信息;在用户态创建协程池,协程池包括预设数量的协程;将预设事件分发至协程池中的目标协程,以使目标协程基于预设事件的版本信息,确定预设事件对应的执行器,不同版本信息的预设事件对应不同版本的执行器;按照预设事件对应的事件消费策略,控制执行器对预设事件进行消费。本申请实施例通过协程实现轻量又灵活的由用户态进行调度的多任务模型,使得上下文切换更轻量,减少频繁进行线程创建和销毁所带来的开销,能够有效满足高并发场景下的事件调度需求。
技术领域
本申请涉及计算机技术领域,具体涉及一种基于协程的事件调度方法和系统。
背景技术
目前,传统的事件调度方法采用的是基于用户态和内核态切换的线程模型,即需要内核创建线程,然后再从内核态切换到用户态。在用户态与内核态来回切换的过程中,操作系统需要保存大量的上下文信息,进行线程的创建和销毁。
传统的事件调度方法在处理高并发场景下的事件时,而在高并发应用中频繁创建线程会造成不必要的开销,线程数过多,意味着操作系统会不断的切换线程,频繁的上下文切换将造成事件调度效率低,难以满足高并发场景下的事件调度需求。
发明内容
本申请针对现有的问题,提出了一种基于协程的事件调度方法和系统,具体技术方案如下:
在本申请的第一方面,提供一种基于协程的事件调度方法,所述方法包括:
在监测到用户触发的预设事件的情况下,获取所述预设事件的事件信息;所述事件信息包括所述预设事件对应的版本信息;
在用户态创建协程池;所述协程池包括预设数量的协程;
将所述预设事件分发至所述协程池中的目标协程,以使所述目标协程基于所述预设事件的版本信息,确定所述预设事件对应的执行器;不同版本信息的预设事件对应不同版本的执行器;
按照所述预设事件对应的事件消费策略,控制所述执行器对所述预设事件进行消费。
在本申请一实施例中,在监测到预设事件的情况下,获取所述预设事件的配置信息的步骤之前,所述方法还包括:
获取针对预设事件的配置信息;不同的预设事件对应不同的用户操作行为;所述配置信息包括对应的命名空间;
基于所述配置信息,在对应的命名空间中对所述预设事件进行配置;
在所述预设事件配置完成的情况下,将所述预设事件进行发布,以得到生效的所述预设事件。
在本申请一实施例中,将所述预设事件分发至所述协程池中的目标协程的步骤之前,所述方法还包括:
对所述预设事件进行校验,以进行事件排重和流量控制;
将所述预设事件写入版本创建器队列,以使版本创建器判断所述预设事件是否具有对应的执行器;
在所述预设事件不具有对应的执行器的情况下,控制所述版本创建器创建所述预设事件对应的执行器。
在本申请一实施例中,将所述预设事件分发至所述协程池中的目标协程的步骤,包括:
通过所述预设事件对应的任务接口将所述预设事件写入协程池任务队列;不同类型的预设事件对应不同的任务接口;
基于负载均衡算法在协程池中确定所述预设事件对应的目标协程;
启动所述目标协程,以使所述目标协程获取所述预设事件。
在本申请一实施例中,启动所述目标协程,以使所述目标协程获取所述预设事件的步骤之后,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天翼云科技有限公司,未经天翼云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310030895.2/2.html,转载请声明来源钻瓜专利网。