CN106210058A - 一种多核并行的反向代理方法 - Google Patents

一种多核并行的反向代理方法 Download PDF

Info

Publication number
CN106210058A
CN106210058A CN201610550583.4A CN201610550583A CN106210058A CN 106210058 A CN106210058 A CN 106210058A CN 201610550583 A CN201610550583 A CN 201610550583A CN 106210058 A CN106210058 A CN 106210058A
Authority
CN
China
Prior art keywords
server
port
worker
proxy
client
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.)
Granted
Application number
CN201610550583.4A
Other languages
English (en)
Other versions
CN106210058B (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.)
Chengdu Zhidaochuangyu Information Technology Co Ltd
Original Assignee
Chengdu Zhidaochuangyu Information Technology Co Ltd
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 Chengdu Zhidaochuangyu Information Technology Co Ltd filed Critical Chengdu Zhidaochuangyu Information Technology Co Ltd
Priority to CN201610550583.4A priority Critical patent/CN106210058B/zh
Publication of CN106210058A publication Critical patent/CN106210058A/zh
Application granted granted Critical
Publication of CN106210058B publication Critical patent/CN106210058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

本发明公开了一种多核并行的反向代理方法,包括以下步骤:Worker根据所有服务器的IP、端口计算HASH值,将响应报文分发到自己的服务器作为候选服务器;请求报文到达反向代理节点时,根据源IP和源端口Client_IP、Client_Port计算的HASH值,在相应的Worker上处理;相应的Worker从属于自己的候选服务器中选择一个,将请求发送给服务器,相应的Worker将连接信息记录在本地连接表中;服务器的响应报文到达反向代理节点时,根据源IP和源端口Server_IP、Server_Port计算的HASH值等于前述HASH值,在相应的Worker上处理;Worker从本地连接表找到连接,根据连接信息转换报文五元组为Proxy_IP、Proxy_Port、Client_IP、Client_Port,然后发送给客户端。本发明保证同一条连接的客户端请求报文和服务器响应报文在同一个Worker处理,从而避免了锁的使用。

Description

