一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络负载均衡方法、装置、计算机设备和存储介质与流程

2021-12-04 01:12:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种基于ebpf技术实现的网络负载均衡方法、装置、计算机设备和存储介质。


背景技术:

2.在web世界中,负载均衡(load balancing,简称lb)是一种网络设备的集群技术,它通过将特定的业务(网络服务、网络流量等)分担到多个网络设备上,在提高业务处理能力的同时,保证服务的高可用性。
3.由于负载均衡设备通常位于关键入站路径上,需要处理每个入站数据包,因而其性能对管理延迟和扩展后端服务器的数量来说特别重要。传统上,通常使用基于硬件的解决方案来完成此项任务,其通过专用加速器来减轻主cpu的负担。然而,专用加速器的价格昂贵,并且在系统部署维护升级等方面缺乏延展性和灵活性,从用户使用角度来说,较为不便。
4.基于软件的网络负载均衡系统对上述缺点有所改善,软件负载均衡系统拥有相对灵活的弹性架构,通常可以运行于任何云平台或大众化linux服务器上,并且能够与特定服务器上的其他服务共存,这就允许用户在当前已部署的大批服务器上进行部署,既避免了对专用设备的依赖,也能够以低干扰的方式维护升级,这更有利于用户产品的快速迭代和持续演进。
5.然而,基于软件的网络负载均衡系统在高并发场景中通常存在性能不足的问题,这样就严重限制了其应用范围。
6.为此,本技术人经过有益的探索和研究,找到了解决上述问题的方法,下面将要介绍的技术方案便是在这种背景下产生的。


技术实现要素:

7.本发明所要解决的技术问题之一在于:针对现有技术的不足而提供一种提高性能的基于ebpf技术实现的网络负载均衡方法。
8.本发明所要解决的技术问题之二在于:提供一种实现上述网络负载均衡方法的网络负载均衡装置。
9.本发明所要解决的技术问题之三在于:提供一种实现上述网络负载均衡方法的计算机设备。
10.本发明所要解决的技术问题之四在于:提供一种实现上述网络负载均衡方法的计算机可读存储介质。
11.作为本发明第一方面的一种网络负载均衡方法,包括以下步骤:
12.编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
13.将所述ebpf负载分发源程序编译成bpf字节码;
14.将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
15.当所述目标负载均衡网卡接收到来自客户端发送的连接请求时,所述目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包;
16.所述ebpf负载分发逻辑根据所述数据包确定真实服务器地址信息和需要转发所述数据包所使用的目标网卡端口;以及
17.所述ebpf负载分发逻辑通过所述目标网卡端口将所述数据包转发至所述真实服务器地址信息所对应的真实服务器。
18.在本发明的一个优选实施例中,所述ebpf负载分发逻辑根据所述数据包确定真实服务器地址信息和需要转发所述数据包所使用的目标网卡端口,包括以下步骤:
19.所述ebpf负载分发逻辑根据所述数据包的五元组信息从真实服务器节点池中选择出需要转发的真实服务器地址信息,并对所述数据包的目标ip和目标port进行修改;以及
20.所述ebpf负载分发逻辑以真实服务器地址信息为主键对路由表进行查询,以查找出需要转发所述数据包所使用的目标网卡端口。
21.在本发明的一个优选实施例中,还包括以下步骤:
22.当真实服务器接收到所述数据包产生响应时,接收所述真实服务器采用nat模式返回的响应内容,并将所述响应内容转发至客户端。
23.在本发明的一个优选实施例中,所述ebpf负载分发源程序通过bcc工具或c语言进行编写。
24.在本发明的一个优选实施例中,所述ebpf负载分发源程序通过clang工具编译成bpf字节码。
25.在本发明的一个优选实施例中,使用标准加载器iproute2或自定义加载器将编译后的bpf字节码加载至目标负载均衡网卡。
26.作为本发明第二方面的一种实现上述网络负载均衡方法的网络负载均衡装置,包括:
27.编写模块,所述编写模块用于编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
28.编译模块,所述编译模块用于将ebpf负载分发源程序编译成bpf字节码;
29.加载模块,所述加载模块用于将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
30.触发模块,所述触发模块用于当所述目标负载均衡网卡接收到来自客户端发送的连接请求时,使得目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并使得目标负载均衡网卡接收来自客户端的数据包;
31.信息确定模块,所述信息确定模块用于使得所述ebpf负载分发逻辑根据所述数据包确定真实服务器地址信息和需要转发所述数据包所使用的目标网卡端口;以及
32.数据包转发模块,所述数据包转发模块用于使得所述ebpf负载分发逻辑通过所述目标网卡端口将所述数据包转发至所述真实服务器地址信息所对应的真实服务器。
33.在本发明的一个优选实施例中,所述网络负载均衡装置还包括响应模块,所述响应模块用于当真实服务器接收到所述数据包产生响应时,接收所述真实服务器采用nat模式返回的响应内容,并将所述响应内容转发至客户端。
34.作为本发明第三方面的一种实现上述网络负载均衡方法的计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
35.编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
36.将所述ebpf负载分发源程序编译成bpf字节码;
37.将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
38.当所述目标负载均衡网卡接收到来自客户端发送的连接请求时,所述目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包;
39.所述ebpf负载分发逻辑根据所述数据包确定真实服务器地址信息和需要转发所述数据包所使用的目标网卡端口;以及
40.所述ebpf负载分发逻辑通过所述目标网卡端口将所述数据包转发至所述真实服务器地址信息所对应的真实服务器。
41.作为本发明第四方面的一种实现上述网络负载均衡方法的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
42.编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
43.将所述ebpf负载分发源程序编译成bpf字节码;
44.将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
45.当所述目标负载均衡网卡接收到来自客户端发送的连接请求时,所述目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包;
46.所述ebpf负载分发逻辑根据所述数据包确定真实服务器地址信息和需要转发所述数据包所使用的目标网卡端口;以及
47.所述ebpf负载分发逻辑通过所述目标网卡端口将所述数据包转发至所述真实服务器地址信息所对应的真实服务器。
48.由于采用了如上技术方案,本发明的有益效果在于:
49.1.本发明利用ebpf技术使得负载分发操作直接在网卡层面实现,绕过了冗长的内核网络协议栈,因而拥有极其高效的数据包处理能力,很好地解决了原有软件负载均衡技术存在的性能不足问题。
50.2.本发明能够与服务器上的其他服务共存,这样就避免了运行负载均衡系统的专用服务器,因而提高了部署和升级的灵活性。
51.3.本发明允许低干扰维护,ebpf技术支持原子替换升级,可以在不造成处理流程中断的情况下进行维护升级,能够更好地服务于产品更新和服务迭代。
附图说明
52.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1是本发明的网络负载均衡方法的一种实施例的应用场景图。
54.图2是本发明的网络负载均衡方法的流程图。
55.图3是本发明的网络负载均衡装置的一种实施例的结构示意图。
56.图4是本发明的计算机设备的内部结构图。
具体实施方式
57.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
58.本发明提供的网络负载均衡方法可以应用于如图1所示的应用环境中。客户端10通过网络向服务器20发起请求,为了提供稳定可靠流畅的访问体验,通常在客户端10和服务器20之间增设负载均衡设备30(load balancer)。当负载均衡设备30接收到客户端10的连接请求后,负载均衡设备30通过一定的负载策略选择出一台真实服务器20并转发请求给它,真实服务器20接收到请求后进行处理,可采用nat模式将响应返回给客户端10。本发明利用ebpf技术使得负载分发操作直接在网卡层面实现,绕过了冗长的内核网络协议栈,因而拥有极其高效的数据包处理能力,很好地解决了原有软件负载均衡技术存在的性能不足问题。
59.需要说明的是:bpf(berkeley packet filter)技术,最初构想于1992年,其目的是提供一种包过滤方法:通过从用户空间向内核注入字节码的方式,对每个接收包进行过滤。随后,该技术被移植到了linux上,并与内核中的即时编译技术(jit)相结合,使bpf成了一个性能卓越的技术,被应用于tcpdump等应用上。2013年,bpf技术得到进一步改造,并被重命名为ebpf(extended berkeley packet filter),将以前的bpf称为cbpf(classic berkeley packet filter)。相较于cbpf,ebpf更接近于原生机器语言,性能更加卓越。xdp(express data path)是linux内核提供的一种高性能数据包处理路径,借助ebpf技术,它能够让内核实现可编程的数据包处理,从而以一种很高效的方式去执行负载均衡等包处理任务。
60.具体地,参见图2,图中给出的是一种网络负载均衡方法,包括以下步骤:
61.步骤s10,编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑。在本实施例中,ebpf负载分发源程序通过bcc工具或c语言进行编写。
62.步骤s20,将ebpf负载分发源程序编译成bpf字节码。在本实施例中,ebpf负载分发源程序通过clang工具编译成bpf字节码。
63.步骤s30,将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡。在本实施例中,使用标准加载器iproute2或自定义加载器将编译后的bpf字节码加载至目标负载均衡网卡。
64.步骤s40,当目标负载均衡网卡接收到来自客户端发送的连接请求时,目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包。
65.步骤s50,ebpf负载分发逻辑根据数据包确定真实服务器地址信息和需要转发数据包所使用的目标网卡端口。
66.步骤s60,ebpf负载分发逻辑通过目标网卡端口将数据包转发至真实服务器地址信息所对应的真实服务器。
67.在步骤s50中,ebpf负载分发逻辑根据数据包确定真实服务器地址信息和需要转发数据包所使用的目标网卡端口,包括以下步骤:
68.步骤s51,ebpf负载分发逻辑根据数据包的五元组信息从真实服务器节点池中选择出需要转发的真实服务器地址信息,并对数据包的目标ip和目标port进行修改。其中,五元组信息包括源ip、目的ip、源port、目的port、传输层协议,即(src ip,src port,dst ip,dst port,protocol)。
69.步骤s52,ebpf负载分发逻辑以真实服务器地址信息为主键对路由表进行查询,以查找出需要转发数据包所使用的目标网卡端口。
70.本发明的网络负载均衡方法,还包括步骤s70,当真实服务器接收到数据包产生响应时,接收真实服务器采用nat模式返回的响应内容,并将响应内容转发至客户端。
71.参见图3,图中给出的是一种实现上述网络负载均衡方法的网络负载均衡装置,包括编写模块100、编译模块200、加载模块300、触发模块400、信息确定模块500、数据包转发模块600以及响应模块700。
72.编写模块100用于编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑。编译模块200用于将ebpf负载分发源程序编译成bpf字节码。加载模块300用于将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡。触发模块400用于当目标负载均衡网卡接收到来自客户端发送的连接请求时,使得目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并使得目标负载均衡网卡接收来自客户端的数据包。信息确定模块500用于使得ebpf负载分发逻辑根据数据包确定真实服务器地址信息和需要转发数据包所使用的目标网卡端口。数据包转发模块600用于使得ebpf负载分发逻辑通过目标网卡端口将数据包转发至真实服务器地址信息所对应的真实服务器。响应模块700用于当真实服务器接收到数据包产生响应时,接收真实服务器采用nat模式返回的响应内容,并将响应内容转发至客户端。
73.本发明的网络负载均衡装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
74.本发明还提供了一种用于实现上述网络负载均衡方法的计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用户信息、记录信息和文件等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种上述的网络负载均衡方法。
75.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
76.具体地,本发明的计算机设备包括存储器和处理器,该存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
77.编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
78.将ebpf负载分发源程序编译成bpf字节码;
79.将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
80.当目标负载均衡网卡接收到来自客户端发送的连接请求时,目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包;
81.ebpf负载分发逻辑根据数据包确定真实服务器地址信息和需要转发数据包所使用的目标网卡端口;
82.ebpf负载分发逻辑通过目标网卡端口将数据包转发至真实服务器地址信息所对应的真实服务器;以及
83.当真实服务器接收到数据包产生响应时,接收真实服务器采用nat模式返回的响应内容,并将响应内容转发至客户端。
84.本发明还提供了一种用于实现上述网络负载均衡方法的计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
85.编写ebpf负载分发源程序,以实现基于ebpf技术的负载分发逻辑;
86.将ebpf负载分发源程序编译成bpf字节码;
87.将编译后的bpf字节码加载至负载均衡设备上的目标负载均衡网卡;
88.当目标负载均衡网卡接收到来自客户端发送的连接请求时,目标负载均衡网卡触发已加载的ebpf负载分发逻辑,并接收来自客户端的数据包;
89.ebpf负载分发逻辑根据数据包确定真实服务器地址信息和需要转发数据包所使用的目标网卡端口;
90.ebpf负载分发逻辑通过目标网卡端口将数据包转发至真实服务器地址信息所对应的真实服务器;以及
91.当真实服务器接收到数据包产生响应时,接收真实服务器采用nat模式返回的响应内容,并将响应内容转发至客户端。
92.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
93.以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献