一种基于DPDK技术的Nginx配置热更新系统和方法技术方案

技术编号:24167839 阅读:64 留言:0更新日期:2020-05-16 01:59
本发明专利技术提出了一种基于DPDK技术的Nginx配置热更新系统和方法,所述系统包括:用户态、内核态以及底层硬件模块;用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;当所述系统接收用户对Nginx原始配置文件的修改指令时,将生成Nginx更新配置文件,并产生相应的Nginx配置文件更新指令;由用户态的主进程接收所述Nginx配置文件更新指令,并将其通知给主进程管理的所有工作进程;由各个工作进程根据Nginx配置文件更新指令重读Nginx更新配置文件与Nginx原始配置文件;各个工作进程分别对比Nginx更新配置文件与Nginx原始配置文件,并确定出差异信息;Nginx应用层根据差异信息关闭无效的监听端口,和/或,打开新增的监听端口。本发明专利技术能够提供高性能的web服务和反向代理服务。

【技术实现步骤摘要】
一种基于DPDK技术的Nginx配置热更新系统和方法
本专利技术涉及DPDK
,尤其涉及一种基于DPDK技术的Nginx配置热更新系统和方法。
技术介绍
DPDK全称为Dateplanedevelopmentkit,是一个用来进行包数据处理加速的软件库。DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。Nginx是一款高性能的HTTP和反向代理web服务器。Nginx具有占有内存少,并发能力强的优点,事实上Nginx的并发能力在同类型的网页服务器中表现较好,在互联网企业的网站中得到了较为广泛的应用。Nginx作为负载均衡服务:Nginx既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比较好。传统的基于linux、Unix和windows等操作系统网络IO和协议栈的Nginx更新配置采用的方案是重启工作进程的方式使新配置生效(nginx–sreload),如图1所示。但当基于DPDK技术和用户态协议时,因为DPDK内存管理机制和进程管理机制的限制,Nginx重启工作进程时间较长,容易造成业务中断。
技术实现思路
为了解决上述问题,有必要提供一种基于DPDK技术的Nginx配置热更新系统和方法。本专利技术第一方面提出一种基于DPDK技术的Nginx配置热更新系统,所述系统包括:用户态、内核态以及底层硬件模块;所述底层硬件模块用于存储Nginx配置文件;所述用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;所述Nginx应用层,根据Nginx配置文件提供web服务和反向代理服务;所述用户态协议栈,用于对收发包进行协议解析或协议封装处理;所述DPDK驱动层,采用自身提供的数据面库绕过内核态协议栈,以进行收发包处理;所述内核态,根据所述用户态的需求,用于代替访问存储于所述底层硬件模块中的Nginx配置文件;当所述系统接收用户对Nginx原始配置文件的修改指令时,将生成Nginx更新配置文件,并产生相应的Nginx配置文件更新指令;由用户态的主进程接收所述Nginx配置文件更新指令,并将其通知给所述主进程管理的所有工作进程;由各个工作进程根据所述Nginx配置文件更新指令重读所述Nginx更新配置文件与Nginx原始配置文件;各个工作进程分别对比所述Nginx更新配置文件与Nginx原始配置文件,并确定出差异信息;所述Nginx应用层根据所述差异信息关闭无效的监听端口,和/或,打开新增的监听端口。进一步的,所述差异信息表征为:所述Nginx更新配置文件相较于所述Nginx原始配置文件新增的部分配置信息;或所述Nginx更新配置文件相较于所述Nginx原始配置文件减少的部分配置信息;或所述Nginx更新配置文件相较于所述Nginx原始配置文件变更的部分配置信息。进一步的,所述Nginx应用层和所述DPDK驱动层共享内核态的一个进程。进一步的,所述底层硬件模块为硬盘和/或内存。进一步的,所述工作进程至少为两个。本专利技术第二方面还提出一种基于DPDK技术的Nginx配置热更新方法,所述方法包括:配置用户态、内核态以及底层硬件模块;其中,所述底层硬件模块用于存储Nginx配置文件;所述用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;所述Nginx应用层,根据Nginx配置文件提供web服务和反向代理服务;所述用户态协议栈,用于对收发包进行协议解析或协议封装处理;所述DPDK驱动层,采用自身提供的数据面库绕过内核态协议栈,以进行收发包处理;所述内核态,根据所述用户态的需求,用于代替访问存储于所述底层硬件模块中的Nginx配置文件;接收用户对Nginx原始配置文件的修改指令,生成Nginx更新配置文件,并产生相应的Nginx配置文件更新指令;由主进程接收所述Nginx配置文件更新指令,并将其通知给所述主进程管理的所有工作进程;由各个工作进程根据所述Nginx配置文件更新指令重读所述Nginx更新配置文件与Nginx原始配置文件;各个工作进程分别对比所述Nginx更新配置文件与Nginx原始配置文件,并确定出差异信息;根据所述差异信息关闭无效的监听端口,和/或,打开新增的监听端口。进一步的,所述差异信息表征为:所述Nginx更新配置文件相较于所述Nginx原始配置文件新增的部分配置信息;或所述Nginx更新配置文件相较于所述Nginx原始配置文件减少的部分配置信息;或所述Nginx更新配置文件相较于所述Nginx原始配置文件变更的部分配置信息。进一步的,所述Nginx应用层和所述DPDK驱动层共享内核态的一个进程。进一步的,所述底层硬件模块为硬盘和/或内存。进一步的,所述工作进程至少为两个。本专利技术的基于DPDK技术的Nginx配置热更新系统和方法,可以无需启动新的工作进程,并使用当前的工作进程即可使Nginx更新配置文件生效,由于上述过程未发生工作进程的重启,相应的业务也不会发生中断,进而实现了高性能的web服务和反向代理服务。同时,本专利技术的DPDK驱动层和用户态协议栈提供了高性能的网络吞吐能力,节省了硬件资源和网络资源,降低了组网难度,产生一定的经济效益和社会效益。本专利技术的附加方面和优点将在下面的描述部分中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1示出了现有技术的Nginx配置更新的方法流程图;图2示出了本专利技术一种基于DPDK技术的Nginx配置热更新系统的框图;图3示出了本专利技术一种基于DPDK技术的Nginx配置热更新方法的流程图。具体实施方式为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和具体实施方式对本专利技术进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是,本专利技术还可以采用其他不同于在此描述的其他方式来实施,因此,本专利技术的保护范围并不受下面公开的具体实施例的限制。图2示出本专利技术一种基于DPDK技术的Nginx配置热更新系统的框图。如图2所示,本专利技术第一方面提出一种基于DPDK技术的Nginx配置热更新系统,所述系统包括:用户态、内核态以及底层硬件模块;所述底层硬件模块用于存储Nginx配置文件;所述用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;所述Nginx应用层本文档来自技高网...