一种多核并行的反向代理方法
技术领域
本发明涉及网络中反向代理领域,特别涉及一种多核并行的反向代理方法。
背景技术
反向代理是指代替服务器向客户端提供服务的系统,反向代理可提供负载分担功能,代替多个服务器对外提供服务。同时,反向代理上可以提供攻击检测与防护功能,例如Flood攻击防护,避免服务器遭受攻击。现有反向代理组网如图1所示。
如图2所示,在多核平台上,反向代理模块由报文分发模块和多个Worker组成,并发完成反向代理服务,以提高整机的反向代理性能。一般情况下Worker个数与CPU个数相同。
在图2中,报文分发模块根据报文的五元组(源IP、源端口、目的IP、目的端口、协议号)或者三元组(源IP、目的IP、协议号)信息计算HASH值,根据HASH结果,将报文分发到不同的Worker处理。报文分发模块一般由硬件完成,如网卡多报文接收队列、DPDK RSS模块。
如图2所示,报文处理具体流程为:
1、请求报文到达反向代理节点时,其五元组为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议,根据五元组计算的HASH值为1,在Worker1上处理;
2、Worker1从服务器中选择一个,向服务器发起请求,五元组变为Proxy_IP、Proxy_Port、Server_IP、Server_Port、协议。Worker1将连接信息记录在所有Worker共享的全局连接表中,连接信息为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议<->Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议;
3、服务器的响应报文到达反向代理节点时,其五元组为Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,根据五元组计算的HASH值为2,在Worker2上处理;
4、Worker2从全局连接表找到连接,根据连接信息转换报文五元组为Proxy_IP、Proxy_Port、Client_IP、Client_Port、协议,然后发送给客户端。
由于连接信息存储在多Worker共享的全局表中,多Worker并发访问,因此需要使用锁保护。所以多Worker并发访问全局表,需要使用锁保护,编程复杂,容易出错,可维护性差;使用锁保护,性能受锁影响,无法随核个数增加而线性提升。
注:Client指客户端,Proxy指反向代理,Server指服务器。
发明内容
本发明所要解决的技术问题是提供一种多核并行的反向代理方法,预先计算服务器响应报文的Worker,当请求报文到达Worker时,选择和当前Worker相同的候选服务器,发送请求报文。从而保证服务器的响应报文和对应的请求报文在同一个Worker上处理,连接表是Worker本地表,不需要全局锁。
为解决上述技术问题,本发明采用的技术方案是:
一种多核并行的反向代理方法,包括以下步骤:
步骤1、Worker根据所有服务器的IP、端口计算HASH值或者Worker预先遍历端口范围1024~65535,计算五元组Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,即服务器响应报文五元组的HASH值,将响应报文分发到自己的服务器作为候选服务器;
步骤2、请求报文到达反向代理节点时,其五元组为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Client_IP、Client_Port计算的HASH值,在HASH值对应的Worker上处理;
步骤3、步骤2中的Worker从属于自己的候选服务器中选择一个,将请求发送给服务器,五元组变为Proxy_IP、Proxy_Port、Server_IP、Server_Port、协议,Worker还将连接信息记录在本地连接表中,连接信息为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议<->Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议;其中,<->表示双向关系。
步骤4、服务器的响应报文到达反向代理节点时,其五元组为Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Server_IP、Server_Port计算的HASH值与步骤2的HASH值相等,在HASH值对应的Worker上处理;
步骤5、步骤4中的Worker从本地连接表找到连接,根据连接信息转换报文五元组为Proxy_IP、Proxy_Port、Client_IP、Client_Port、协议,然后发送给客户端。
根据上述方案,在将响应报文分发到自己的服务器作为候选服务器的步骤中,为代理Worker分配服务器具体为:服务器的响应报文的源IP、源端口就是服务器IP、服务器端口,根据服务器IP、服务器端口计算hash,使用与报文接收分发模块相同的选择方法得到代理Worker,从而将该服务器分配给该代理Worker。
根据上述方案,若服务器个数小于Worker个数,在服务器上开启多个不同端口的服务,并将同一台服务器的多个服务分配给不同的Worker完成代理。
根据上述方案,若服务器个数大于等于Worker个数的2倍,则为每一个Worker分配至少两个服务器的服务的代理服务;若服务器个数小于Worker个数的2倍,则某一部分服务器开启多个不同端口的服务,并为每一个Worker分配至少两个不同服务器的服务的代理服务。
与现有技术相比,本发明的有益效果是:保证同一条连接的客户端请求报文和服务器响应报文在同一个Worker处理,从而避免了锁的使用;不需要考虑并发访问问题,编程简单,可维护性好;不存在锁冲突,并发性能高,性能随核个数增加而线性增长。
附图说明
图1为反向代理组网示意图。
图2为在多核平台上,现有反向代理实现方式示意图。
图3为本发明一种多核并行的反向代理方法实现方式示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明提供的反向代理方法包括:通过预计算所有服务器的响应报文处理Worker,来确定Worker候选服务器;报文分发模块根据源IP和源端口分发报文,根据所有服务器的IP和端口,计算服务器响应报文的Worker;报文分发模块根据五元组分发报文,通过遍历反向代理的可用端口范围1024~65535,与服务器的IP和端口结合预先计算在指定反向代理的端口情况下服务器响应报文的Worker;通过单台服务器启动多个端口的服务,解决多Worker少服务器的场景等过程。
具体来说,包括:1、一种报文HASH算法,使用报文源IP、源端口计算HASH值;2、报文接收分发模块,根据报文HASH选择不同的代理Worker;3、多个代理worker,每一个代理Worker为一组服务器服务,预先为代理Worker分配服务器。
其中,为代理Worker分配服务器的方法如下:服务器的响应报文的源IP和源端口就是服务器IP、服务器端口,根据服务器IP、服务器端口计算HASH,使用与报文接收分发模块相同的选择方法得到代理Worker,从而将该服务器分配给该代理Worker。
另外,如果服务器个数小于Worker个数,在服务器上开启多个不同端口的服务,并将同一台服务器的多个服务分配给不同的Worker完成代理。
为了避免单服务器节点故障出现无法提供服务的问题,采取以下处理措施:如果服务器个数大于等于Worker个数的2倍,则为每一个Worker分配至少两个服务器的服务的代理服务例如,Worker个数为4,服务器个数为2,则每个服务器都启动2个服务。将服务器1的两个服务分别分配给Worker1和Worker2。将服务器2的两个服务分别分配给Worker3和Worker4;如果服务器个数小于Worker个数的2倍,则某一部分服务器开启多个不同端口的服务,并为每一个Worker分配至少两个不同服务器的服务的代理服务。需要看实际服务器和worker个数,例如服务器为2个,woker为3个。则只需要其中一个服务器开启两个端口的服务,另一个仍然只开启一个端口服务。如果服务器为2个,woker个数为4个,则每个服务器都开启2个端口的服务。
本发明技术方案中,请求报文经过报文接收分发模块分发到代理Worker上处理,代理Worker从属于自己的服务器中选择一个,然后发送请求到该服务器。服务器的响应报文到达反向代理时,必然会分发到与请求报文相同的代理Worker上处理。完整的处理流程如图3所示:
1、Worker根据所有服务器的IP、端口计算HASH值,将响应报文会会分发到自己的服务器作为候选服务器。注:响应报文的源IP、源端口等于服务器的IP、端口。例如:对于Worker1,其候选服务器为服务器1。
2、请求报文到达反向代理节点时,其五元组为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Client_IP、Client_Port计算的HASH值为1,在Worker1上处理。
3、Worker1从属于自己的候选服务器中选择一个,将请求发送给服务器,五元组变为Proxy_IP、Proxy_Port、Server_IP、Server_Port、协议。Worker1将连接信息记录在本地连接表中,连接信息为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议<->Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议。
4、服务器的响应报文到达反向代理节点时,其五元组为Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Server_IP、Server_Port计算的HASH值也为1,在Worker1上处理。
5、Worker1从本地连接表找到连接,根据连接信息转换报文五元组为Proxy_IP、Proxy_Port、Client_IP、Client_Port、协议,然后发送给客户端。
本发明技术方案中,还可采用的方式是:将报文分发模块要按照五元组分发报文到Worker,Worker预先遍历端口范围1024~65535(Worker向服务器发起的请求报文的源端口范围一般是这个),计算五元组Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议的HASH,得出每Worker的候选服务器及源端口。例如:Worker1的候选成员为:(端口为1024、服务器为Server1)、(端口为1026、服务器为Server2)、(端口为1028、服务器为Server1)。
客户端的请求报文达到Worker时,Worker从自己的空闲候选成员中选取一个,设置报文源端口为候选成员中的端口、目的IP和目的端口为候选成员的服务器的IP和端口,并将候选成员状态变为Used(已在使用,其他请求报文不能选择该候选成员),然后发送请求报文给服务器。对应的响应报文必然会到达相同的Worker,该Worker向客户端发送响应报文,过一段时间后将候选成员状态变为Unused,完成回收。

Claims (4)

1.一种多核并行的反向代理方法,其特征在于,包括以下步骤:
步骤1、Worker根据所有服务器的IP、端口计算HASH值或者Worker预先遍历端口范围1024~65535,计算五元组Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,即服务器响应报文五元组的HASH值,将响应报文分发到自己的服务器作为候选服务器;
步骤2、请求报文到达反向代理节点时,其五元组为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Client_IP、Client_Port计算的HASH值,在HASH值对应的Worker上处理;
步骤3、步骤2中的Worker从属于自己的候选服务器中选择一个,将请求发送给服务器,五元组变为Proxy_IP、Proxy_Port、Server_IP、Server_Port、协议,Worker还将连接信息记录在本地连接表中,连接信息为Client_IP、Client_Port、Proxy_IP、Proxy_Port、协议<->Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议;
步骤4、服务器的响应报文到达反向代理节点时,其五元组为Server_IP、Server_Port、Proxy_IP、Proxy_Port、协议,根据源IP和源端口Server_IP、Server_Port计算的HASH值与步骤2的HASH值相等,在HASH值对应的Worker上处理;
步骤5、步骤4中的Worker从本地连接表找到连接,根据连接信息转换报文五元组为Proxy_IP、Proxy_Port、Client_IP、Client_Port、协议,然后发送给客户端。
2.如权利要求1所述的一种多核并行的反向代理方法,其特征在于,在将响应报文分发到自己的服务器作为候选服务器中,为代理Worker分配服务器具体为:服务器的响应报文的源IP、源端口就是服务器IP、服务器端口,根据服务器IP、服务器端口计算hash,使用与报文接收分发模块相同的选择方法得到代理Worker,从而将该服务器分配给该代理Worker。
3.如权利要求1或2所述的一种多核并行的反向代理方法,其特征在于,若服务器个数小于Worker个数,在服务器上开启多个不同端口的服务,并将同一台服务器的多个服务分配给不同的Worker完成代理。
4.如权利要求1或2所述的一种多核并行的反向代理方法,其特征在于,若服务器个数大于等于Worker个数的2倍,则为每一个Worker分配至少两个服务器的服务的代理服务;若服务器个数小于Worker个数的2倍,则某一部分服务器开启多个不同端口的服务,并为每一个Worker分配至少两个不同服务器的服务的代理服务。
CN201610550583.4A 2016-07-13 2016-07-13 一种多核并行的反向代理方法 Active CN106210058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610550583.4A CN106210058B (zh) 2016-07-13 2016-07-13 一种多核并行的反向代理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610550583.4A CN106210058B (zh) 2016-07-13 2016-07-13 一种多核并行的反向代理方法

Publications (2)

Publication Number Publication Date
CN106210058A true CN106210058A (zh) 2016-12-07
CN106210058B CN106210058B (zh) 2019-04-16

Family

ID=57477551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610550583.4A Active CN106210058B (zh) 2016-07-13 2016-07-13 一种多核并行的反向代理方法

Country Status (1)

Country Link
CN (1) CN106210058B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107046503A (zh) * 2017-04-24 2017-08-15 新华三技术有限公司 一种报文传输方法、系统及其装置
CN107196870A (zh) * 2017-07-20 2017-09-22 哈尔滨工业大学 一种基于dpdk的流量动态负载均衡方法
CN108093086A (zh) * 2018-01-22 2018-05-29 微梦创科网络科技(中国)有限公司 一种服务网关的数据传输方法及系统
CN108933829A (zh) * 2018-07-10 2018-12-04 浙江数链科技有限公司 一种负载均衡方法及装置
CN115118713A (zh) * 2022-06-20 2022-09-27 山石网科通信技术股份有限公司 数据处理方法、装置及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100211780A1 (en) * 2009-02-19 2010-08-19 Prakash Umasankar Mukkara Secure network communications
CN102185900A (zh) * 2011-04-18 2011-09-14 北京新媒传信科技有限公司 一种应用服务平台系统和一种开发应用服务的方法
CN102868727A (zh) * 2012-08-23 2013-01-09 广东电子工业研究院有限公司 一种实现逻辑卷高可用性的方法
CN104144223A (zh) * 2014-08-21 2014-11-12 北京奇艺世纪科技有限公司 一种数据获取方法及装置
CN104539645A (zh) * 2014-11-28 2015-04-22 百度在线网络技术(北京)有限公司 一种用于处理http请求的方法与设备
CN104811503A (zh) * 2015-05-21 2015-07-29 龙信数据(北京)有限公司 一种r统计建模系统
CN105338115A (zh) * 2015-11-26 2016-02-17 上海晶赞科技发展有限公司 数据服务器
CN105554160A (zh) * 2016-01-29 2016-05-04 四川长虹电器股份有限公司 一种基于nginx负载均衡的dubbo分布式集群系统架构方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100211780A1 (en) * 2009-02-19 2010-08-19 Prakash Umasankar Mukkara Secure network communications
CN102185900A (zh) * 2011-04-18 2011-09-14 北京新媒传信科技有限公司 一种应用服务平台系统和一种开发应用服务的方法
CN102868727A (zh) * 2012-08-23 2013-01-09 广东电子工业研究院有限公司 一种实现逻辑卷高可用性的方法
CN104144223A (zh) * 2014-08-21 2014-11-12 北京奇艺世纪科技有限公司 一种数据获取方法及装置
CN104539645A (zh) * 2014-11-28 2015-04-22 百度在线网络技术(北京)有限公司 一种用于处理http请求的方法与设备
CN104811503A (zh) * 2015-05-21 2015-07-29 龙信数据(北京)有限公司 一种r统计建模系统
CN105338115A (zh) * 2015-11-26 2016-02-17 上海晶赞科技发展有限公司 数据服务器
CN105554160A (zh) * 2016-01-29 2016-05-04 四川长虹电器股份有限公司 一种基于nginx负载均衡的dubbo分布式集群系统架构方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107046503A (zh) * 2017-04-24 2017-08-15 新华三技术有限公司 一种报文传输方法、系统及其装置
CN107046503B (zh) * 2017-04-24 2020-08-04 新华三技术有限公司 一种报文传输方法、系统及其装置
CN107196870A (zh) * 2017-07-20 2017-09-22 哈尔滨工业大学 一种基于dpdk的流量动态负载均衡方法
CN108093086A (zh) * 2018-01-22 2018-05-29 微梦创科网络科技(中国)有限公司 一种服务网关的数据传输方法及系统
CN108093086B (zh) * 2018-01-22 2021-03-23 微梦创科网络科技(中国)有限公司 一种服务网关的数据传输方法及系统
CN108933829A (zh) * 2018-07-10 2018-12-04 浙江数链科技有限公司 一种负载均衡方法及装置
CN115118713A (zh) * 2022-06-20 2022-09-27 山石网科通信技术股份有限公司 数据处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN106210058B (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN106210058A (zh) 一种多核并行的反向代理方法
Nguyen et al. Decentralized and revised content-centric networking-based service deployment and discovery platform in mobile edge computing for IoT devices
US20110202604A1 (en) Methods, systems, and computer readable media for source peer capacity-based diameter load sharing
CN110351246A (zh) 服务器集群系统Socket管理方法及装置
EP2913978A1 (en) Business scheduling method and apparatus and convergence device
CN103475566A (zh) 一种实时消息交换平台及分布式集群组建方法
US9538440B2 (en) Method and system of changing service points
CN107528891B (zh) 一种基于WebSocket的自动集群方法及其系统
US9621412B2 (en) Method for guaranteeing service continuity in a telecommunication network and system thereof
CN112492574B (zh) 一种负载迁移方法、装置及系统
US10979317B2 (en) Service registration method and usage method, and related apparatus
CN105656964B (zh) 数据推送的实现方法及装置
CN103220165B (zh) 一种服务器主动宕机的处理方法和装置
CN111541765B (zh) 一种用于多级路由调度的方法及系统
US10027577B2 (en) Methods, systems, and computer readable media for peer aware load distribution
US9729454B2 (en) Methods, systems, and computer readable media for balancing diameter message traffic received over long-lived diameter connections
CN104901999B (zh) 一种可靠性感知的虚拟数据中心跨域映射方法
WO2010127625A2 (zh) 坐席的处理方法、交换机及呼叫中心
WO2013097636A1 (en) Establishing dynamic connection
CN105554126A (zh) 一种通过cdn加速机制实现多数据中心分布式部署的方法
CN107968825B (zh) 一种报文转发控制方法及装置
WO2016206433A1 (zh) 服务器负载均衡的方法及装置
CN107682265B (zh) 支付系统的报文路由方法及装置
Strykhalyuk et al. Service Providing by Using a Structure Stability Algorithm in a Virtualized Data Center Based оn Cloud Technology
CN113727138A (zh) 一种hls内网回源方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 9/F, Building C, No. 28, North Tianfu Avenue, China (Sichuan) Pilot Free Trade Zone, Hi tech Zone, Chengdu, 610000, Sichuan

Patentee after: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 8th Floor, Building 5, No. 801, Middle Section of Tianfu Avenue, High tech Zone, Chengdu City, Sichuan Province, 610000

Patentee before: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder