CN111314429B - 一种网络请求处理系统和方法 - Google Patents

一种网络请求处理系统和方法 Download PDF

Info

Publication number
CN111314429B
CN111314429B CN202010059255.0A CN202010059255A CN111314429B CN 111314429 B CN111314429 B CN 111314429B CN 202010059255 A CN202010059255 A CN 202010059255A CN 111314429 B CN111314429 B CN 111314429B
Authority
CN
China
Prior art keywords
nginx
message
session
enqueue
event
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.)
Active
Application number
CN202010059255.0A
Other languages
English (en)
Other versions
CN111314429A (zh
Inventor
李健
张泽宇
管海兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202010059255.0A priority Critical patent/CN111314429B/zh
Publication of CN111314429A publication Critical patent/CN111314429A/zh
Application granted granted Critical
Publication of CN111314429B publication Critical patent/CN111314429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种网络处理请求系统,涉及Web服务领域。包括会话索引透传模块、消息元数据项保序模块、主动式事件通知模块;会话索引透传模块和消息元数据项保序模块并行执行;会话索引透传模块将会话索引作为NGINX使用的新文件描述符,NGINX将本身的原文件描述符作为新会话索引找到并访问会话;消息元数据项保序模块包括令牌编号和入队编号,在消息元数据项入队时检查其令牌编号和入队编号的一致性;主动式事件通知模块包括VPP工作线程主动唤醒NGINX工作进程和NGINX主进程主动唤醒NGINX工作进程,并主动查询用户态共享内存中的标记来确认是否有AF_UNIX域套接字epoll事件到来。本发明提高了网络请求处理性能,在无网络请求或请求量较少时,节省CPU资源并降低能耗。

Description

一种网络请求处理系统和方法
技术领域
本发明涉及在Web服务领域中负责网络中心边缘处的网络请求处理和负载均衡的网络应用领域,尤其涉及一种网络请求处理系统和方法。
背景技术
得益于移动手机、智能手表、网络电视数量的日益增长,用户对各类网站的访问需求也不断增大。巨大的网站访问请求给网站带来了不小压力。目前很多网站都是用可以做请求转发的网络应用来做网络请求的负载均衡。NGINX是目前应用广泛的高性能HTTP请求转发、处理的网络应用,被很多知名网站用来做数据中心边缘处的负载均衡。NGINX的特点是能以较小内存占用即可维持数万连接。但是,针对NGINX内核限制问题,目前流行的解决方案之一是使用绕过内核的用户态网络协议栈对NGINX进行优化。
FD.io VPP(Vector Packet Processing)的用户态网络协议栈便是采用该解决方案的例子。让NGINX直接通过VPP LDP应用接口使用VPP从而加速网络请求处理。然而当NGINX直接使用VPP LDP应用接口时,接口采用的锁机制影响了NGINX并行处理请求时的性能。由于NGINX是多进行单线程应用,因此多个NGINX工作进程不会共享会话,所以锁机制可以去除。但是去除锁机制后,VPP事件队列中的控制事件消息的元数据项会出现乱序。同时,使用VPP LDP应用接口的网络应用,会通过轮询的方式不断检查应用事件队列和内核里的epoll事件队列,这种繁忙轮询方式会导致NGINX工作进程一直百分之百占用CPU,浪费CPU资源和电力能源。
另外,检查内核里的epoll事件队列需要通过系统调用进行,而频繁通过系统调用检查内核epoll事件队列会引起频繁上下文切换,影响请求处理性能。
因此,本领域的技术人员致力于开发一种网络处理请求系统和方法,提高请求处理性能和速率,在没有网络请求或请求量较少时,节省CPU资源并降低能耗。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是VPP LDP应用接口使用的锁机制影响NGINX可扩展性,同时在去锁后保证VPP事件队列中控制事件消息元数据项不乱序,以及VPP的epoll事件管理使用的繁忙轮询机制引起的能源浪费和频繁上下文切换。
为实现上述目的,本发明提供了一种网络请求处理系统,其特征在于,包括会话索引透传模块、消息元数据项保序模块、主动式事件通知模块;所述会话索引透传模块和所述消息元数据项保序模块并行执行;所述会话索引透传模块将会话索引作为NGINX使用到的新文件描述符,NGINX将本身的原文件描述符作为新会话索引找到并访问会话;所述消息元数据项保序模块包括令牌分配器持有的令牌编号和入队检查器持有的入队编号,在消息元数据项入队时检查其所述令牌编号和所述入队编号的一致性;所述主动式事件通知模块包括VPP工作线程主动唤醒NGINX工作进程和NGINX主进程主动唤醒NGINX工作进程,并NGINX工作进程主动查询用户态共享内存中的布尔变量标记U来确认是否有AF_UNIX域套接字的epoll事件到来。
进一步地,所述消息元数据项保序模块为每个VPP事件添加两个变量,分别表示所述令牌分配器持有的令牌编号和入队检查器持有的所述入队编号,所述令牌编号分配给新控制事件消息,所述入队编号用于对新消息元数据项进行入队检查。
进一步地,所述入队编号是易变类型变量,所述令牌编号和所述入队编号均为无符号整数,且同时为无符号int类型或同时为无符号long int类型,初始值均为0。
进一步地,所述消息元数据项保序模块中每个控制事件消息增加局部变量,所述局部变量值为控制事件消息持有的令牌编号。
进一步地,所述消息元数据项保序模块对消息元数据项进行保序,包括以下步骤:
步骤1、当一个控制事件消息进入VPP事件队列之前,所述控制事件消息获得所述令牌编号,在所述令牌编号的值分配给所述局部变量后,所述令牌编号+1;
步骤2、消息元数据项入队之前,确定所述局部变量与所述入队编号一致性。
进一步地,所述步骤2包括:如果所述局部变量等于所述入队编号,则所述消息元数据项可以直接直接进入元数据项消息队列,同时所述入队编号+1;如果所述局部变量不等于所述入队编号,则所述消息元数据项等待入队。
进一步地,所述主动式事件通知模块为每个NGINX工作进程分配一个代理条件变量、布尔变量标记U和代理线程;所述布尔变量标记U位于用户态共享内存中;所述代理线程负责帮助所述NGINX主进程主动唤醒NGINX工作进程。
进一步地,所述主动式事件通知模块利用VPP提供的用户态epoll阻塞机制,让NGINX在没有网络请求处理时,阻塞在应用事件队列的所述代理条件变量。
进一步地,所述主动式事件通知模块包括:如果没有所述NGINX主进程向NGINX工作进程发送进程间消息时,则所述代理线程阻塞在所述代理条件变量上;如果NGINX主进程向NGINX工作进程发送进程间消息,则将所述布尔变量标记U设置为真,再发送消息,接着NGINX主进程向所述代理条件变量发信号以唤醒所述代理线程,最后所述代理线程帮助唤醒NGINX工作进程。
进一步地,其特征在于,所述主动式事件通知模块包括:NGINX工作进程判断所述布尔变量标记U和应用事件队列,如果所述布尔变量标记U为真,则取出内核AF_UNIX域套接字的epoll事件,然后将所述布尔变量标记U设置为假;如果应用事件队列不为空,则取出其中的epoll事件;如果所述布尔变量标记U为假且所述应用事件队列为空,则NGINX工作进程阻塞在所述代理条件变量。
基于上述网络请求处理系统,发明人提出了一种网络请求处理方法,包括以下步骤:
S001、响应于网络请求,VPP线程新建一个会话;
S002、VPP线程向接收事件队列中添加新建会话的地址,并向应用事件队列中添加会话被新建的epoll事件消息;
S003、VPP线程主动唤醒睡眠的NGINX工作进程;
S004、NGINX工作进程从应用事件队列中取出epoll事件消息,得知新会话已被创建,于是通过监听会话从接收事件队列中取出新会话的地址放入会话池中;
S005、会话池中的新会话的索引被透传给上层NGINX工作进程;
S006、NGINX工作进程把新会话索引作为会话文件描述符使用,并通过该索引值访问并处理会话的网络请求;
S007、当NGINX工作进程需要被重启或者关闭时,NGINX主进程将用户态的布尔变量标记U置为真,并向NGINX工作进程发送进程间消息,产生内核epoll事件,然后唤醒NGINX主进程;
S008、NGINX工作进程被唤醒后,发现布尔变量标记U为真,于是从内核epoll事件队列中取出内核epoll事件,并接收来自NGINX主进程的进程间消息,执行消息指定的操作。
与现有技术相比,本发明至少具有如下有益技术效果:
1、绕过了VPP LDP应用接口采用的锁机制,请求处理性能随着NGINX工作进程数量的增长而呈线性增长趋势;
2、在1个NGINX工作进程存在的情况下,请求处理速率提高10%-20%;
3、在没有网络请求或请求量较少时,节省CPU资源并降低能耗。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的组成示意图;
图2是本发明的会话索引透传模块组成示意图;
图3是本发明的消息元数据项保序模块组成示意图;
图4是本发明的主动式事件通知模块组成示意图;
图5是本发明的网络请求处理方法流程图;
图6是本发明的消息元数据项保序机制流程图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
发明人为了解决去锁后如何保证VPP事件队列中控制事件消息元数据项不乱序,以及VPP的epoll事件管理使用的繁忙轮询机制引起的能源浪费和频繁上下文切换等问题,提出一种网络请求处理系统,如图1所示,包括会话索引透传模块模块、消息元数据项保序模块、主动式事件通知模块;会话索引透传模块和消息元数据项保序模块并行执行;会话索引透传模块将会话索引作为NGINX使用到的新文件描述符,NGINX将本身的原文件描述符作为新会话索引找到并访问会话;消息元数据项保序模块包括令牌分配器持有的令牌编号和入队检查器持有的入队编号,在消息元数据项入队时检查消息从令牌分配器所述令牌编号分配而来的令牌编号和所述入队编号的一致性;主动式事件通知模块包括VPP工作线程主动唤醒NGINX工作进程和NGINX主进程主动唤醒NGINX工作进程,并NGINX工作进程主动查询用户态共享内存中的布尔变量标记U标记来确认是否有AF_UNIX域套接字epoll事件到来。
如图2所示,发明人将监听会话索引、epoll会话索引、普通网络会话索引分别作为NGINX工作进程使用的监听会话文件描述符、epoll会话文件描述符、普通网络会话文件描述符,直接提供给NGINX工作进程使用。工作时,NGINX工作进程将监听会话描述符作为监听会话的索引,并利用该索引从接收事件队列中取出新会话的地址放入会话池中。NGINX工作进程将epoll会话描述符作为epoll会话的索引,并利用该索引检查epoll事件,若没有epoll事件则NGINX工作进程进入睡眠状态,等待VPP工作进程或NGINX主进程主动唤醒它。此过程由主动式事件通知模块负责。NGINX工作进程将普通网络会话描述符作为普通网络会话的索引,并利用该索引从会话池中查找会话,并访问和操作该会话。
如图3所示,发明人在VPP事件队列使用的共享内存中为每个VPP事件队列添加一个令牌分配器和一个入队检查器。其中入队检查器持有的所述入队编号在实现上采用volatile(易变)类型的变量进行实现。令牌分配器负责向每个控制事件消息按顺序分配令牌。入队检查器则用来检查消息的令牌标号是否是当前可以入队的编号。在图3中,所有的①表示第一阶段步骤,所有的②表示第二阶段步骤,并以此类推。NGINX工作进程1的消息元数据(持有令牌3)已经进入元数据项消息队列。在第一阶段步骤中,令牌分配器先将令牌4分配给获得数据块索引2的消息,然后控制事件消息数据环的tail(队尾号)被更新为3。在第二阶段步骤中,令牌分配器先将令牌5分配给获得数据块索引3的消息,然后控制事件消息数据环的tail(队尾号)被更新为4。在第三阶段步骤中,获得数据块索引3的消息进入入队检查器。在第四阶段步骤中,获得数据块索引2的消息进入入队检查器。在第五阶段步骤中,入队检查器会先将持有令牌4的消息入队。在第六阶段步骤中,入队检查器会接着将持有令牌5的消息入队。通过入队检查器的保护,NGINX工作进程2和NGINX工作进程3的两个消息的元数据项能按顺序入队,使得元数据项入队顺序不会和消息数据块的分配顺序不一致。
如图6所示,消息元数据项保序机制包括:
1、NGINX工作进程2和NGINX工作进程3同时向VPP事件队列发送控制事件消息;
2、NGINX工作进程2先获得控制事件消息数据环的数据块索引值2,并获得令牌分配器分配的令牌4;NGINX工作进程3接着获得控制事件消息数据环的数据块索引值3,并获得令牌分配器分配的令牌5;NGINX工作进程2的消息元数据应该先于工作进程3的进入元数据项消息队列;
3、NGINX工作进程2和工作进程3接下来可以同时并行地将数据写入各自的数据块2、数据块3;
4、NGINX工作进程3先写完自己的数据块3,于是入队检查器检查其持有的令牌号5。而此时应入队编号为4,不等于其令牌号5;因此NGINX工作进程3需等待,通过循环不断检查应入队编号是否变更为5;
5、NGINX工作进程2接着写完自己的数据块2,然后入队检查器检查其持有的令牌号4,并发现应入队编号为4且等于NGINX工作进程2的消息的令牌号4,于是NGINX工作进程2的消息元数据项被添加至元数据项消息队列,并且应入队编号被更新至5;
6、此时应入队编号5等于NGINX工作进程3的令牌号5,于是NGINX工作进程3的消息元数据项被添加至元数据项消息队列,并且应入队编号被更新至6,NGINX工作进程2和NGINX工作进程3至此完成了向VPP事件队列发送控制事件消息的过程。
如图4所示,发明人通过VPP提供的函数clib_mem_alloc(),在NGINX主进程和工作进程均可访问的共享内存中,为每个NGINX工作进程分配一个代理条件变量agent condvar和布尔变量标记U。代理条件变量agent condvar由pthread_cond_init()创建。除了代理条件变量和布尔变量,还通过pthread_create()为每个NGINX工作进程创建一个代理线程。
如果没有NGINX主进程向工作进程发送的进程间消息,则代理线程将使用wait()阻塞在代理条件变量上。当NGINX主进程向NGINX工作进程发送进程间消息时,NGINX主进程首先将NGINX工作进程的布尔变量标记U设置为真,然后再发送消息。下一步,NGINX主进程通过broadcast()向代理条件变量发信号以唤醒代理线程。然后代理线程也通过broadcast()帮助NGINX主进程间接唤醒NGINX工作进程。
当NGINX工作进程要检查所有epoll事件时,它首先使用分支预测宏PREDICT_FALSE检查布尔变量标记U是否为真。然后,它检查应用事件队列是否有会话的epoll事件。如果布尔变量标记U为真,则NGINX工作进程将执行“(while(epoll_wait())”以从内核epoll事件队列中取出内核AF_UNIX域套接字的epoll事件,然后将布尔变量标记U设置为假。如果应用事件队列不为空,则进程将会话epoll事件取出。如果布尔变量标记U为假并且应用事件队列为空,则NGINX工作进程将阻塞在VPP提供的条件变量condvar上,等待epoll事件到达时被NGINX主进程或VPP工作线程唤醒。NGINX工作进程被唤醒后,还将按照上述步骤检查布尔变量标记U和应用事件队列。因为只有在NGINX刚启动时或网络管理员重新配置NGINX时,NGINX主进程才向每个NGINX工作进程发送一条消息,所以NGINX主进程通常在向工作进程发送一条消息后通常不会紧接着再向其发送第二条消息。因此,在实现中,不考虑代理线程错过了来自NGINX主进程的唤醒信号的情况,也不考虑NGINX主进程在将布尔变量标记U设置为真和发送进程间消息的中间间隙布尔变量标记U被NGINX工作进程设置为假的情况。
如图5所示,基于上述网络请求处理系统,发明人设计了一种网络请求处理方法,包括以下步骤:
S001、响应于网络请求,VPP线程新建一个会话;
S002、VPP线程向接收事件队列中添加新建会话的地址,并向应用事件队列中添加会话被新建的epoll事件消息;
S003、VPP线程主动唤醒睡眠的NGINX工作进程;
S004、NGINX工作进程从应用事件队列中取出epoll事件消息,得知新会话已被创建,于是通过监听会话从接收事件队列中取出新会话的地址放入会话池中;
S005、会话池中的新会话的索引被透传给上层NGINX工作进程;
S006、NGINX工作进程把新会话索引作为会话文件描述符使用,并通过该索引值访问并处理会话的网络请求;
S007、当NGINX工作进程需要被重启或者关闭时,NGINX主进程将用户态的布尔变量标记U置为真,并向NGINX工作进程发送进程间消息,产生内核epoll事件,然后唤醒NGINX主进程;
S008、NGINX工作进程被唤醒后,发现布尔变量标记U为真,于是从内核epoll事件队列中取出内核epoll事件,并接收来自NGINX主进程的进程间消息,执行消息指定的操作。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (10)

1.一种网络请求处理系统,其特征在于,包括会话索引透传模块、消息元数据项保序模块、主动式事件通知模块;所述会话索引透传模块和所述消息元数据项保序模块并行执行;所述会话索引透传模块将会话索引作为NGINX使用到的新文件描述符,NGINX将本身的原文件描述符作为新会话索引找到并访问会话;所述消息元数据项保序模块包括令牌分配器持有的令牌编号和入队检查器持有的入队编号,在消息元数据项入队时检查其所述令牌编号和所述入队编号的一致性;所述主动式事件通知模块包括VPP工作线程主动唤醒NGINX工作进程和NGINX主进程主动唤醒NGINX工作进程,并且NGINX工作进程主动查询用户态共享内存中的布尔变量标记U来确认是否有AF_UNIX域套接字的epoll事件到来。
2.如权利要求1所述的网络请求处理系统,其特征在于,所述消息元数据项保序模块为每个VPP事件队列添加两个变量,分别表示所述令牌分配器持有的令牌编号和所述入队检查器持有的入队编号,所述令牌编号分配给新控制事件消息,所述入队编号用于对新控制事件消息进行入队检查。
3.如权利要求2所述的网络请求处理系统,其特征在于,所述入队编号是易变类型变量,所述令牌编号和所述入队编号均为无符号整数,且同时为无符号int类型或同时为无符号long int类型,初始值均为0。
4.如权利要求3所述的网络请求处理系统,其特征在于,所述消息元数据项保序模块中每个控制事件消息增加局部变量,所述局部变量的值为控制事件消息持有的令牌编号。
5.如权利要求4所述的网络请求处理系统,其特征在于,所述消息元数据项保序模块对于消息元数据项进行保序,包括以下步骤:
步骤1、当一个控制事件消息进入VPP事件队列之前,所述控制事件消息获得所述令牌编号,在所述令牌编号的值分配给所述局部变量后,所述令牌编号+1;
步骤2、消息元数据项入队之前,确定所述局部变量与所述入队编号一致性。
6.如权利要求5所述的网络请求处理系统,其特征在于,所述步骤2包括:如果所述局部变量等于所述入队编号,则所述消息元数据项直接进入元数据项消息队列,同时所述入队编号+1;如果所述局部变量不等于所述入队编号,则所述消息元数据项等待入队。
7.如权利要求1所述的网络请求处理系统,其特征在于,所述主动式事件通知模块为每个NGINX工作进程分配一个代理条件变量、布尔变量标记U和代理线程;所述布尔变量标记U位于用户态共享内存中;所述代理线程负责帮助所述NGINX主进程主动唤醒NGINX工作进程。
8.如权利要求7所述的网络请求处理系统,其特征在于,所述主动式事件通知模块利用VPP提供的用户态epoll阻塞机制,让NGINX在没有网络请求处理时,阻塞在应用事件队列的所述代理条件变量。
9.如权利要求8所述的网络请求处理系统,其特征在于,所述主动式事件通知模块包括:如果没有所述NGINX主进程向NGINX工作进程发送进程间消息时,则所述代理线程阻塞在所述代理条件变量上;如果NGINX主进程向NGINX工作进程发送进程间消息,则将所述布尔变量标记U设置为真,再发送消息,接着NGINX主进程向所述代理条件变量发信号以唤醒所述代理线程,最后所述代理线程帮助唤醒NGINX工作进程。
10.一种网络请求处理方法,其特征在于,基于如权利要求1-9之一所述的网络请求处理系统,包括如下步骤:
S001、响应于网络请求,VPP线程新建一个会话;
S002、VPP线程向接收事件队列中添加新建会话的地址,并向应用事件队列中添加会话被新建的epoll事件消息;
S003、VPP线程主动唤醒睡眠的NGINX工作进程;
S004、NGINX工作进程从应用事件队列中取出epoll事件消息,得知新会话已被创建,于是通过监听会话从接收事件队列中取出新会话的地址放入会话池中;
S005、会话池中的新会话索引被透传给上层NGINX工作进程;
S006、NGINX工作进程把所述新会话索引作为会话文件描述符使用,并通过所述新会话索引访问并处理会话的网络请求;
S007、当NGINX工作进程需要被重启或者关闭时,NGINX主进程将用户态的布尔变量标记U置为真,并向NGINX工作进程发送进程间消息,产生内核epoll事件,然后唤醒NGINX工作进程;
S008、NGINX工作进程被唤醒后,发现布尔变量标记U为真,于是从内核epoll事件队列中取出内核epoll事件,并接收来自NGINX主进程的进程间消息,执行消息指定的操作。
CN202010059255.0A 2020-01-19 2020-01-19 一种网络请求处理系统和方法 Active CN111314429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010059255.0A CN111314429B (zh) 2020-01-19 2020-01-19 一种网络请求处理系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010059255.0A CN111314429B (zh) 2020-01-19 2020-01-19 一种网络请求处理系统和方法

Publications (2)

Publication Number Publication Date
CN111314429A CN111314429A (zh) 2020-06-19
CN111314429B true CN111314429B (zh) 2021-07-13

Family

ID=71160145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010059255.0A Active CN111314429B (zh) 2020-01-19 2020-01-19 一种网络请求处理系统和方法

Country Status (1)

Country Link
CN (1) CN111314429B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112600882B (zh) * 2020-12-01 2022-03-08 上海交通大学 一种基于共享内存通信模式的硬件加速方法
CN113630376B (zh) * 2021-06-16 2023-04-07 新华三信息安全技术有限公司 一种网络安全设备及其处理报文的方法
CN113542156B (zh) * 2021-07-26 2024-03-12 中移(杭州)信息技术有限公司 报文传输方法、装置、终端设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766532A (zh) * 2017-10-27 2018-03-06 深圳市行云易通科技有限公司 一种前端Node.js自动化正静态方法
US10133797B1 (en) * 2013-08-16 2018-11-20 Amazon Technologies, Inc. Distributed heterogeneous system for data warehouse management
CN109962859A (zh) * 2017-12-26 2019-07-02 北京华为数字技术有限公司 一种报文调度方法及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105871867B (zh) * 2016-04-27 2018-01-16 腾讯科技(深圳)有限公司 身份认证方法、系统及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133797B1 (en) * 2013-08-16 2018-11-20 Amazon Technologies, Inc. Distributed heterogeneous system for data warehouse management
CN107766532A (zh) * 2017-10-27 2018-03-06 深圳市行云易通科技有限公司 一种前端Node.js自动化正静态方法
CN109962859A (zh) * 2017-12-26 2019-07-02 北京华为数字技术有限公司 一种报文调度方法及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
移动边缘计算规模部署的技术制约因素和对策;熊先奎 等;《中兴通讯技术 》;20191129;全文 *

Also Published As

Publication number Publication date
CN111314429A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111314429B (zh) 一种网络请求处理系统和方法
CN106161537B (zh) 远程过程调用的处理方法、装置、系统及电子设备
US9524197B2 (en) Multicasting of event notifications using extended socket for inter-process communication
US6826662B2 (en) System and method for data synchronization for a computer architecture for broadband networks
EP1805626B1 (en) External data interface in a computer architecture for broadband networks
CN111427751B (zh) 基于异步处理机制对业务进行处理的方法及系统
US9900275B2 (en) Tracking object across processes
US20060190614A1 (en) Non-homogeneous multi-processor system with shared memory
US20080162877A1 (en) Non-Homogeneous Multi-Processor System With Shared Memory
CN107562685B (zh) 一种基于延时补偿的多核处理器核心间数据交互的方法
US20170041402A1 (en) Method for transparently connecting augmented network socket operations
CN111290842A (zh) 一种任务执行方法和装置
CN110737530B (zh) 一种提升handle标识解析系统收包能力的方法
CN109005465B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN113641507A (zh) 消息中间件的接入方法、消息的处理方法和装置
CN108810645B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN108075989B (zh) 一种基于可扩展协议的负载均衡网络中间件实现方法
Wang et al. Rdmavisor: Toward deploying scalable and simple RDMA as a service in datacenters
CN115480904A (zh) 微内核中系统服务并发调用方法
US20140165073A1 (en) Method and System for Hardware Assisted Semaphores
US10936197B2 (en) Performing memory copy operations by a processor by employing a compression hardware device
CN112732453A (zh) 跨线程消息处理方法、装置、系统和计算机可读存储介质
Rosa et al. INSANE: A Unified Middleware for QoS-aware Network Acceleration in Edge Cloud Computing
US11882057B2 (en) Pluggable cloud security system
CN112749023B (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
GR01 Patent grant
GR01 Patent grant