【技术保护点】
1.一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述系统包括:用户态、内核态以及底层硬件模块;所述底层硬件模块用于存储Nginx配置文件;所述用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;所述Nginx应用层,根据Nginx配置文件提供web服务和反向代理服务;所述用户态协议栈,用于对收发包进行协议解析或协议封装处理;所述DPDK驱动层,采用自身提供的数据面库绕过内核态协议栈,以进行收发包处理;所述内核态,根据所述用户态的需求,用于代替访问存储于所述底层硬件模块中的Nginx配置文件;/n当所述系统接收用户对Nginx原始配置文件的修改指令时,将生成Nginx更新配置文件,并产生相应的Nginx配置文件更新指令;/n由用户态的主进程接收所述Nginx配置文件更新指令,并将其通知给所述主进程管理的所有工作进程;/n由各个工作进程根据所述Nginx配置文件更新指令重读所述Nginx更新配置文件与Nginx原始配置文件;/n各个工作进程分别对比所述Nginx更新配置文件与Nginx原始配置文件,并确定出差异信息;/n所述Nginx应用层根据所述差异信息关闭无效的监听端口,和/或,打开新增的监听端口。/n...

【技术特征摘要】
1.一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述系统包括:用户态、内核态以及底层硬件模块;所述底层硬件模块用于存储Nginx配置文件;所述用户态包括Nginx应用层、用户态协议栈、DPDK驱动层;所述Nginx应用层,根据Nginx配置文件提供web服务和反向代理服务;所述用户态协议栈,用于对收发包进行协议解析或协议封装处理;所述DPDK驱动层,采用自身提供的数据面库绕过内核态协议栈,以进行收发包处理;所述内核态,根据所述用户态的需求,用于代替访问存储于所述底层硬件模块中的Nginx配置文件;
当所述系统接收用户对Nginx原始配置文件的修改指令时,将生成Nginx更新配置文件,并产生相应的Nginx配置文件更新指令;
由用户态的主进程接收所述Nginx配置文件更新指令,并将其通知给所述主进程管理的所有工作进程;
由各个工作进程根据所述Nginx配置文件更新指令重读所述Nginx更新配置文件与Nginx原始配置文件;
各个工作进程分别对比所述Nginx更新配置文件与Nginx原始配置文件,并确定出差异信息;
所述Nginx应用层根据所述差异信息关闭无效的监听端口,和/或,打开新增的监听端口。


2.根据权利要求1所述的一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述差异信息表征为:
所述Nginx更新配置文件相较于所述Nginx原始配置文件新增的部分配置信息;或
所述Nginx更新配置文件相较于所述Nginx原始配置文件减少的部分配置信息;或
所述Nginx更新配置文件相较于所述Nginx原始配置文件变更的部分配置信息。


3.根据权利要求1所述的一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述Nginx应用层和所述DPDK驱动层共享内核态的一个进程。


4.根据权利要求1所述的一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述底层硬件模块为硬盘和/或内存。


5.根据权利要求1所述的一种基于DPDK技术的Nginx配置热更新系统,其特征在于,所述工作进程至少为两个。...

【专利技术属性】
技术研发人员:侯田冀博李昭熹马骥孙晓鹏彭金辉廖正赟
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1