CN107872538B - 解耦tcp长连接的业务处理方法、反向代理和业务服务器 - Google Patents

解耦tcp长连接的业务处理方法、反向代理和业务服务器 Download PDF

Info

Publication number
CN107872538B
CN107872538B CN201711288053.8A CN201711288053A CN107872538B CN 107872538 B CN107872538 B CN 107872538B CN 201711288053 A CN201711288053 A CN 201711288053A CN 107872538 B CN107872538 B CN 107872538B
Authority
CN
China
Prior art keywords
service
client
message
server
reverse proxy
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
CN201711288053.8A
Other languages
English (en)
Other versions
CN107872538A (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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201711288053.8A priority Critical patent/CN107872538B/zh
Publication of CN107872538A publication Critical patent/CN107872538A/zh
Application granted granted Critical
Publication of CN107872538B publication Critical patent/CN107872538B/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/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了解耦TCP长连接的业务处理方法、反向代理和业务服务器,在装置的整个系统架构中,客户端连接到反向代理服务器,通过反向代理服务器与业务服务器交互,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式,该TCP长连接是稳定长连接。反向代理服务器获取客户端发送的第一应用请求对应的第一报文,所述反向代理服务器在所述第一报文中增加所述客户端的属性信息,获得包括所述客户端的属性信息的第二报文;业务服务器接收并对第二报文进行业务处理。这样达到了在业务协议之上扩展客户端的属性信息例如自定义五元组信息,实现业务与链路解耦的目的,从而方便整体业务服务的升级与扩容的技术效果。

Description

解耦TCP长连接的业务处理方法、反向代理和业务服务器
技术领域
本发明涉及计算机技术领域,尤其涉及解耦TCP长连接的业务处理方法、反向代理和业务服务器。
背景技术
在计算机网络中,反向代理(Reverse Proxy)是代理服务器的一种。它根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。具体地,例如反向代理方式是指以代理服务器来接受Internet上的请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
TCP(Transmission Control Protocol传输控制协议)长连接具体为,当网络通信时采用TCP协议时,双方完成三次握手后建立的TCP链路,系统间可通过该链路做多次网络交互,同时通过约定应用层心跳包来维持链路状态。
Redis,Redis是一个高性能的key-value数据库。
现有的反向代理技术,当客户端通过反向代理服务器与业务服务建立了长连接,在业务服务异常或者必要的升级重启场景下,会导致客户端的TCP长连接断开,从而引发重连。常规的反向代理不关注业务内容,直接将消息透明转发至后端,同时在维护客户端与后端业务服务的链路,当后端服务异常时,代理维护的客户端TCP长连接随之断开。
可见,现有技术中至少存在如下技术问题,业务服务器重启而影响前端即客户端的TCP长连接的问题。
发明内容
本发明实施例通过提供解耦TCP长连接的业务处理方法、反向代理和业务服务器,用于解决现有技术中业务服务器重启而影响前端即客户端的TCP长连接的技术问题。
第一方面,本发明一实施例提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
反向代理服务器获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
所述反向代理服务器在所述第一报文中增加所述客户端的属性信息,获得包括所述客户端的属性信息的第二报文;
所述反向代理服务器将所述第二报文转发给业务服务器。
第二方面,本发明一实施例提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;
所述业务服务器基于所述第二报文进行业务处理。
可选的,在所述业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文之后,所述方法还包括:
所述业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;
所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。
可选的,所述业务服务器基于所述第二报文进行业务处理,包括:
所述业务服务器根据所述第二报文解析所述客户端的业务ID;
若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询所述数据库,获取所述业务ID;
根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理。
可选的,在所述根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理之后,所述方法还包括:
若所述业务服务器完成所述第一应用请求对应的业务处理,所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
第三方面,本发明一实施例提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
在业务服务器需要向客户端发送第一应用通知时,所述业务服务器根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
所述业务服务器将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
第四方面,本发明一实施例提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
反向代理服务器接收业务服务器发送的第四报文,其中,所述第四报文是所述业务服务器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;
所述反向代理服务器将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
所述反向代理服务器将所述第五报文发送至所述客户端。
第五方面,本发明一实施例提供了一种反向代理服务器,所述服务器包括:
第一获取模块,用于获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
第二获取模块,用于在所述第一报文中增加所述客户端的属性信息,获取包括所述客户端的属性信息的第二报文;
转发模块,用于将所述第二报文转发给业务服务器。
第六方面,本发明一实施例提供了一种业务服务器,所述业务服务器包括:
第一接收模块,用于接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;
业务处理模块,用于基于所述第二报文进行业务处理。
可选的,所述业务服务器还包括:
解析模块,用于在所述业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文之后,所述业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;
第一更新模块,用于所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。
可选的,所述业务处理模块,包括:
解析子模块,用于所述业务服务器根据所述第二报文解析所述客户端的业务ID;
获取子模块,用于若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询所述数据库,获取所述业务ID;
业务处理子模块,用于根据所述业务ID,进行与所述第一应用请求对应的业务处理。
可选的,所述业务服务器还包括:
第二更新模块,用于在所述根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理之后,若所述业务服务器完成所述第一应用请求对应的业务处理,所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
第七方面,本发明一实施例提供了一种业务服务器,所述业务服务器包括:
获取模块,用于在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
第一发送模块,用于将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
第八方面,本发明一实施例提供了一种反向代理服务器,所述反向代理服务器包括:
第二接收模块,用于接收业务服务器发送的第四报文,其中,所述第四报文是所述业务服务器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;
删除模块,用于将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
第二发送模块,用于将所述第五报文发送至所述客户端。
第九方面,本发明一实施例提供了一种计算机装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面至第四方面实施例中所述方法的步骤。
第十方面,本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面至第四方面实施例中所述方法的步骤。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
采用本发明提供的技术方案,达到了在业务协议之上扩展客户端的属性信息例如自定义五元组信息,实现业务与链路解耦的目的,从而方便整体业务服务的升级与扩容的技术效果。
附图说明
图1A为本发明实施例提供的包括反向代理和业务服务器的整体系统架构图;
图1B为本发明实施例提供的解耦TCP长连接的业务处理方法的第一流程图;
图1C为本发明实施例提供的解耦TCP长连接的业务处理方法的第二流程图;
图2A为本发明实施例提供的解耦TCP长连接的业务处理方法的第三流程图;
图2B为本发明实施例提供的解耦TCP长连接的业务处理方法的第四流程图;
图3为本发明实施例提供的解耦TCP长连接的业务处理方法的第五流程图;
图4A为本发明实施例提供的解耦TCP长连接的业务处理方法的第六流程图;
图4B为本发明实施例提供的解耦TCP长连接的业务处理方法的第七流程图;
图5为本发明实施例提供的反向代理服务器的第一示意图;
图6为本发明实施例提供的业务服务器的第一示意图;
图7为本发明实施例提供的业务服务器的第二示意图;
图8为本发明实施例提供的反向代理服务器的第二示意图。
具体实施方式
为了解决上述技术问题,本发明实施例中的技术方案的总体思路如下:解耦TCP长连接的业务处理方法、反向代理和业务服务器,如图1A所示,在装置的整个系统架构中,客户端连接到反向代理服务器,通过反向代理服务器与业务服务器交互,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式,该TCP长连接是稳定长连接。在装置的整个系统架构中,反向代理系统中的反向代理服务器可以是多个,业务系统中的业务服务器的数量也可以是多个,在图1中以两个客户端、两个反向代理服务器、两个业务服务器为例。该装置还可以包括与业务服务器连接的数据库,该数据库具体可以是Redis,或者是其他类型的数据库,其中Redis是一个支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
本实施例具体提供的方法包括:反向代理服务器获取客户端发送的第一应用请求对应的第一报文,所述反向代理服务器在所述第一报文中增加所述客户端的属性信息,获得包括所述客户端的属性信息的第二报文;所述反向代理服务器将所述第二报文转发给业务服务器。业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;所述业务服务器基于所述第二报文进行业务处理。这样达到了在业务协议之上扩展客户端的属性信息例如自定义五元组信息,实现业务与链路解耦的目的,从而方便整体业务服务的升级与扩容的技术效果。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
如图1B所示,本发明实施例一提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
S101,反向代理服务器获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
S102,所述反向代理服务器在所述第一报文中增加所述客户端的属性信息,获得包括所述客户端的属性信息的第二报文;
S103,所述反向代理服务器将所述第二报文转发给业务服务器。
具体地,如图1C所示,反向代理系统中的反向代理服务器负责维护与客户端的稳定长连接,在客户端向反向代理服务器发出信令请求长连接时,反向代理服务器建立自身与客户端之间的TCP长连接。在客户端向反向代理服务器发送第一应用请求,该请求以第一报文的形式发出,反向代理服务器根据配置的TCP组包规则,根据规则拼接报文完成报文解析,同时对客户端发送的第一报文扩展,在第一报文中增加已知客户端属性(五元组:对端IP、对端端口、协议类型、本地IP、本地端口)后获取第二报文,将第二报文转发至后端业务系统。
如图2A所示,本发明实施例二提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
S201,业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;
S202,所述业务服务器基于所述第二报文进行业务处理。
具体地,沿用前述实例,在图1C中,反向代理服务器将增加了客户端的属性信息即客户端五元组信息的第二报文发送给业务服务器,业务服务器接收到第二报文后,对第二报文进行业务处理。
具体处理方式如下:
在步骤S201之后,即业务服务器接收到第二报文后,业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。该数据库具体可以是Redis数据库,也可以是其他类型的Key-value数据库。客户端的属性信息例如是五元组信息。
业务服务器接收到第二报文后,步骤S202具体包括:
业务服务器根据所述第二报文解析所述客户端的业务ID;
若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询所述数据库,获取所述业务ID;根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理。
若执行完步骤S202,即所述业务处理器完成所述第一应用请求对应的业务处理,所述业务处理器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
在上述方法中,业务服务器更新与数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系的步骤,和步骤S202的具体实施的先后顺序没有具体限定,两者可以同时或者先后执行,只要能完成所述客户端的属性信息与所述反向代理服务器的映射关系的缓存和对第二报文的业务处理即可。
进一步地,可参见图2B,图2B为业务服务器对第二报文的处理方式,数据库例如是Redis,具体地,在接收到第二报文后,业务服务器首先可以解析第二报文中携带的五元组信息,更新Redis中五元组信息与反向代理服务器的关系。然后根据第二报文内容解析客户端业务ID,当报文未携带业务ID时,则根据五元组信息查询Redis获取业务ID。然后根据业务ID完成业务处理后,更新Redis中的业务ID、五元组信息以及业务状态保存在Redis中。
如图3所示,本发明实施例三提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
S301,在业务服务器需要向客户端发送第一应用通知时,所述业务处理器根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
S302,所述业务服务器将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
对于上述步骤,具体地,对于步骤S301,业务服务器有第一应用通知即必要的信令需通知客户端时,根据第一应用通知对应的第三报文携带的业务ID增加五元组信息,获得第四报文,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器。对于步骤S302,业务服务器将第四报文发送给反向代理服务器,从而通知反向代理服务器。反向代理服务器内部根据五元组信息查询客户端所处的TCP链路,去除五元组信息后,将信令请求通过长连接转发至客户端。例如实施例一和二的数据库中存储有更新Redis中的业务ID、五元组信息以及业务状态,且存储有客户端的五元组信息和反向代理服务器的映射关系。因此,业务服务器通过在数据库中查询能够根据第一应用通知对应的第三报文携带的业务ID增加五元组信息,获得第四报文,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器。
如图4A所示,本发明实施例四提供了一种解耦TCP长连接的业务处理方法,所述方法包括:
S401,反向代理服务器接收业务服务器发送的第四报文,其中,所述第四报文是所述业务处理器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;
S402,所述反向代理服务器将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
S403,所述反向代理服务器将所述第五报文发送至所述客户端。
具体地,反向代理服务器接收到业务服务器发送的包括有五元组信息的第四报文。这个第四报文具体可以通过实施例三中的方式获得,也可以通过其他方式获得。反向代理服务器内部根据第四报文中的五元组信息查询客户端所处的TCP链路,去除五元组信息后,将信令请求通过长连接转发至客户端。
如图4B所示,为了更好的理解上述实施例三和四,对解耦TCP长连接的业务处理方法进行如下说明,业务系统有必要的信令需通知客户端时,对信令请求进行组装,根据信令的业务ID增加五元组信息,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器,通知反向代理服务器,反向代理服务器内部根据五元组信息查询客户端所处的TCP链路,去除五元组信息后,将信令请求通过长连接转发至客户端。
上述实施例一至四中的方案可以是独立的技术方案,也可以自由组合形成新的技术方案,在此不做具体限定。
如图5所示,本发明实施例五提供了一种反向代理服务器,所述服务器包括:
第一获取模块501,用于获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
第二获取模块502,用于在所述第一报文中增加所述客户端的属性信息,获取包括所述客户端的属性信息的第二报文;
转发模块503,用于将所述第二报文转发给业务服务器。
具体地,反向代理系统中的反向代理服务器负责维护与客户端的稳定长连接,在客户端向反向代理服务器发出信令请求长连接时,反向代理服务器建立自身与客户端之间的TCP长连接。在客户端向反向代理服务器发送第一应用请求,该请求以第一报文的形式发出,第一获取模块501获取该第一报文,反向代理服务器根据配置的TCP组包规则,根据规则拼接报文完成报文解析,同时对客户端发送的第一报文扩展,第二获取模块502在第一报文中增加已知客户端属性(五元组:对端IP、对端端口、协议类型、本地IP、本地端口)后获取第二报文,转发模块503将第二报文转发至后端业务系统。
如图6所示,本发明实施例六提供了业务服务器,所述业务服务器包括:
第一接收模块601,用于接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;
业务处理模块602,用于基于所述第二报文进行业务处理。
具体地,沿用前述实例,在图1C中,反向代理服务器将增加了客户端的属性信息即客户端五元组信息的第二报文发送给业务服务器,第一接收模块601接收到第二报文后,业务处理模块602对第二报文进行业务处理。
所述业务服务器还包括:
解析模块,用于在所述业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文之后,所述业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;
第一更新模块,用于所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。该数据库具体可以是Redis数据库,也可以是其他类型的Key-value数据库。客户端的属性信息例如是五元组信息。
所述业务处理模块602,具体包括:
解析子模块,用于所述业务服务器根据所述第二报文解析所述客户端的业务ID;
获取子模块,用于若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询所述数据库,获取所述业务ID;
业务处理子模块,用于根据所述业务ID,进行与所述第一应用请求对应的业务处理。
所述装置还包括:
第二更新模块,用于在所述根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理之后,若所述业务服务器完成所述第一应用请求对应的业务处理,所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
第一更新模块更新与数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系,和业务处理模块具体实施业务处理的先后顺序没有具体限定,两者可以同时或者先后执行,只要能完成所述客户端的属性信息与所述反向代理服务器的映射关系的缓存和对第二报文的业务处理即可。
进一步地,可参见图2B,图2B为业务服务器对第二报文的处理方式,数据库例如是Redis,具体地,在第一接收模块601接收到第二报文后,业务服务器首先可以解析第二报文中携带的五元组信息,第一更新模块更新Redis中五元组信息与反向代理服务器的关系。然后业务处理模块602第二报文内容解析客户端业务ID,当报文未携带业务ID时,则根据五元组信息查询Redis获取业务ID。然后根据业务ID完成业务处理后,第二更新模块更新Redis中的业务ID、五元组信息以及业务状态保存在Redis中。
如图7所示,本发明实施例七提供了一种业务服务器,所述业务服务器包括:
获取模块701,用于在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
第一发送模块702,用于将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
业务服务器有第一应用通知即必要的信令需通知客户端时,获取模块701根据第一应用通知对应的第三报文携带的业务ID增加五元组信息,获得第四报文,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器。第一发送模块702将第四报文发送给反向代理服务器,从而通知反向代理服务器。反向代理服务器内部根据五元组信息查询客户端所处的TCP链路,去除五元组信息后,将信令请求通过长连接转发至客户端。例如实施例一和二的数据库中存储有更新Redis中的业务ID、五元组信息以及业务状态,且存储有客户端的五元组信息和反向代理服务器的映射关系。因此,业务服务器通过在数据库中查询能够根据第一应用通知对应的第三报文携带的业务ID增加五元组信息,获得第四报文,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器。
如图8所示,本发明实施例八提供了一种反向代理服务器,所述反向代理服务器包括:
第二接收模块801,用于接收业务服务器发送的第四报文,其中,所述第四报文是所述业务服务器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;
删除模块802,用于将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
第二发送模块803,用于将所述第五报文发送至所述客户端。
具体地,第二接收模块801接收到业务服务器发送的包括有五元组信息的第四报文。这个第四报文具体可以通过实施例三中的方式获得,也可以通过其他方式获得。删除模块802内部根据第四报文中的五元组信息查询客户端所处的TCP链路,去除五元组信息后,第二发送模块803将信令请求通过长连接转发至客户端。
为了更好的理解上述实施例三和四,结合实施例三和四,对解耦TCP长连接的业务处理方法进行如下说明,业务系统有必要的信令需通知客户端时,对信令请求进行组装,获得第三报文;获取模块701,根据信令的业务ID在第三报文中增加五元组信息,获取第四报文,同时根据五元组信息通过Redis寻址到客户端长连接所处的反向代理服务器,第一发送模块将第四报文发送给反向代理服务器,反向代理服务器中的接收模块801接收报文,反向代理服务器中的删除模块802根据五元组信息查询客户端所处的TCP链路,去除五元组信息后,第二发送模块803将信令请求通过长连接转发至客户端。
上述实施例五至八中的方案可以是独立的技术方案,也可以自由组合形成新的技术方案,在此不做具体限定。且上述实施例中的方法可以分别由上述实施例中的装置执行。
本发明实施例九提供了一种计算机装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如实施例一至四所述方法的步骤。
本发明实施例十提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一至四所述方法的步骤。
上述本发明实施例中的技术方案,至少具有如下的技术效果或优点:
采用本发明提供的技术方案,达到了在业务协议之上扩展客户端的属性信息例如自定义五元组信息,实现业务与链路解耦的目的,从而方便整体业务服务的升级与扩容的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (15)

1.一种解耦TCP长连接的业务处理方法,其特征在于,所述方法包括:
反向代理服务器获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
所述反向代理服务器在所述第一报文中增加所述客户端的属性信息,获得包括所述客户端的属性信息的第二报文;
所述反向代理服务器将所述第二报文转发给业务服务器,使所述业务服务器根据所述第二报文解析所述客户端的业务ID;若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询数据库,获取所述业务ID;根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理。
2.一种解耦TCP长连接的业务处理方法,其特征在于,所述方法包括:
业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
所述业务服务器根据所述第二报文解析所述客户端的业务ID;
若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询数据库,获取所述业务ID;
根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理。
3.如权利要求2所述的方法,其特征在于,在所述业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文之后,所述方法还包括:
所述业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;
所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。
4.如权利要求2或3所述的方法,其特征在于,在所述根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理之后,所述方法还包括:
若所述业务服务器完成所述第一应用请求对应的业务处理,所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
5.一种解耦TCP长连接的业务处理方法,其特征在于,所述方法包括:
在业务服务器需要向客户端发送第一应用通知时,所述业务服务器根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
所述业务服务器将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,根据所述属性信息查询所述客户端所处的TCP链路,通过长链接转发所述第五报文至所述客户端;其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
6.一种解耦TCP长连接的业务处理方法,其特征在于,所述方法包括:
反向代理服务器接收业务服务器发送的第四报文,其中,所述第四报文是所述业务服务器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
所述反向代理服务器将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
所述反向代理服务器根据所述属性信息查询所述客户端所处的TCP链路,通过长链接转发所述第五报文至所述客户端。
7.一种反向代理服务器,其特征在于,所述服务器包括:
第一获取模块,用于获取客户端发送的第一应用请求对应的第一报文,其中,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式;
第二获取模块,用于在所述第一报文中增加所述客户端的属性信息,获取包括所述客户端的属性信息的第二报文;
转发模块,用于将所述第二报文转发给业务服务器,使所述业务服务器根据所述第二报文解析所述客户端的业务ID;若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询数据库,获取所述业务ID;根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理。
8.一种业务服务器,其特征在于,所述业务服务器包括:
第一接收模块,用于接收来自反向代理服务器的包括客户端的属性信息的第二报文,其中,所述第二报文是所述反向代理服务器在第一报文中增加所述客户端的属性信息获得的,所述第一报文是所述客户端发送给反向代理服务器的第一应用请求对应的报文;
业务处理模块,用于根据所述第二报文解析所述客户端的业务ID;若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,基于所述客户端的属性信息查询数据库,获取所述业务ID;根据所述业务ID,进行与所述第一应用请求对应的业务处理。
9.如权利要求8所述的业务服务器,其特征在于,所述业务服务器还包括:
解析模块,用于在所述业务服务器接收来自反向代理服务器的包括客户端的属性信息的第二报文之后,所述业务服务器解析所述第二报文携带的所述客户端的属性信息,并获取所述客户端的属性信息与所述反向代理服务器的映射关系;
第一更新模块,用于所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的属性信息与所述反向代理服务器的映射关系。
10.如权利要求9所述的业务服务器,其特征在于,所述业务处理模块,包括:
解析子模块,用于所述业务服务器根据所述第二报文解析所述客户端的业务ID;
获取子模块,用于若能够解析出所述业务ID,获取所述业务ID;或者若不能够解析出所述业务ID,所述业务服务器基于所述客户端的属性信息查询所述数据库,获取所述业务ID;
业务处理子模块,用于根据所述业务ID,进行与所述第一应用请求对应的业务处理。
11.如权利要求10所述的业务服务器,其特征在于,所述业务服务器还包括:
第二更新模块,用于在所述根据所述业务ID,所述业务服务器进行与所述第一应用请求对应的业务处理之后,若所述业务服务器完成所述第一应用请求对应的业务处理,所述业务服务器更新与所述业务服务器连接的数据库中的所述客户端的业务ID、所述客户端的属性信息、所述客户端的业务状态信息。
12.一种业务服务器,其特征在于,所述业务服务器包括:
获取模块,用于在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID在所述第一应用通知对应的第三报文中增加所述客户端的属性信息,获取第四报文;
第一发送模块,用于将所述第四报文发送至反向代理服务器,使得所述反向代理器能够删除所述第四报文中所述客户端的属性信息并获取用于发送给客户端的第五报文,根据所述属性信息查询所述客户端所处的TCP链路,通过长链接转发所述第五报文至所述客户端;其中,所述反向代理服务器是所述业务服务器根据所述客户端的属性信息,确定的所述客户端所连接的反向代理服务器,所述客户端和所述反向代理服务器之间的连接方式是TCP长连接的方式。
13.一种反向代理服务器,其特征在于,所述反向代理服务器包括:
第二接收模块,用于接收业务服务器发送的第四报文,其中,所述第四报文是所述业务服务器在业务服务器需要向客户端发送第一应用通知时,根据所述第一应用通知对应的第三报文携带的业务ID,在所述第三报文中增加所述客户端的属性信息后获取的报文;
删除模块,用于将所述第四报文中的所述客户端的属性信息删除,获取第五报文;
第二发送模块,用于根据所述属性信息查询所述客户端所处的TCP链路,通过长链接转发所述第五报文至所述客户端。
14.一种计算机装置,其特征在于,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-6中任一项所述方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述方法的步骤。
CN201711288053.8A 2017-12-07 2017-12-07 解耦tcp长连接的业务处理方法、反向代理和业务服务器 Active CN107872538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711288053.8A CN107872538B (zh) 2017-12-07 2017-12-07 解耦tcp长连接的业务处理方法、反向代理和业务服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711288053.8A CN107872538B (zh) 2017-12-07 2017-12-07 解耦tcp长连接的业务处理方法、反向代理和业务服务器

Publications (2)

Publication Number Publication Date
CN107872538A CN107872538A (zh) 2018-04-03
CN107872538B true CN107872538B (zh) 2021-02-02

Family

ID=61755463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711288053.8A Active CN107872538B (zh) 2017-12-07 2017-12-07 解耦tcp长连接的业务处理方法、反向代理和业务服务器

Country Status (1)

Country Link
CN (1) CN107872538B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110505269A (zh) * 2019-06-21 2019-11-26 广州虎牙科技有限公司 业务处理系统、业务处理方法以及服务器
CN110868443B (zh) * 2019-07-05 2022-10-25 方欣科技有限公司 一种基于区块链的核心征管数据解耦方法及装置
CN113395255B (zh) * 2021-04-30 2022-07-12 西安交通大学 一种autossh反向代理检测方法、系统、设备及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562147B1 (en) * 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
US20030046336A1 (en) * 2001-08-31 2003-03-06 D'annunzio Michael A. Persistent link for broadband mobile platform communicatons systems using proxy servers
CN102724716B (zh) * 2012-05-29 2015-01-14 清华大学 基于Proxy代理服务器的长连接方法
CN103023987A (zh) * 2012-11-27 2013-04-03 蓝盾信息安全技术股份有限公司 一种基于tcp连接的多路复用的方法
CN104980289B (zh) * 2014-04-14 2019-03-19 阿里巴巴集团控股有限公司 消息推送方法、装置和系统
US9923677B2 (en) * 2014-12-26 2018-03-20 Intel Corporation Multiplexing many client streams over a single connection

Also Published As

Publication number Publication date
CN107872538A (zh) 2018-04-03

Similar Documents

Publication Publication Date Title
US10904205B2 (en) Content delivery network optimization system
US10084659B2 (en) Systems and methods for enhanced discovery
CN102984286B (zh) 一种dns服务器的缓存更新方法、装置及系统
EP3410657A1 (en) Method of packet transmission from node and content owner in content-centric networking
CN102664938B (zh) 一种资源下载控制方法及装置
US10637794B2 (en) Resource subscription method, resource subscription apparatus, and resource subscription system
CN107872538B (zh) 解耦tcp长连接的业务处理方法、反向代理和业务服务器
US20160080529A1 (en) Method and device for sending requests
EP3041198B1 (en) Finding services in a service-oriented architecture (soa) network
WO2014067311A1 (zh) 资源订阅方法及装置
US8903972B2 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
JP6601784B2 (ja) 情報指向ネットワークにおいてコンテキスト認識型コンテンツ要求をサポートするための方法、ネットワークコンポーネント、およびプログラム
US20150127837A1 (en) Relay apparatus and data transfer method
WO2016197727A1 (zh) 一种数据传输方法及装置
CN110830601A (zh) 分布式系统nat穿透方法、装置、设备及存储介质
CN111726400A (zh) 反向连接的方法、装置和服务端系统
US9781038B2 (en) Packet routing and forwarding in information centric networking
CN109788075B (zh) 专网网络系统、数据的获取方法及边缘服务器
CN108259576B (zh) 一种软硬件实时信息传输系统和方法
CN113553206B (zh) 数据事件执行方法、装置、电子设备和计算机可读介质
CN107612831B (zh) 一种访问源站的数据报文的传输方法及装置
KR20050112912A (ko) 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법
WO2018132557A1 (en) Dynamic protocol switching
CN113746851A (zh) 一种支持实时解析grpc请求的代理系统和方法
CN114500459B (zh) 一种基于dns协议的数据调度方法、装置及电子设备

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