一种异步网络输入输出组件的通信方法与流程

专利2025-04-22  21


本发明涉及计算机网络通信领域,具体为一种异步网络输入输出组件的通信方法。


背景技术:

1、近年来,随着移动互联网,云计算以及物联网技术的发展,对于软件系统网络数据的发送和接收的速率和吞吐量的要求越来越高。原有的网络通信软件基于操作系统的协议栈,采用基于select、poll或者epoll系统调用的i/o多路复用技术进行高速网络数据通信和转发。这种技术通过轮询网络套接字的多个网络连接的数据请求,来确定是否完成网络请求的输入输出。这是一种利用非阻塞套接字的特点进行多路复用,以提高网络报文的处理速度和效率的技术。基于轮询的多路复用技术广泛应用于各种需要网络通信的软件产品中,尤其是需要高性能网络收发能力的软件系统,如mqtt server,restapi服务,web服务器,代理服务器以及负载均衡软件等,在目前的互联网环境中起着至关重要的作用。

2、尽管基于轮询的多路复用技术是如今最流行的高速网络软件的基础技术,但是随着最新版本的linux操作系统内核的推出,纯异步的系统输入输出接口逐步成熟,如aio和io_uring这些异步i/o子系统,已经被广泛应用在数据库这样的存储设备输入输出密集的应用程序中。但是由于网络访问的特殊性,基于这些异步i/o子系统的实现和应用方法还非常少。网络输入输出的特殊性主要体现在必须采用带缓存的i/o机制,请求(request)和接收(receive)这样模式以及接收到的数据报文顺序的不确定性。

3、异步网络输入输出系统相关专利:

4、cn201710660691.1专利摘要:本发明一种基于epoll异步服务器的高效响应方法涉及应用服务器技术领域,特别是一种高效的epoll异步服务器响应方法。包括:初始化,和启动监控调度线程。通过级联epoll监听线程,将传统的epoll监听处理线程,从处理中完全释放出来,仅负责监听和分发功能,从而能够及时监听并响应高并发事件。而处理的功能则交由二级epoll器,实质为线程组。同时通过创建多个环形队列,将原来一个队列的压力进行分摊,避免在高并发性情况下,导致一个队列容易队列满的情况。为了进一步优化功能,提供优先级的功能,进而根据优先级划分能够根据请求事件的轻重缓急处理事件,对优先级高的时间优先响应,这样做更为高效、合理。

5、cn202211264580.6专利摘要:本发明提供了一种异步输入输出线程处理器资源分配方法及装置,涉及计算机技术领域,该方法包括判断当前是否存在待处理的异步输入/输出请求,若当前不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态;当所述输入输出专用线程处于所述第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。本发明提供的异步输入输出线程处理器资源分配方法能够令输入输出专用线程在没有待处理的异步输入/输出请求时进入第一休眠状态,避免无效的占用处理器资源,提高应用程序的整体效率。

6、cn201910927593.9专利摘要:本发明公开了一种多机间异步通信的方法,包括以下步骤:在主机创建主机发送线程和主机接收线程,并在从机创建从机发送线程和从机接收线程;通过主机发送线程组装并发送封装消息;通过从机接收线程接收主机发送的封装消息,解析封装消息,并判断封装消息与从机是否匹配;响应于消息与从机匹配,根据封装消息判断从机是否需要回复;以及响应于从机需要回复,通过从机发送线程组装并发送回复封装消息。本发明还公开了一种计算机设备。本发明通过特定序列组装而成的封装消息,确保特定主机与特定从机之间进行传递特定消息,从而实现多机间进行可靠的、高效的异步通信。


技术实现思路

1、通过专利检索,发现现有的发明专利中,并无专门采用操作系统异步输入输出子系统的高性能网络通信组件的实现方法和应用。即使应用了aio和io_uring等子系统,往往只是用于特定软件,没有形成通用的异步通信组件,也没有公开实现方式。同时也没有针对异步接口,对网络输入输出框架做深入和配套的改造和性能调优,无法充分发挥异步输入输出接口的性能优势。

2、本发明通过一种利用cpu多核心运行多个异步接口实例的方式实现了高性能网络输入输出组件,在试验系统中可靠运行,并在大多数的实验中获得了高于目前主流网络组件的性能。

3、本发明的目的在于提供一种异步网络输入输出组件的通信方法,以解决上述背景技术中提出的问题。

4、为了解决上述技术问题,本发明提供如下技术方案:

5、与现有技术相比,本发明所达到的有益效果是:

6、经过验证系统测试,该异步框架网络组件的数据收发性能能够超过现有的基于轮询的多路复用技术的网络数据输出组件的数据收发性能。未来基于该组件的基础上能够改进并开发出远高于现有网络应用程序的高性能系统,能够支持在同样的硬件配置下取得更加高速的网路传输性能。



技术特征:

1.一种异步网络输入输出组件的通信方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种异步网络输入输出组件的通信方法,其特征在于,所述的s1中,io_uring实例的数量为内核数量-2。

3.根据权利要求1所述的一种异步网络输入输出组件的通信方法,其特征在于,所述的s5中,数据读取事件为read事件、recv事件或readv事件的任意一种。

4.根据权利要求1所述的一种异步网络输入输出组件的通信方法,其特征在于,通过抢占式或轮转式进行io_uring多实例的调度。

5.根据权利要求1所述的一种异步网络输入输出组件的通信方法,其特征在于,利用io_uring实例中的flag机制,生成唯一消息id,以唯一标记每次读写对应的消息。

6.根据权利要求1所述的一种异步网络输入输出组件的通信方法,其特征在于,所述的异步网络输入输出组件基于linux 5.7以上版本内核,采用的程序开发语言需能够访问和处理内存分配和底层系统调用。

7.根据权利要求6所述的一种异步网络输入输出组件的通信方法,其特征在于,所述的程序开发语言为c/c++语言、go语言或rust语言的任意一种。


技术总结
本发明涉及计算机网络通信领域,具体为一种异步网络输入输出组件的通信方法。本发明通过一种利用CPU多核心运行多个异步接口实例的方式实现了高性能网络输入输出组件,在试验系统中可靠运行,并在大多数的实验中获得了高于目前主流网络组件的性能。

技术研发人员:张家鹏,杨剑,屠庆,马立新
受保护的技术使用者:上海卓渊智能科技有限公司
技术研发日:
技术公布日:2024/6/26
转载请注明原文地址:https://doc.8miu.com/index.php/read-1818996.html

最新回复(0)