CN113535344A - 网络数据处理方法和装置、服务器及存储介质 - Google Patents
网络数据处理方法和装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN113535344A CN113535344A CN202010298203.9A CN202010298203A CN113535344A CN 113535344 A CN113535344 A CN 113535344A CN 202010298203 A CN202010298203 A CN 202010298203A CN 113535344 A CN113535344 A CN 113535344A
- Authority
- CN
- China
- Prior art keywords
- network
- data packet
- coroutine
- target
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供的网络数据处理方法和装置、服务器及存储介质,涉及数据处理技术领域。在本申请中,首先,通过数据接收协程检测是否存在目标数据包。其次,若存在目标数据包,则通过数据接收协程在多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表。然后,若不存在目标数据包,则在将该数据接收协程切换至目标网络线程的主协程之后,将该主协程依次切换至网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至数据接收协程,以对任务队列再次进行检测。通过上述方法,可以改善现有的数据处理技术中存在的数据处理效率较低的问题。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种网络数据处理方法和装置、服务器及存储介质。
背景技术
在传统的数据处理技术中,为了实现对大量数据的并行计算处理,一般是采用多线程并行执行的方案。现有技术中,为了改善线程切换过程中存在开销过大和线程并行执行的并行度不足等问题,采用了多协程的技术方案,以提高对大量数据的并行处理效率。
经发明人研究发现,现有的基于多协程处理数据的技术中,由于多协程的管理逻辑复杂,因而,仍存在着对数据的并行处理效率不高的问题。
发明内容
有鉴于此,本申请的目的在于提供一种网络数据处理方法和装置、服务器及存储介质,以改善现有的数据处理技术中存在的数据处理效率较低的问题。
为实现上述目的,本申请实施例采用如下技术方案:
一种网络数据处理方法,包括:
通过数据接收协程检测预先配置的任务队列中是否存在目标数据包,其中,该数据接收协程和该任务队列基于目标网络线程配置,且该目标网络线程配置有包括多个网络协程的网络协程池;
若所述任务队列中存在所述目标数据包,则通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表;
若所述任务队列中不存在所述目标数据包,则在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,所述将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理的步骤,包括:
将所述主协程依次切换至所述网络链表中的每一个网络协程,并通过该网络协程确定对应的目标数据包的数据类型;
若所述目标数据包为实时计算类型,则通过对应的网络协程对该目标数据包进行计算处理;
若所述目标数据包为非实时计算类型,则通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,所述通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理的步骤,包括:
将数据类型为非实时计算类型的目标数据包,通过对应的网络协程放入针对目标业务线程预先配置的业务队列,并通过该目标业务线程检测该业务队列是否存在目标数据包;
若所述业务队列中存在所述目标数据包,则通过所述目标业务线程在预先配置的业务协程池中确定对应的业务协程,并将该业务协程放入预先配置的业务链表,其中,该业务协程池包括多个业务协程;
将所述目标业务线程依次切换至所述业务链表中的每一个业务协程,以通过该业务协程对对应的目标数据包进行处理。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,所述通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理的步骤,还包括:
在通过所述网络协程将对应的目标数据包放入所述业务队列之后,对该网络协程进行休眠处理;
在通过所述业务协程对对应的目标数据包进行处理之后,将处理结果放入所述任务队列,并在通过所述数据接收协程检测到该处理结果时,唤醒对应的网络协程,以对该处理结果进行处理。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,所述方法还包括:
若所述任务队列中不存在所述目标数据包,则在预设时长之后将所述数据接收协程切换至所述主协程。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,所述方法还包括:
通过所述网络协程将预先创建的请求数据包,放入针对目标通讯线程预先配置的通讯队列;
通过所述目标通讯线程检测所述通讯队列中是否存在请求数据包,并在存在该请求数据包时,将该请求数据包发送给连接的其它服务器。
在本申请实施例较佳的选择中,在上述网络数据处理方法中,还包括:
在通过所述网络协程将所述请求数据包放入所述通讯队列之后,对该网络协程进行休眠处理;
在接收到所述其它服务器基于所述请求数据包发送的应答数据包之后,唤醒对应的网络协程,以对该应答数据包进行处理。
本申请实施例还提供了一种网络数据处理装置,包括:
数据包检测模块,用于通过数据接收协程检测预先配置的任务队列中是否存在目标数据包,其中,该数据接收协程和该任务队列基于目标网络线程配置,且该目标网络线程配置有包括多个网络协程的网络协程池;
网络协程处理模块,用于在所述任务队列中存在所述目标数据包时,通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表;
网络协程切换模块,用于在所述任务队列中不存在所述目标数据包时,在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。
在上述基础上,本申请实施例还提供了一种服务器,包括:
存储器,用于存储计算机程序;
与所述存储器连接的处理器,用于执行所述计算机程序,以实现上述的网络数据处理方法。
在上述基础上,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被执行时,实现上述的网络数据处理处理方法。
本申请提供的网络数据处理方法和装置、服务器及存储介质,通过对目标网络线程配置主协程、数据接收协程和多个网络协程,使得目标网络线程对应的任务队列中的目标数据包,可以被不同的协程配合完成检测、分发和处理等工作。如此,通过对不同的协程配置不同的工作逻辑,使得协程之间不会相互干扰,从而保证不同的协程对数据处理的不同阶段分别进行处理,从而提高协程并行执行的效率,进而改善现有的数据处理技术中存在的数据处理效率较低的问题,尤其是在海量数据处理的应用中,具有较好的应用效果。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1为本申请实施例提供的服务器的应用交互示意图。
图2为本申请实施例提供的网络数据处理方法包括的各步骤的流程示意图。
图3为图2中步骤S130包括的各子步骤的流程示意图。
图4为图3中步骤S135包括的各子步骤的流程示意图。
图5为图3中步骤S135包括的其它子步骤的流程示意图。
图6为本申请实施例提供的网络数据处理方法包括的其它步骤的流程示意图。
图7为本申请实施例提供的网络数据处理方法包括的其它步骤的流程示意图。
图8为本申请实施例提供的网络数据处理装置包括的功能模块的方框示意图。
图标:10-服务器;12-存储器;14-处理器;100-网络数据处理装置;110-数据包检测模块;120-网络协程处理模块;130-网络协程切换模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本申请的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,本申请实施例提供了一种服务器10。其中,该服务器10可以包括存储器12、处理器14和网络数据处理装置100。
详细地,所述存储器12和处理器14之间直接或间接地电性连接,以实现数据的传输或交互。例如,相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述网络数据处理装置100可以包括,至少一个可以软件或固件(firmware)的形式存储于所述存储器中的软件功能模块。所述处理器14用于执行所述存储器12中存储的可执行的计算机程序,例如,所述网络数据处理装置100所包括的软件功能模块及计算机程序等,以实现本申请实施例提供的网络数据处理方法。
可选地,所述存储器12可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。
并且,所述处理器14可以是一种通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)、片上系统(System onChip,SoC)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图1所示的结构仅为示意,所述服务器10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置,例如,还可以包括用于与其它设备(如其它服务器或终端设备等)进行信息交互的通信单元。
结合图2,本申请实施例还提供一种网络数据处理方法,可应用于上述的服务器10。其中,所述网络数据处理方法有关的流程所定义的方法步骤可以由所述服务器10实现。下面将对图2所示的具体流程,进行详细阐述。
步骤S110,通过数据接收协程检测预先配置的任务队列中是否存在目标数据包。
在本实施例中,所述服务器在接收到其它设备发送的目标数据包时,可以将该目标数据包先存储在预先配置的任务队列中。如此,使得可以通过所述数据接收协程(运行该数据接收协程)对该任务队列进行检测,以确定是否有接收到所述目标数据包。
其中,所述数据接收协程和所述任务队列基于目标网络线程配置,即该目标网络线程需要处理的数据包可以存储在该任务队列,且该目标网络线程配置有包括多个网络协程的网络协程池。
并且,在检测到所述任务队列中存在目标数据包时,可以执行步骤S120;在检测到所述任务队列中不存在目标数据包时,可以执行步骤S130。
步骤S120,通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表。
在本实施例中,在通过步骤S110检测到所述目标数据包时,可以通过所述数据接收协程(即运行该数据接收协程)在所述网络协程池中确定对应的网络协程,并将该网络协程放入至预先配置的网络链表(即将该网络协程作为处理该目标数据包的数据处理协程),使得该网络协程在运行时可以用于对该目标数据包进行处理。
步骤S130,在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。
在本实施例中,在通过步骤S110未检测到所述目标数据包时,可以先将所述数据接收协程切换至所述目标网络线程的主协程,然后,再将该主协程依次切换至(即遍历)所述网络链表中的每一个网络协程,以使运行中的每一个网络协程分别对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测,从而完成一个循环。
基于上述方法,通过对目标网络线程配置主协程、数据接收协程和多个网络协程,使得目标网络线程对应的任务队列中的目标数据包,可以被不同的协程配合完成检测、分发和处理等工作。如此,通过对不同的协程配置不同的工作逻辑,使得协程之间不会相互干扰,从而保证不同的协程对数据处理的不同阶段分别进行处理,从而提高协程并行执行的效率,进而改善现有的数据处理技术中存在的数据处理效率较低的问题。
对于步骤S110需要说明的是,检测所述任务队列的具体方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,可以通过所述数据接收协程每间隔预设时长,对所述任务队列进行检测,以确定是否接收到所述目标数据包。
其中,所述预设时长的具体数值不受限制,例如,可以根据服务器的平均QPS(Queries Per Second,每秒查询率)进行配置,如50mS。
又例如,在另一种可以替代的示例中,可以基于其它的线程或协程对所述目标数据包进行检测,并在检测到该目标数据包时,通知所述数据接收协程,使得该数据接收协程可以基于是否接收到通知,以确定是否接收到所述目标数据包。
其中,上述的其它线程或协程的具体对象不受限制,例如,可以是一种网络监听线程(epoll)。该网络监听线程与所述目标网络线程可以是位于相同的网络线程池,如此,该网络监听线程在对相应的端口进行监测时,若监测到有数据包到达,可以通过套接字(socket)读取完整的数据包,并将该数据包存储至该端口对应的任务队列。然后,该网络监听线程可以通知所述目标网络线程,使得该目标网络线程可以通知所述数据接收协程,如此,该数据接收协程在接收到该目标网络线程的通知时,可以确定所述任务队列中存在目标数据包。
可以理解的是,通过所述数据接收协程对任务队列中的目标数据包进行检测,可以是将该数据接收协程的入口指向预先创建的一个数据接收函数的入口,使得该数据接收协程运行时,可以基于该数据接收函数检测所述任务队列中是否有目标数据包。
对于步骤S120需要说明的是,在所述网络协程池中确定对应的网络协程的具体方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,若所述网络协程池中的所有网络协程的类型都相同,如此,可以在该网络协程池中任意确定一个空闲状态的网络协程,并将该网络协程作为所述目标数据包的数据处理协程,用于对该目标数据包进行处理。
又例如,在另一种可以替代的示例中,若所述网络协程池中的不同网络协程的类型不同,用于对不同的数据包进行处理。如此,可以在该网络协程池中基于该数据包确定一个类型对应且属于空闲状态的网络协程,并将该网络协程作为所述目标数据包的数据处理协程,用于对该目标数据包进行处理。
并且,在步骤S120中,将确定的网络协程放入所述网络链表的具体方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,若仅需要对网络协程是否属于空闲状态进行标识,所述网络链表可以是一种可用链表。如此,只要将任意一个网络协程确定为目标数据包的数据处理协程之后,就可以将该网络协程放入该可用链表,用于表征该网络协程目标不处于空闲状态,需要等待执行,以对该目标数据包进行处理。
又例如,在另一种可以替代的示例中,考虑到不同的数据包的处理机制可能不同,使得需要对应的网络协程可能处于不同的处理状态。如此,为了提高对网络协程的管理效率,所述网络链表可以包括空闲链表、可用链表、不可用链表、超时检查链表和活跃链表。
其中,在初始默认状态下,所述网络协程池中的所有网络协程可以都放入所述空闲链表,即表征所有的网络协程在初始时,都属于空闲状态。如此,在接收到所述目标数据包时,可以先确定该目标数据包是否设置有等待时间。
一方面,在所述目标数据包未设置有等待时间时,可以将确定的网络协程放入上述的可用链表。基于此,针对放入可用链表的网络协程,若该网络协程在处理数据包之后,需要等待其它协程的处理结果,此时,可以将该网络协程进行休眠处理(具体示例可以参照后文的描述),且在休眠期间,可以将该网络协程放入上述的不可用链表。
另一方面,在所述目标数据包设置有等待时间时,可以将确定的网络协程放入上述的超时检查链表。基于此,针对放入超时检查链表的网络协程,可以在满足等待时间之后,将该网络协程放入上述的活跃链表。
其中,针对放入可用链表和活跃链表的网络协程,在由主协程依次切换至(遍历)该可用链表和活跃链表时,可以使得该网络协程对对应的目标数据包进行处理,并在处理之后,将该网络协程放入上述的空闲链表。并且,针对处理之后需要等待其它协程的处理结果的网络协程,在将该网络协程放入不可用链表之后,若获取到该处理结果,可以对该网络协程进行唤醒处理,并将唤醒后的网络链表放入上述的空闲链表。
可以理解的是,在上述示例中,将网络协程放入不同的链表可以是指,将该网络协程的协程指针指向不同的链表。
对于步骤S130需要说明的是,通过网络协程对对应的目标数据包进行处理的具体方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,可以直接基于所述网络协程对对应的目标数据包进行计算处理。又例如,在另一种可以替代的示例中,可以通过所述网络协程直接将对应的目标数据包发送给其它协程进行处理。
再例如,在另一种可以替代的示例中,为了进一步提高对数据数据包进行处理的效率,结合图3,步骤S130可以包括步骤S131、步骤S133和步骤S135,具体内容如下所述。
步骤S131,将所述主协程依次切换至所述网络链表中的每一个网络协程,并通过该网络协程确定对应的目标数据包的数据类型。
在本实施例中,在将所述数据接收协程切换至所述目标网络线程的主协程之后,可以先依次将该主协程切换至(遍历)所述网络链表(如上述的可用链表和活跃链表)中的每一个网络协程。然后,通过运行切换至的每一个网络协程,使得可以对对应的目标数据包的数据类型进行确定,如确定该目标数据包是属于实时计算类型,还是属于非实时计算类型。
其中,在确定对应的目标数据包的数据类型为实时计算类型时,可以执行步骤S133;在确定对应的目标数据包的数据类型为非实时计算类型时,可以执行步骤S135。
步骤S133,通过对应的网络协程对所述目标数据包进行计算处理。
在本实施例中,在通过步骤S131确定目标数据包的数据类型为实时计算类型时,为了保证能够对该目标数据包进行及时地计算处理,可以直接通过对应的网络协程队该目标数据包进行计算处理。
步骤S135,通过对应的网络协程将所述目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理。
在本实施例中,在通过步骤S131确定目标数据包的数据类型为非实时计算类型时,为了数据处理整体的效率,如保证能够对其它数据包也进行及时有效地计算处理,可以将该目标数据包放入针对目标业务线程预先配置的业务队列中进行计算处理。
其中,在通过所述网络协程将对应的目标数据包放入所述业务队列中之后,若不需要等待处理结果,可以将该网络协程放入上述的空闲链表;若需要等待处理结果,可以将该网络协程放入上述的不可用链表。
并且,所述目标业务线程可以是,预先配置的业务线程池包括的多个业务线程中的一个业务线程。
可以理解的是,在上述示例中,所述实时计算类型和所述非实时计算类型的具体内容,可以根据实际应用需求进行预先配置。
例如,在一种可以替代的示例中,所述非实时计算类型可以包括并行处理类型(如需要同时对多个数据库并行进行更新处理)、计算耗时长类型和需要休眠处理类型,所述实时计算类型可以是指其它耗时短、计算简单、数据量小的类型。
可选地,执行步骤S135以将目标数据包放入所述业务队列进行计算处理的具体方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,可以通过所述目标业务线程直接对所述目标数据包进行计算处理。
又例如,在另一种可以替代的示例中,为了避免资源消耗过大等问题,还可以通过针对所述目标业务线程配置的业务协程,对所述目标数据包进行计算处理。基于此,结合图4,步骤S135可以包括步骤S135a、步骤S135b和步骤S135c,具体内容如下所述。
步骤S135a,将数据类型为非实时计算类型的目标数据包,通过对应的网络协程放入针对目标业务线程预先配置的业务队列,并通过该目标业务线程检测该业务队列是否存在目标数据包。
在本实施例中,在基于步骤S131确定目标数据包的数据类型属于非实时计算类型时,可以先通过对应的网络协程将该目标数据包放入针对所述目标业务线程预先配置的业务队列中。同时,可以通过该目标业务线程对该业务队列进行检测,以确定该业务队列中是否存在目标数据包。
其中,在通过所述目标业务线程确定所述业务队列中存在目标数据包时,可以执行步骤S135b;在通过所述目标业务线程确定所述业务队列中不存在目标数据包时,可以在等待一定时长之后,再次检测所述业务队列中是否存在目标数据包。
步骤S135b,通过所述目标业务线程在预先配置的业务协程池中确定对应的业务协程,并将该业务协程放入预先配置的业务链表。
在本实施例中,在通过步骤S135a确定所述业务队列中存在目标数据包时,可以通过所述目标业务线程(即运行该目标业务线程)在业务协程池中确定对应的业务协程,并将该业务协程放入预先配置的业务链表中,即将该业务协程作为该目标数据的业务处理协程。
其中,所述业务协程池基于所述目标业务线程配置,且该业务协程池包括多个业务协程,使得可以对多个数据包分别进行处理。
步骤S135c,将所述目标业务线程依次切换至所述业务链表中的每一个业务协程,以通过该业务协程对对应的目标数据包进行处理。
在本实施例中,在基于步骤S135b将确定的业务协程放入所述业务链表之后,可以先将所述目标业务线程依次切换至(遍历)所述业务链表中的每一个业务协程,如此,可以使得该业务链表中的每一个业务协程可以运行,以对对应的目标数据包进行处理。
其中,上述的业务链表可以用于表征所述业务协程当前的状态,如上述的网络链表,也可以包括空闲链表、可用链表、不可用链表、超时检查链表和活跃链表,且表征的状态可以参见前文的描述,在此不再一一赘述。
并且,为了避免资源浪费的问题,在执行步骤S135a之后,在一种可以替代的示例中,结合图5,步骤S135还可以包括步骤S135d和步骤S135e,具体内容如下所述。
步骤S135d,对网络协程进行休眠处理。
在本实施例中,在执行步骤S135a以通过所述网络协程将对应的目标数据包放入所述业务队列之后,可以对该网络协程进行休眠处理,以避免该网络协程对内存资源的消耗。
步骤S135e,将处理结果放入所述任务队列,并在通过所述数据接收协程检测到该处理结果时,唤醒对应的网络协程,以对该处理结果进行处理。
在本实施例中,在执行步骤S135c以通过所述业务协程对对应的目标数据包进行处理之后,可以获取得到的处理结果,并将该处理结果放入所述任务队列,使得所述数据接收协程在对该任务队列进行检测时,可以获取到该处理结果。
并且,在通过所述数据接收协程获取到该处理结果时,可以对对应的(处于休眠状态)的网络协程进行唤醒处理,使得该网络协程在唤醒之后可以对该处理结果进行处理。
例如,在一种具体的应用示例中,所述处理结果对应的目标数据包为,对数据库进行更新处理。若所述处理结果为,对数据库进行更新完成,则该网络协程可以生成更新成功的信息,并发送给所述目标数据包对应的终端设备;若所述处理结果为,对数据库进行更新失败,则该网络协程可以生成更新失败或重新更新的信息,并发送给所述目标数据包对应的终端设备,使得该终端设备可以重新发送进行更新处理的请求。
进一步地,考虑到执行步骤S130的前提是,先将所述数据接收协程切换至所述目标网络线程的主协程,因而,所述网络数据处理方法,还可以包括将该数据接收协程切换至该目标网络线程的主协程的步骤。
其中,基于不同的需求,可以对该步骤进行不同的配置。
例如,在一种可以替代的示例中,可以在检测到所述任务队列中不存在所述目标队列时,就立刻将所述数据接收协程切换至所述主协程。
又例如,在另一种可以替代的示例中,为了避免频繁的切换导致资源浪费的问题,可以在检测到所述任务队列中不存在所述目标队列时,经过预设时长之后(可以根据实际应用需求进行配置,如2、4、5、7等S)再将所述数据接收协程切换至所述主协程。
进一步地,基于一些应用需求,所述服务器需要与其它服务器进行通信,为了使得该服务器可以基于生成的请求数据包请求其它服务器进行相应的服务,在本实施例中,结合图6,所述网络数据处理方法还可以包括步骤S140和步骤S150,具体内容如下所述。
步骤S140,通过所述网络协程将预先创建的请求数据包,放入针对目标通讯线程预先配置的通讯队列。
在本实施例中,在需要请求其它服务器提供服务时,可以通过所述网络协程(即运行该网络协程)将预先创建的请求数据包,放入预先配置的通讯队列中。
其中,所述通讯队列基于目标通讯线程配置形成,该目标通讯线程可以是预先创建的通讯线程池中的一个通讯线程。
步骤S150,通过所述目标通讯线程检测所述通讯队列中是否存在请求数据包,并在存在该请求数据包时,将该请求数据包发送给连接的其它服务器。
在本实施例中,在基于步骤S140将所述请求数据包放入所述通讯队列之后,由于所述目标通讯线程可以对该通讯队列进行检测,因而,在检测到该通讯队列中存在请求数据包时,可以将该请求数据包发送给其它服务器,使得该其它服务器对该请求数据包进行处理,即让该其它服务器提供相应的服务。
对于步骤S140需要说明的是,所述请求数据包的创建方式不受限制,可以根据实际应用需求进行选择。
例如,在一种可以替代的示例中,若需要创建的请求数据包较为简单,可以直接基于网络协程进行创建。又例如,在另一种可以替代的示例中,若需要创建的请求数据包较为复杂(如数据量较大,或逻辑复杂),可以通过业务协程进行创建。
对于步骤S150需要说明的是,所述目标通讯线程在检测到所述通讯队列中存在请求数据包时,可以先请求其它服务器以建立连接,并将该请求数据包放入预先建立的超时检查队列中,然后,在与其它服务器建立连接之后,在一种可以替代的示例中,可以直接将该请求数据包发送给其它服务器;在另一种可以替代的示例中,也可以从该超时检查队列中复制该请求数据包,并将复制的请求数据包发送给其它服务器。
进一步地,在执行步骤S140以将请求数据包发送给其它服务器之后,在一些应用需求下,可以不需要等待其它服务器返回服务结果,在另一些应用需求下,可以等待其它服务器返回服务结果。
其中,针对需要其它服务器返回服务结果的情况,基于不同的需求可以对所述请求数据包对应的网络协程进行不同的处理。
例如,在一种可以替代的示例中,为了避免资源浪费的问题,可以对所述请求数据包对应的网络协程进行休眠处理。基于此,结合图7,所述网络数据处理方法还可以包括步骤S160和步骤S170,具体内容如下所述。
步骤S160,在通过所述网络协程将所述请求数据包放入所述通讯队列之后,对该网络协程进行休眠处理。
在本实施例中,在基于步骤S140以通过所述网络协程将所述请求数据包放入所述通讯队列之后,可以对该网络协程进行休眠处理。
步骤S170,在接收到所述其它服务器基于所述请求数据包发送的应答数据包之后,唤醒对应的网络协程,以对该应答数据包进行处理。
在本实施例中,在基于步骤S160对网络协程进行休眠处理、基于步骤S150将请求数据包发送给其它服务器之后,可以等待其它服务器返回服务结果。
其中,其它服务器可以通过向所述服务器发送应答数据包的形式,返回服务结果。如此,在通过所述目标通讯线程在检测到接收到该应答数据包时,可以将该应答数据包放到所述任务队列中,使得所述数据接收协程在该任务队列中检测到该应答数据包时,可以唤醒对应的网络协程,以对该应答数据包进行处理。
需要说明的是,在上述示例中,对协程(如网络协程)进行休眠处理是指,让该协程暂停运行一段时间(具体时长根据实际应用需求进行配置)。
结合图8,本申请实施例还提供一种网络数据处理装置100,可应用于上述的服务器10。其中,所述网络数据处理装置100可以包括数据包检测模块110、网络协程处理模块120和网络协程切换模块130。
所述数据包检测模块110,用于通过数据接收协程检测预先配置的任务队列中是否存在目标数据包,其中,该数据接收协程和该任务队列基于目标网络线程配置,且该目标网络线程配置有包括多个网络协程的网络协程池。在本实施例中,所述数据包检测模块110可用于执行图2所示的步骤S110,关于所述数据包检测模块110的相关内容可以参照前文对步骤S110的描述。
所述网络协程处理模块120,用于在所述任务队列中存在所述目标数据包时,通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表。在本实施例中,所述网络协程处理模块120可用于执行图2所示的步骤S120,关于所述网络协程处理模块120的相关内容可以参照前文对步骤S120的描述。
所述网络协程切换模块130,用于在所述任务队列中不存在所述目标数据包时,在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。在本实施例中,所述网络协程切换模块130可用于执行图2所示的步骤S130,关于所述网络协程切换模块130的相关内容可以参照前文对步骤S130的描述。
在本申请实施例中,对应于上述的网络数据处理方法,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序运行时执行上述网络数据处理方法的各个步骤。
其中,前述计算机程序运行时执行的各步骤,在此不再一一赘述,可参考前文对所述网络数据处理方法的解释说明。
需要说明的是,在上述示例的描述中,“多个”是指二个及其以上。
综上所述,本申请提供的网络数据处理方法和装置、服务器及存储介质,通过对目标网络线程配置主协程、数据接收协程和多个网络协程,使得目标网络线程对应的任务队列中的目标数据包,可以被不同的协程配合完成检测、分发和处理等工作。如此,通过对不同的协程配置不同的工作逻辑,使得协程之间不会相互干扰,从而保证不同的协程对数据处理的不同阶段分别进行处理,从而提高协程并行执行的效率,进而改善现有的数据处理技术中存在的数据处理效率较低的问题,尤其是在海量数据处理的应用中,具有较好的应用效果。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种网络数据处理方法,其特征在于,包括:
通过数据接收协程检测预先配置的任务队列中是否存在目标数据包,其中,该数据接收协程和该任务队列基于目标网络线程配置,且该目标网络线程配置有包括多个网络协程的网络协程池;
若所述任务队列中存在所述目标数据包,则通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表;
若所述任务队列中不存在所述目标数据包,则在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。
2.根据权利要求1所述的网络数据处理方法,其特征在于,所述将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理的步骤,包括:
将所述主协程依次切换至所述网络链表中的每一个网络协程,并通过该网络协程确定对应的目标数据包的数据类型;
若所述目标数据包为实时计算类型,则通过对应的网络协程对该目标数据包进行计算处理;
若所述目标数据包为非实时计算类型,则通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理。
3.根据权利要求2所述的网络数据处理方法,其特征在于,所述通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理的步骤,包括:
将数据类型为非实时计算类型的目标数据包,通过对应的网络协程放入针对目标业务线程预先配置的业务队列,并通过该目标业务线程检测该业务队列是否存在目标数据包;
若所述业务队列中存在所述目标数据包,则通过所述目标业务线程在预先配置的业务协程池中确定对应的业务协程,并将该业务协程放入预先配置的业务链表,其中,该业务协程池包括多个业务协程;
将所述目标业务线程依次切换至所述业务链表中的每一个业务协程,以通过该业务协程对对应的目标数据包进行处理。
4.根据权利要求3所述的网络数据处理方法,其特征在于,所述通过对应的网络协程将该目标数据包,放入针对目标业务线程预先配置的业务队列中进行计算处理的步骤,还包括:
在通过所述网络协程将对应的目标数据包放入所述业务队列之后,对该网络协程进行休眠处理;
在通过所述业务协程对对应的目标数据包进行处理之后,将处理结果放入所述任务队列,并在通过所述数据接收协程检测到该处理结果时,唤醒对应的网络协程,以对该处理结果进行处理。
5.根据权利要求1所述的网络数据处理方法,其特征在于,所述方法还包括:
若所述任务队列中不存在所述目标数据包,则在预设时长之后将所述数据接收协程切换至所述主协程。
6.根据权利要求1-5任意一项所述的网络数据处理方法,其特征在于,所述方法还包括:
通过所述网络协程将预先创建的请求数据包,放入针对目标通讯线程预先配置的通讯队列;
通过所述目标通讯线程检测所述通讯队列中是否存在请求数据包,并在存在该请求数据包时,将该请求数据包发送给连接的其它服务器。
7.根据权利要求6所述的网络数据处理方法,其特征在于,还包括:
在通过所述网络协程将所述请求数据包放入所述通讯队列之后,对该网络协程进行休眠处理;
在接收到所述其它服务器基于所述请求数据包发送的应答数据包之后,唤醒对应的网络协程,以对该应答数据包进行处理。
8.一种网络数据处理装置,其特征在于,包括:
数据包检测模块,用于通过数据接收协程检测预先配置的任务队列中是否存在目标数据包,其中,该数据接收协程和该任务队列基于目标网络线程配置,且该目标网络线程配置有包括多个网络协程的网络协程池;
网络协程处理模块,用于在所述任务队列中存在所述目标数据包时,通过所述数据接收协程在所述网络协程池包括的多个网络协程中确定对应的网络协程,并将该网络协程放入预先配置的网络链表;
网络协程切换模块,用于在所述任务队列中不存在所述目标数据包时,在将所述数据接收协程切换至所述目标网络线程的主协程之后,将该主协程依次切换至所述网络链表中的每一个网络协程,以通过该网络协程对对应的目标数据包进行处理,并在该网络链表中的每一个网络协程被切换之后,将该主协程切换至该数据接收协程,以对所述任务队列再次进行检测。
9.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
与所述存储器连接的处理器,用于执行所述计算机程序,以实现权利要求1-7任意一项所述的网络数据处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被执行时,实现权利要求1-7任意一项所述的网络数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010298203.9A CN113535344A (zh) | 2020-04-16 | 2020-04-16 | 网络数据处理方法和装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010298203.9A CN113535344A (zh) | 2020-04-16 | 2020-04-16 | 网络数据处理方法和装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535344A true CN113535344A (zh) | 2021-10-22 |
Family
ID=78088485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010298203.9A Pending CN113535344A (zh) | 2020-04-16 | 2020-04-16 | 网络数据处理方法和装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535344A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114157500A (zh) * | 2021-12-07 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 数据包处理方法及电子设备、存储介质 |
WO2024040846A1 (zh) * | 2022-08-23 | 2024-02-29 | 奇安信网神信息技术(北京)股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-04-16 CN CN202010298203.9A patent/CN113535344A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114157500A (zh) * | 2021-12-07 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 数据包处理方法及电子设备、存储介质 |
WO2024040846A1 (zh) * | 2022-08-23 | 2024-02-29 | 奇安信网神信息技术(北京)股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108449239B (zh) | 心跳包检测方法、装置、设备和存储介质 | |
CN108665239B (zh) | 工作流处理方法、装置、计算机设备及存储介质 | |
CN113535344A (zh) | 网络数据处理方法和装置、服务器及存储介质 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN111427694A (zh) | 任务执行方法、装置、系统和服务器 | |
CN112383585A (zh) | 消息处理系统、方法及电子设备 | |
WO2023222109A1 (zh) | 网络唤醒的管理方法、装置、电子设备及存储介质 | |
CN111124609A (zh) | 数据采集方法、装置、数据采集设备及存储介质 | |
CN109766198B (zh) | 流式处理方法、装置、设备及计算机可读存储介质 | |
CN111611057A (zh) | 分布式重试方法、装置、电子设备和存储介质 | |
CN114827168A (zh) | 告警聚合上报方法、装置、计算机设备及存储介质 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN113031870A (zh) | 一种集群系统动态管理方法、装置、存储介质及设备 | |
WO2007059667A1 (fr) | Procede d'obtention de donnees d'alarme des elements de reseau | |
CN111930542A (zh) | 数据采集方法、装置、电子设备及计算机可读存储介质 | |
CN111427674A (zh) | 一种微服务管理方法、装置及系统 | |
CN116032932A (zh) | 针对边缘服务器的集群管理方法、系统、设备及介质 | |
Chakaravarthy et al. | An efficient decentralized algorithm for the distributed trigger counting problem | |
CN111556043B (zh) | 一种报文处理方法、装置、系统、设备及可读存储介质 | |
CN113886490A (zh) | 分布式数据库中无状态计算实例高可用的实现方法及系统 | |
CN117041172B (zh) | 一种白盒交换机接口请求处理方法和装置 | |
CN113765711B (zh) | 一种网络设备保活方法及装置 | |
US12007738B2 (en) | Dynamic monitoring | |
CN113961379B (zh) | 基于人机对话的消息处理方法及装置 | |
CN117971844A (zh) | 用于数据处理的方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |