基于多核平台的负载均衡软件架构及方法

文档序号:7700426阅读:303来源:国知局
专利名称:基于多核平台的负载均衡软件架构及方法
技术领域
本发明涉及一种负载均衡软件架构及方法,特别是关于一种应用于网络负载均 衡中的基于多核平台的负载均衡软件架构及方法。
背景技术
上世纪70年代后,有赖于半导体技术的发展,计算机成本不断降低,越来越 多的人开始使用电脑,随之而来的就是海量信息的交互。网络作为信息交互的主要 载体,也必须满足更高的要求,比如更快的响应时间和更大的流量。当一台服务器 无法满足用户的请求时,就引入了服务器集群。但是服务器集群并没有真正解决问 题,而是把问题转移到了服务器集群中的中心设备——负载均衡设备上。负载均衡 设备常常处于网络边沿,负责将用户请求根据一定算法分配到多个后台服务器上, 然后将后台服务器的响应返还给客户。
一方面,由于几乎所有流量都从负载均衡设备上经过,长时间每秒钟百万次甚 至千万次的TCP层(Transmission Control Protocol传输控制协议)计算对系 统性能无疑是一个严峻的考验。在以往的设计中,有些厂商借用专用的硬件交换机 模块完成这一步,如BIGIP3400:使用两块BCM5692和一块四层ASIC搭建出一块交 换机板附着在主机上,用以将TCP层流量分析剥离主CPU,但是这就意味着昂贵的 造价和复杂的构架。
另外一方面,由于摩尔定律失效,传统半导体技术的发展遇到瓶颈,散热问题 难以解决使得CPU无法继续提高主频,在这样的背景下多核CPU应运而生。由于每 个内核的主频可以比以前低,因此降低了总体功耗,从而回避了散热的问题。但是 如何将单核CPU的运算分配到多核CPU上,有效的并行计算,就成了新的问题。在 以往的多线程计算经历中得到一个普遍的共识,那就是所有线程访问的将是同一个 数据结构,从而使线程间互锁造成性能降低。对于负载均衡设备而言,这种性能降 低将是灾难性的。但是如果可以通过合适的手段,充分利用多核的软件架构替代硬 件,并且使线程间实现无锁,无论是在经济性还是算法上都是一种突破。

发明内容
针对上述问题,本发明的目的是提供一种能够实现多线程无锁的基于多核平台 的负载均衡软件架构及方法,从而显著提高负载均衡设备的负载均衡性能。
为实现上述目的,本发明采取以下技术方案 一种基于多核平台的负载均衡软件架构,其包括以下内容1)采用多核平台和负载均衡设备作为架构元件,并为 负载均衡设备上的每个网卡初始化一个内核线程,作为该网卡的软中断例程,各自 处理所对应网卡的输入和输出,同时将所有内核线程独立化;2)为每两个网卡线 程之间的信息交换建立一个独立的通道,每个通道中建立一组双向环形队列作为多 核平台和负载均衡设备的联结器,环形队列维护一个写指针和一个读指针,分别由 两个线程操作,使线程间消息交换无需加锁;3)在网卡输入的软中断例程中实现 服务器负载均衡的选路策略,并在链路层执行应用层的所有工作。
每组环形队列的个数等于线程个数减去1,且一个环形队列用于向对方线程输 出信息, 一个环形队列用于接受对方线程发来的信息。
一种基于多核平台的负载均衡方法,其包括以下步骤1)在与客户端相连的 客户端网卡收到客户发来的请求后,负载均衡器根据所配置的服务器负载均衡策 略,选取服务端中的一后台服务器,并在该客户端网卡上初始化的线程中建立一条 连接规则;2)客户端网卡将客户端请求和选路信息一起放入与服务端相连的服务 端网卡的环形队列中;3)服务端网卡将环形队列中的客户请求和选路信息一起读 出,并在该服务端网卡上初始化的线程中记录一条反向的连接规则,然后将改写后 的客户请求发给服务端;4)后台服务器做出响应,服务端网卡收到响应,根据记 录中的反向连接规则,找到对应的客户端网卡;5)服务端网卡通过客户端网卡中 的环形队列,将服务端的响应发给客户端线程;6)客户端线程从客户端网卡的环 形队列读取后台服务器响应,发给客户端。
本发明由于采取以上技术方案,其具有以下优点1、由于本发明方法将所有 数据实现了线程独立化,因此不仅保证了在运行时无需和其他线程争抢数据的修改 权,还可以由一个线程依次对多个数据结构进行操作,或者采用业务分离的方式, 将业务分担给多个线程,从而灵活配置硬件资源和软件资源,如,可以使用一个CPU 内核处理一个网卡的数据,也可以使用多个CPU内核处理一个网卡的数据,同时还 可以使用一个CPU内核处理多个网卡的数据。2、由于本发明方法使用多通道双向 环形队列实现多线程之间的通信,完全避免了锁的使用,保证了各个线程间信息交 互的流畅,避免了线程间对同一资源的竞争,使各个线程真正实现了独立运行,并 行计算,充分发挥了多核处理器的优势。3、由于本发明在链路层执行应用层的所 有工作,从而将网络协议栈平面化,最大化的减小了数据在层与层之间传递带来的 损耗,达到了理论上的最优效率。4、本发明将多线程计算应用到负载均衡中,提 供了一种新颖高效的手段实现负载均衡。本发明采用多线程无锁的软件架构实现了 服务器的负载均衡,实践证明,它能够显著地提高负载均衡设备的负载均衡性能。


图1是本发明的负载均衡软件架构示意图
图2是本发明的负载均衡方法流程图
具体实施例方式
下面结合附图和实施例对本发明进行详细的描述。
如图1所示,本发明的负载均衡软件架构包括以下三部分内容
1、 采用多核平台和负载均衡设备作为架构元件,并为负载均衡设备上的每个 网卡初始化一个内核线程(以下简称线程),作为该网卡的软中断例程,各自处理 所对应网卡的输入和输出,同时将所有内核线程独立化,即为每一个线程建立一个 独立的软件运行环境,在运行状态下和其他线程没有相互的干扰,不会去中断其他 线程以取得数据,也不会被其他线程随意打断。
2、 为每两个网卡线程之间的信息交换建立一个独立的通道,每个通道中建立 一组双向环形队列(以下简称环形队列)作为多核平台和负载均衡设备的联结器, 环形队列维护一个写指针和一个读指针,分别由两个线程操作,使线程间消息交换 无需加锁。由于要与其他的每个线程之间都建立环形队列,因此每组环形队列的个 数应该等于线程个数减去1。其中一个环形队列用于向对方线程输出信息(例如环
,队列2-〉1), 一个环形队列用于接受对方线程发来的信息(例如环形队列1->2)。 对同一个环形队列而言,由于线程之间是独立的,两个线程之间建立的环形队列是 封闭的,因此只有一个线程会将信息插入该环形队列,也只有一个线程会从该环形 队列中读取信息。
3、 在网卡输入的软中断例程中实现服务器负载均衡的选路策略(即任务流), 并在链路层执行应用层的所有工作,减少层间数据交换带来的负担。
如图2所示,本发明的负载均衡方法包括以下步骤
步骤1、在与客户端相连的网卡1 (即客户端网卡)收到客户发来的请求后, 负载均衡器根据所配置的服务器负载均衡策略,选取服务端中的一后台服务器,并
在网卡1上初始化的线程中建立一条连接规则,包括从2层到4层连接的全部信息。 步骤2、网卡1将客户端请求和选路信息(即服务器负载均衡策略的结果)一
起放入与服务端相连的网卡2(即服务端网卡)的环形队列中。
步骤3、网卡2将环形队列中的客户请求和选路信息一起读出,并在网卡2上
初始化的线程中记录一条反向的连接规则,然后将改写后的客户请求发给服务端。 步骤4、服务端做出响应,网卡2收到响应,根据记录中的反向连接规则,找
到对应的网卡1。步骤5、网卡2通过网卡1中的环形队列,将服务端的响应发给客户端线程。 步骤6、客户端线程从网卡l的环形队列读取后台服务器响应,发给客户端。 本发明仅以上述实施例进行说明,各部件的结构、设置位置、及其连接都是可
以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别部件进行的
改进和等同变换,均不应排除在本发明的保护范围之外。
权利要求
1、一种基于多核平台的负载均衡软件架构,其包括以下内容1)采用多核平台和负载均衡设备作为架构元件,并为负载均衡设备上的每个网卡初始化一个内核线程,作为该网卡的软中断例程,各自处理所对应网卡的输入和输出,同时将所有内核线程独立化;2)为每两个网卡线程之间的信息交换建立一个独立的通道,每个通道中建立一组双向环形队列作为多核平台和负载均衡设备的联结器,环形队列维护一个写指针和一个读指针,分别由两个线程操作,使线程间消息交换无需加锁;3)在网卡输入的软中断例程中实现服务器负载均衡的选路策略,并在链路层执行应用层的所有工作。
2、 如权利要求1所述的基于多核平台的负载均衡软件架构,其特征在于每 组环形队列的个数等于线程个数减去1,且一个环形队列用于向对方线程输出信息, 一个环形队列用于接受对方线程发来的信息。
3、 一种采用如权利1 2所述软件架构的基于多核平台的负载均衡方法,其包 括以下步骤1) 在与客户端相连的客户端网卡收到客户发来的请求后,负载均衡器根据所 配置的服务器负载均衡策略,选取服务端中的一后台服务器,并在该客户端网卡上 初始化的线程中建立一条连接规则;2) 客户端网卡将客户端请求和选路信息一起放入与服务端相连的服务端网卡 的环形队列中;3) 服务端网卡将环形队列中的客户请求和选路信息一起读出,并在该服务端 网卡上初始化的线程中记录一条反向的连接规则,然后将改写后的客户请求发给服 务端;4) 后台服务器做出响应,服务端网卡收到响应,根据记录中的反向连接规则, 找到对应的客户端网卡;5) 服务端网卡通过客户端网卡中的环形队列,将服务端的响应发给客户端线程;6) 客户端线程从客户端网卡的环形队列读取后台服务器响应,发给客户端。
全文摘要
本发明涉及一种基于多核平台的负载均衡软件架构及方法,其包括以下内容1)采用多核平台和负载均衡设备作为架构元件,并为负载均衡设备上的每个网卡初始化一个内核线程,作为该网卡的软中断例程,各自处理所对应网卡的输入和输出,同时将所有内核线程独立化;2)为每两个网卡线程之间的信息交换建立一个独立的通道,每个通道中建立一组双向环形队列作为多核平台和负载均衡设备的联结器;环形队列维护一个写指针和一个读指针,分别由两个线程操作,使线程间消息交换无需加锁;3)在网卡输入的软中断例程中实现服务器负载均衡的选路策略,并在链路层执行应用层的所有工作。本发明采用多线程无锁的软件架构实现了服务器的负载均衡,实践证明,它能够显著地提高负载均衡设备的性能。
文档编号H04L29/08GK101631139SQ20091008474
公开日2010年1月20日 申请日期2009年5月19日 优先权日2009年5月19日
发明者岭 吉, 吴英明, 张立德, 张雯宇, 柴卓原 申请人:华耀环宇科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1