CN104243473A - 一种数据传输的方法以及装置 - Google Patents
一种数据传输的方法以及装置 Download PDFInfo
- Publication number
- CN104243473A CN104243473A CN201410467037.5A CN201410467037A CN104243473A CN 104243473 A CN104243473 A CN 104243473A CN 201410467037 A CN201410467037 A CN 201410467037A CN 104243473 A CN104243473 A CN 104243473A
- Authority
- CN
- China
- Prior art keywords
- server
- data message
- client
- sequence number
- tcp
- 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
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种数据传输的方法以及装置,其中所述方法包括:在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;当检测到所述主服务器发生故障时,与备用服务器建立传输控制协议TCP连接;根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文。采用本发明,可降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输的方法以及装置。
背景技术
云计算和虚拟化技术日益成熟,不断刺激传统分布式的网络基础设施开始向SDN(Software Defined Network,软件定义网络)网络架构演进。借助IT(Information Technology,信息技术)的成熟技术来解决CT(CommunicationTechnology,通信技术)领域的问题是SDN很重要的研究课题。在网络集中式控制问题中,借助高可靠性集群技术来构建SDN网络高可靠、可扩展的大规模网络服务能力是比较可行的做法。
然而,集中控制平台和网络设备之间的控制协议(典型地,如OpenFlow协议)需要满足持久性和可靠性特点。因此,目前通过提出多归属方案来满足这种需求,所述多归属方案是指客户端同时连接到多个服务器,并选择出主通道,当主通道的TCP(Transmission Control Protocol,传输控制协议)连接断开后,由应用层决定将后续报文通过副通道传输给其他服务器。但是在所述多归属方案中的客户端必须同时与多个服务器连接,这必然增加了在客户端侧的设计复杂性,例如,当主通道断开TCP连接后,客户端需要对发起的数据报文的目的地进行变更,才能将数据报文成功发送到其他服务器,从而增加了在客户端侧的设计复杂性,并增加了对客户端的性能要求。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据传输的方法以及装置,可降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
本发明第一方面提供一种数据传输的方法,包括:
在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
当检测到所述主服务器发生故障时,与备用服务器建立传输控制协议TCP连接;
根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文;
其中,由所述客户端发起的数据报文所构造成的中转数据报文是所述备用服务器所预期的数据报文,由所述备用服务器发起的数据报文所构造成的中转数据报文是所述客户端所预期的数据报文。
在第一种可能的实现方式中,在所述在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文的步骤之前,还包括:
初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述当检测到所述主服务器发生故障时,与备用服务器建立TCP连接,包括:
当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
所述TCP序列号差值是用于构造所述中转数据报文的参数。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文,包括:
根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;或者,
根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
结合第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号。
结合第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,在所述在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文的步骤之前,还包括:
接收所述服务器集群中各服务器在上线时所报告的工作状态;
实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器。
本发明第二方面提供一种数据传输的装置,包括:
转发模块,用于在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
建立连接模块,用于当检测到所述主服务器发生故障时,与备用服务器建立TCP连接;
构造模块,用于根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并通知所述转发模块在所述客户端与所述备用服务器之间转发所述中转数据报文;
其中,由所述客户端发起的数据报文所构造成的中转数据报文是所述备用服务器所预期的数据报文,由所述备用服务器发起的数据报文所构造成的中转数据报文是所述客户端所预期的数据报文。
在第一种可能的实现方式中,还包括:
初始化模块,用于初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
所述转发模块,还用于接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述建立连接模块包括:
报文生成单元,用于当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
报文发送单元,用于将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
差值计算单元,用于根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
所述TCP序列号差值是用于构造所述中转数据报文的参数。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述构造模块包括:
第一构造单元,用于根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并通知所述转发模块将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;
第二构造单元,用于根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并通知所述转发模块将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
结合第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
添加更新模块,用于当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
删除模块,用于当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号。
结合第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:
状态接收模块,用于接收所述服务器集群中各服务器在上线时所报告的工作状态;
状态监测模块,用于实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据传输的方法的流程示意图;
图2是本发明实施例提供的另一种数据传输的方法的流程示意图;
图3是本发明实施例提供的一种数据传输的装置的结构示意图;
图4是本发明实施例提供的另一种数据传输的装置的结构示意图;
图5是本发明实施例提供的一种建立连接模块的结构示意图;
图6是本发明实施例提供的一种构造模块的结构示意图;
图7是本发明实施例提供的又一种数据传输的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的客户端发起的数据报文可以包括用于标识数据报文的序列号和确认号,所述确认号可以为ACK(Acknowledgement,确认号),由于在本发明中所述客户端发起的数据报文中的序列号始终是由客户端的初始TCP序列号以及传输的数据所决定的,且所述客户端发起的数据报文中的确认号始终是由主服务器的初始TCP序列号以及传输的数据所决定的,所以本发明实施例将所述客户端发起的数据报文中的序列号统称为所述客户端发起的数据报文中的客户端TCP序列号,将所述客户端发起的数据报文中的确认号统称为所述客户端发起的数据报文中的主服务器TCP序列号。
本发明实施例涉及的主服务器发起的数据报文可以包括用于标识数据报文的序列号和确认号,所述确认号可以为ACK,由于在本发明中所述主服务器发起的数据报文中的序列号始终是由主服务器的初始TCP序列号以及传输的数据所决定的,且所述主服务器发起的数据报文中的确认号始终是由客户端的初始TCP序列号以及传输的数据所决定的,所以本发明实施例将所述主服务器发起的数据报文中的序列号统称为所述主服务器发起的数据报文中的主服务器TCP序列号,将所述主服务器发起的数据报文中的确认号统称为所述主服务器发起的数据报文中的客户端TCP序列号。
本发明实施例涉及的备用服务器发起的数据报文可以包括用于标识数据报文的序列号和确认号,所述确认号可以为ACK,由于在本发明中所述备用服务器发起的数据报文中的序列号始终是由备用服务器的初始TCP序列号以及传输的数据所决定的,且所述备用服务器发起的数据报文中的确认号始终是由客户端的初始TCP序列号以及传输的数据所决定的,所以本发明实施例将所述备用服务器发起的数据报文中的序列号统称为所述备用服务器发起的数据报文中的备用服务器TCP序列号,将所述备用服务器发起的数据报文中的确认号统称为所述备用服务器发起的数据报文中的客户端TCP序列号。
其中,所述客户端的初始TCP序列号是由所述客户端在发起握手报文时所分配的,且所述客户端的初始TCP序列号的数值大小是由所述客户端的操作系统所决定的;所述主服务器的初始TCP序列号是由所述主服务器在回应客户端的握手报文时所分配的,且所述主服务器的初始TCP序列号的数值大小是由所述主服务器的操作系统所决定的;所述备用服务器的初始TCP序列号是由所述备用服务器在回应备用握手请求报文时所分配的,且所述备用服务器的初始TCP序列号的数值大小是由所述备用服务器的操作系统所决定的,所述备用握手请求报文是由本发明提供的数据传输的装置所构造的。
请参见图1,是本发明实施例提供的一种数据传输的方法的流程示意图,所述方法可以包括:
S101,在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
具体的,本发明实施例提供了一种数据传输的装置,所述装置可以为用于在客户端和服务器集群之间转发报文的一种服务器,即在服务器集群前置所述装置。所述装置可以在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文。其中,所述主服务器是由所述装置预先在服务器集群中选择出的。在所述装置转发数据报文之前,所述装置需要先选择出主服务器,并将客户端发起的握手请求报文转发到主服务器,以实现客户端与主服务器的三次握手,即实现客户端与主服务器的TCP连接。例如,客户端发送握手请求报文(SYN,ACK)为(x,-),其中,握手请求报文中的SYN(synchronous,TCP/IP建立连接时使用的握手信号)为客户端的初始TCP序列号x,x值由客户端的操作系统所决定,ACK用于表示发来的数据已确认接收无误,所述装置将所述握手请求报文转发到预先选择出的主服务器,若主服务器回应所述握手请求报文,且回应报文的(SYN,ACK)为(y,x+1),y为主服务器的初始TCP序列号,y值由主服务器的操作系统所决定,此时,所述装置再将主服务器发起的回应报文(y,x+1)转发到客户端,客户端根据回应报文(y,x+1)再次发起报文(SYN,ACK)为(x+1,y+1),所述装置再将客户端发起的报文(x+1,y+1)转发到主服务器,此时,便已完成三次握手,即通过所述装置实现了客户端与主服务器的TCP连接。在完成客户端与主服务器的TCP连接之后,即可开始转发客户端与主服务器之间的数据报文。
S102,当检测到所述主服务器发生故障时,与备用服务器建立传输控制协议TCP连接;
具体的,所述装置在客户端和主服务器之间转发数据报文时,若检测到当前所述主服务器发生故障时,所述装置可以根据当前客户端发起的数据报文,与备用服务器建立TCP连接,即所述装置根据当前客户端发起的数据报文中的客户端TCP序列号模拟一个握手请求报文,以替代客户端与备用服务器建立TCP连接,使得客户端无需感知故障存在,并且客户端无需再次发起握手请求报文,以减少客户端的工作量。
S103,根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文;
具体的,所述装置与备用服务器建立连接后,客户端可以继续发起数据报文,此时,客户端发起的数据报文中的序列号仍然为客户端TCP序列号,客户端发起的数据报文中的确认号仍然为主服务器TCP序列号。所述装置接收到客户端发起的数据报文后,可以将所述客户端发起的数据报文构造成中转数据报文,此处的中转数据报文为备用服务器预期的数据报文,因此,所述装置通过将客户端发起的数据报文中的主服务器TCP序列号转化成备用服务器TCP序列号,以得到该中转数据报文,所述装置再将该中转数据报文转发到备用服务器,以使备用服务器能够根据该中转数据报文进行回应。当备用服务器发起数据报文进行回应时,所述装置还可以将备用服务器发起的数据报文构造成中转数据报文,此处的中转数据报文为客户端预期的数据报文,因此,所述装置通过将备用服务器发起的数据报文中的备用服务器TCP序列号转化为主服务器TCP序列号,以得到该中转数据报文,所述装置再将该中转数据报文转发到客户端,以使客户端能够根据该中转数据报文继续进行回应。由于所述装置可以将接收到的数据报文都构造成中转数据报文,所以备用服务器和客户端都能接收到自己所预期的数据报文,并且使客户端无需对发起的数据报文的目的地进行变更,即客户端始终按照与主服务器的传输方式以发起数据报文,因此,无论主服务器在何时发生故障,所述装置都能够快速有效的在客户端和备用服务器之间转发数据报文,从而使客户端可以高可靠的连接到服务器集群中。当然,在备用服务器也发生故障的时候,所述装置同样可以在客户端和其他服务器之间将数据报文构造成中转数据报文,即客户端依然无需对发起的数据报文的目的地进行变更,所述装置可以将客户端发起的数据报文中的主服务器TCP序列号转化成其他服务器TCP序列号。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
再请参见图2,是本发明实施例提供的另一种数据传输的方法的流程示意图,所述方法可以包括:
S201,初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器;
具体的,本发明实施例提供了一种数据传输的装置,所述装置可以为用于在客户端和服务器集群之间转发报文的一种服务器,即在服务器集群前置所述装置。所述服务器优先级列表包括主服务器信息以及至少一个备用服务器的优先级信息,所述装置可以根据所述服务器优先级列表在服务器集群中选择出主服务器,所述装置还可以在主服务器发生故障时,根据所述服务器优先级列表中的至少一个备用服务器的优先级信息选择出当前所要连接的备用服务器。例如,某个服务器集群中有备用服务器A和备用服务器B,若所述装置根据服务器优先级列表得知备用服务器A的优先级高于备用服务器B的优先级,则在主服务器发生故障时,所述装置将会先与备用服务器A进行连接,若备用服务器A也发生了故障,则所述装置再与备用服务器B进行连接。
其中,所述装置在初始化服务器优先级列表之前,所述装置还可以接收所述服务器集群中各服务器在上线时所报告的工作状态,并实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器,所述工作状态可以包括运行状态、待机状态。
S202,接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
具体的,在选择出主服务器后,所述装置可以接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。其中,客户端与主服务器的TCP连接可以通过三次握手完成,例如,客户端发送握手请求报文(SYN,ACK)为(x,-),其中,握手请求报文中的SYN为客户端的初始TCP序列号x,x值由客户端的操作系统所决定,ACK用于表示发来的数据已确认接收无误,所述装置将所述握手请求报文转发到预先选择出的主服务器,若主服务器回应所述握手请求报文,且回应报文的(SYN,ACK)为(y,x+1),y为主服务器的初始TCP序列号,y值由主服务器的操作系统所决定,此时,所述装置再将主服务器发起的回应报文(y,x+1)转发到客户端,客户端根据回应报文(y,x+1)再次发起报文(SYN,ACK)为(x+1,y+1),所述装置再将客户端发起的报文(x+1,y+1)转发到主服务器,此时,便已完成三次握手,即通过所述装置实现了客户端与主服务器的TCP连接。
S203,在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
在完成客户端与主服务器的TCP连接之后,所述装置即可开始转发客户端与主服务器之间的数据报文。
其中,在所述主服务器正常工作时,根据预先记录的客户端的初始TCP序列号和主服务器的初始TCP序列号,实时跟踪客户端TCP序列号和主服务器TCP序列号,例如,实时跟踪客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,同时还可以实时跟踪主服务器发起的数据报文中的主服务器TCP序列号和客户端TCP序列号。所述装置通过实时跟踪所述客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,可以在主服务器发生故障时获取此刻所跟踪到的客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号。
S204,当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
具体的,所述装置实时监测各服务器的工作状态,根据监测的工作状态可以得知主服务器是否发生故障,当检测到所述主服务器发生故障时,所述装置可以根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文。例如,所述装置在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是由客户端的操作系统所决定的,y是由主服务器的操作系统所决定的,则所述装置可以根据客户端TCP序列号“x+m”生成备用握手请求报文(x+m-1,-),备用握手请求报文中的源IP地址仍为客户端的IP地址,以代替客户端与备用服务器进行TCP连接,所述装置将备用握手请求报文(x+m-1,-)转发到备用服务器以进行三次握手。在三次握手成功后,备用服务器所预期的数据报文将为(x+m,z+1),此时,所述装置可以将客户端发起的数据报文(x+m,y+n)构造成(x+m,z+1),并将数据报文(x+m,z+1)转发到备用服务器,以便于剩余的数据业务可以继续在客户端和备用服务器之间进行传输,其中,z是由备用服务器的操作系统所决定的。
S205,将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
S206,根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
具体的,所述装置与备用服务器建立TCP连接的同时,所述装置还可以根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值,所述TCP序列号差值是用于构造所述中转数据报文的参数。例如,所述装置在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是由客户端的操作系统所决定的,y是由主服务器的操作系统所决定的,则所述装置可以根据主服务器TCP序列号“y+n”和备用服务器的初始TCP序列号“z”,计算TCP序列号差值k=(z+1)-(y+n),其中,z是由备用服务器的操作系统所决定的。
S207,根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文;
具体的,所述装置在与备用服务器连接,且计算出TCP序列号差值之后,所述装置可以根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;或者,根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
例如,所述装置在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是客户端的初始TCP序列号,且x的数值是由客户端的操作系统所决定的,y是主服务器的初始TCP序列号,且y的数值是由主服务器的操作系统所决定的,则所述装置可以根据主服务器TCP序列号“y+n”和备用服务器的初始TCP序列号“z”,计算TCP序列号差值k=(z+1)-(y+n),其中,z是由备用服务器的操作系统所决定的。所述装置在计算出TCP序列号差值k=(z+1)-(y+n)之后,所述装置对客户端发起的数据报文(x+m,y+n)进行加K操作,以将客户端发起的数据报文(x+m,y+n)构造成(x+m,y+n+k),即构造成备用服务器所预期的数据报文(x+m,z+1),所述装置将构造后的数据报文(x+m,z+1)转发到备用服务器,备用服务器根据数据报文(x+m,z+1)进行回应并发送所回应的数据报文到所述装置,所述装置对备用服务器所回应的数据报文进行减K操作,以将备用服务器所回应的数据报文中的备用服务器TCP序列号改成主服务器TCP序列号,并将修改后的数据报文转发到客户端,以使客户端可以得到所预期的数据报文。所述装置对客户端发起的数据报文进行加K操作,以使备用服务器得到所预期的数据报文;所述装置对备用服务器发起的数据报文进行减K操作,以使客户端得到所预期的数据报文。所述装置通过加K和减K的往复操作,可以使业务数据顺利地在客户端和备用服务器之间进行传输。直至检测到所述客户端与所述备用服务器的TCP连接终结时,所述装置可以删除所记录以及所跟踪到的各个TCP序列号,以为所述装置节约更多资源。当然,当检测到所述客户端与所述主服务器的TCP连接终结时,所述装置也删除所记录以及所跟踪到的各个TCP序列号。其中,在所述客户端与所述备用服务器的TCP连接终结之前,所述装置生成终结连接握手请求,并将终结连接握手请求发送至备用服务器,以完成四次握手过程,即完成所述客户端与所述备用服务器的TCP连接终结。当然,在所述客户端与所述主服务器的TCP连接终结之前,所述装置直接转发客户端所发起的终结连接握手请求到主服务器,以完成四次握手过程,即完成所述客户端与所述主服务器的TCP连接终结。
其中,在所述主服务器故障时,根据所述客户端的初始TCP序列号、所述主服务器的初始TCP序列号以及所述备用服务器的初始TCP序列号,实时跟踪客户端TCP序列号、主服务器TCP序列号以及备用服务器TCP序列号。例如,实时跟踪客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,并且还可以实时跟踪主服务器发起的数据报文中的主服务器TCP序列号和客户端TCP序列号,并且还可以实时跟踪备用服务器发起的数据报文中的备用服务器TCP序列号和客户端TCP序列号。其中,所述备用服务器发起的数据报文中的所述客户端TCP序列号和所述客户端发起的数据报文中的所述客户端TCP序列号均是由所记录的客户端的初始TCP序列号以及所传输的数据决定的。
其中,当检测到所述服务器集群中增加有新的服务器时,所述装置还可以将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。通过更新所述服务器优先级列表,不仅可以使新的服务器加入优先级队列,还可以使客户端无需感知新的服务器的加入,客户端无需对发起的数据报文的目的地进行变更,只需由所述装置对各个报文进行处理和转发即可。因此,无论任何服务器加入或故障,都不影响其他服务器继续处理TCP连接上的后续报文。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
本发明实施例还提供了一种计算机存储介质,其中,所述计算机存储介质可存储有程序,该程序执行时包括上述图1和图2的方法实施例中记载的数据传输的方法的部分或全部步骤。
请参见图3,是本发明实施例提供的一种数据传输的装置的结构示意图,所述装置可以包括:转发模块10、建立连接模块20、构造模块30;
所述转发模块10,用于在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
具体的,所述装置可以为用于在客户端和服务器集群之间转发报文的一种服务器,即在服务器集群前置所述装置。所述转发模块10可以在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文。其中,所述主服务器是由所述装置预先在服务器集群中选择出的。在所述转发模块10转发数据报文之前,所述装置需要先选择出主服务器,并将客户端发起的握手请求报文转发到主服务器,以实现客户端与主服务器的三次握手,即实现客户端与主服务器的TCP连接。例如,客户端发送握手请求报文(SYN,ACK)为(x,-),其中,握手请求报文中的SYN为客户端的初始TCP序列号x,x值由客户端的操作系统所决定,ACK用于表示发来的数据已确认接收无误,所述装置将所述握手请求报文转发到预先选择出的主服务器,若主服务器回应所述握手请求报文,且回应报文的(SYN,ACK)为(y,x+1),y为主服务器的初始TCP序列号,y值由主服务器的操作系统所决定,此时,所述装置再将主服务器发起的回应报文(y,x+1)转发到客户端,客户端根据回应报文(y,x+1)再次发起报文(SYN,ACK)为(x+1,y+1),所述装置再将客户端发起的报文(x+1,y+1)转发到主服务器,此时,便已完成三次握手,即通过所述装置实现了客户端与主服务器的TCP连接。在完成客户端与主服务器的TCP连接之后,所述转发模块10即可开始转发客户端与主服务器之间的数据报文。
所述建立连接模块20,用于当检测到所述主服务器发生故障时,与备用服务器建立TCP连接;
具体的,所述转发模块10在客户端和主服务器之间转发数据报文时,若检测到当前所述主服务器发生故障时,所述建立连接模块20可以根据当前客户端发起的数据报文,与备用服务器建立TCP连接,即所述建立连接模块20根据当前客户端发起的数据报文中的客户端TCP序列号模拟一个握手请求报文,以替代客户端与备用服务器建立TCP连接,使得客户端无需感知故障存在,并且客户端无需再次发起握手请求报文,以减少客户端的工作量。
所述构造模块30,用于根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并通知所述转发模块10在所述客户端与所述备用服务器之间转发所述中转数据报文;
具体的,所述建立连接模块20与备用服务器建立连接后,客户端可以继续发起数据报文,此时,客户端发起的数据报文中的序列号仍然为客户端TCP序列号,客户端发起的数据报文中的确认号仍然为主服务器TCP序列号。在接收到客户端发起的数据报文后,所述构造模块30可以将所述客户端发起的数据报文构造成中转数据报文,此处的中转数据报文为备用服务器预期的数据报文,因此,所述构造模块30通过将客户端发起的数据报文中的主服务器TCP序列号转化成备用服务器TCP序列号,以得到该中转数据报文,并通知所述转发模块10将该中转数据报文转发到备用服务器,以使备用服务器能够根据该中转数据报文进行回应。当备用服务器发起数据报文进行回应时,所述构造模块30还可以将备用服务器发起的数据报文构造成中转数据报文,此处的中转数据报文为客户端预期的数据报文,因此,所述构造模块30通过将备用服务器发起的数据报文中的备用服务器TCP序列号转化为主服务器TCP序列号,以得到该中转数据报文,并通知所述转发模块10将该中转数据报文转发到客户端,以使客户端能够根据该中转数据报文继续进行回应。由于所述构造模块30可以将接收到的数据报文都构造成中转数据报文,所以备用服务器和客户端都能接收到自己所预期的数据报文,并且使客户端无需对发起的数据报文的目的地进行变更,即客户端始终按照与主服务器的传输方式以发起数据报文,因此,无论主服务器在何时发生故障,所述转发模块10都能够快速有效的在客户端和备用服务器之间转发数据报文,从而使客户端可以高可靠的连接到服务器集群中。当然,在备用服务器也发生故障的时候,所述构造模块30同样可以在客户端和其他服务器之间将数据报文构造成中转数据报文,即客户端依然无需对所发起的数据报文的目的地进行变更,所述构造模块30可以将客户端发起的数据报文中的主服务器TCP序列号转化成其他服务器TCP序列号。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
再请参见图4,是本发明实施例提供的另一种数据传输的装置的结构示意图,所述装置可以包括上述图3对应实施例中的转发模块10、建立连接模块20、构造模块30,进一步的,所述装置还可以包括:初始化模块40、记录跟踪模块50、添加更新模块60、删除模块70、状态接收模块80、状态监测模块90;
所述初始化模块40,用于初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
具体的,所述服务器优先级列表包括主服务器信息以及至少一个备用服务器的优先级信息,所述初始化模块40可以根据所述服务器优先级列表在服务器集群中选择出主服务器,所述初始化模块40还可以在主服务器发生故障时,根据所述服务器优先级列表中的至少一个备用服务器的优先级信息选择出当前所要连接的备用服务器。例如,某个服务器集群中有备用服务器A和备用服务器B,若所述初始化模块40根据服务器优先级列表得知备用服务器A的优先级高于备用服务器B的优先级,则在主服务器发生故障时,所述装置将会先与备用服务器A进行连接,若备用服务器A也发生了故障,则所述装置再与备用服务器B进行连接。
所述转发模块10,还用于接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接;
具体的,在所述转发模块10转发数据报文之前,所述转发模块10需要先将客户端发起的握手请求报文转发到主服务器,以实现客户端与主服务器的三次握手,即实现客户端与主服务器的TCP连接。例如,客户端发送握手请求报文(SYN,ACK)为(x,-),其中,握手请求报文中的SYN为客户端的初始TCP序列号x,x值由客户端的操作系统所决定,ACK用于表示发来的数据已确认接收无误,所述转发模块10将所述握手请求报文转发到预先选择出的主服务器,若主服务器回应所述握手请求报文,且回应报文的(SYN,ACK)为(y,x+1),y为主服务器的初始TCP序列号,y值由主服务器的操作系统所决定,此时,所述转发模块10再将主服务器发起的回应报文(y,x+1)转发到客户端,客户端根据回应报文(y,x+1)再次发起报文(SYN,ACK)为(x+1,y+1),所述转发模块10再将客户端发起的报文(x+1,y+1)转发到主服务器,此时,便已完成三次握手,即通过所述装置实现了客户端与主服务器的TCP连接。在完成客户端与主服务器的TCP连接之后,即可开始转发客户端与主服务器之间的数据报文。
所述记录跟踪模块50,用于在所述主服务器正常工作时,根据预先记录的客户端的初始TCP序列号和主服务器的初始TCP序列号,实时跟踪客户端TCP序列号和主服务器TCP序列号;
具体的,所述记录跟踪模块50可以实时跟踪客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,同时还可以实时跟踪主服务器发起的数据报文中的主服务器TCP序列号和客户端TCP序列号。通过所述记录跟踪模块50实时跟踪所述客户端发起的数据报文以及所述主服务器发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,所述装置可以在主服务器发生故障时获取此刻所跟踪到的客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号。
所述记录跟踪模块50,还用于在所述主服务器故障时,根据所述客户端的初始TCP序列号、所述主服务器的初始TCP序列号以及所述备用服务器的初始TCP序列号,实时跟踪客户端TCP序列号、主服务器TCP序列号以及备用服务器TCP序列号;
具体的,所述记录跟踪模块50可以实时跟踪客户端发起的数据报文中的客户端TCP序列号和主服务器TCP序列号,并且还可以实时跟踪主服务器发起的数据报文中的主服务器TCP序列号和客户端TCP序列号,并且还可以实时跟踪备用服务器发起的数据报文中的备用服务器TCP序列号和客户端TCP序列号。所述备用服务器发起的数据报文中的所述客户端TCP序列号和所述客户端发起的数据报文中的所述客户端TCP序列号均是由所记录的客户端的初始TCP序列号以及所传输的数据决定的。
所述添加更新模块60,用于当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
具体的,通过所述添加更新模块60更新所述服务器优先级列表,不仅可以使新的服务器加入优先级队列,还可以使客户端无需感知新的服务器的加入,客户端发起的报文始终不变,只需由所述装置对各个报文进行处理和转发即可。因此,无论任何服务器加入或故障,都不影响其他服务器继续处理TCP连接上的后续报文。
所述删除模块70,用于当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号;
具体的,当检测到所述客户端与所述备用服务器的TCP连接终结时,所述删除模块70可以删除所记录以及所跟踪到的各个TCP序列号,以为所述装置节约更多资源。当然,当检测到所述客户端与所述主服务器的TCP连接终结时,所述删除模块70也删除所记录以及所跟踪到的各个TCP序列号。其中,在所述客户端与所述备用服务器的TCP连接终结之前,所述装置生成终结连接握手请求,并将终结连接握手请求发送至备用服务器,以完成四次握手过程,即完成所述客户端与所述备用服务器的TCP连接终结。当然,在所述客户端与所述主服务器的TCP连接终结之前,所述装置直接转发客户端所发起的终结连接握手请求到主服务器,以完成四次握手过程,即完成所述客户端与所述主服务器的TCP连接终结。
所述状态接收模块80,用于接收所述服务器集群中各服务器在上线时所报告的工作状态;
所述状态监测模块90,用于实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器;
具体的,所述初始化模块40在初始化服务器优先级列表之前,所述状态接收模块80可以接收所述服务器集群中各服务器在上线时所报告的工作状态,并由所述状态监测模块90实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器,所述工作状态可以包括运行状态、待机状态。
进一步的,再请参见图5,是本发明实施例提供的一种建立连接模块20的结构示意图,所述建立连接模块20可以包括:报文生成单元201、报文发送单元202、差值计算单元203;
所述报文生成单元201,用于当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
所述报文发送单元202,用于将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
具体的,所述状态监测模块90实时监测各服务器的工作状态,根据监测的工作状态可以得知主服务器是否发生故障,当检测到所述主服务器发生故障时,所述报文生成单元201可以根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文,并由所述报文发送单元202将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接。例如,所述装置在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是由客户端的操作系统所决定的,y是由主服务器的操作系统所决定的,则所述报文生成单元201可以根据客户端TCP序列号“x+m”生成备用握手请求报文(x+m-1,-),备用握手请求报文中的源IP地址仍为客户端的IP地址,以代替客户端与备用服务器进行TCP连接,所述报文发送单元202将备用握手请求报文(x+m-1,-)转发到备用服务器以进行三次握手。在三次握手成功后,备用服务器所预期的数据报文将为(x+m,z+1),此时,所述构造模块30可以将客户端发起的数据报文(x+m,y+n)构造成(x+m,z+1),并由所述转发模块10将数据报文(x+m,z+1)转发到备用服务器,以便于剩余的数据业务可以继续在客户端和备用服务器之间进行传输,其中,z是由备用服务器的操作系统所决定的。
所述差值计算单元203,用于根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
具体的,与备用服务器建立TCP连接的同时,所述差值计算单元203可以根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值,所述TCP序列号差值是用于构造所述中转数据报文的参数。例如,所述转发模块10在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是由客户端的操作系统所决定的,y是由主服务器的操作系统所决定的,则所述差值计算单元203可以根据主服务器TCP序列号“y+n”和备用服务器的初始TCP序列号“z”,计算TCP序列号差值k=(z+1)-(y+n),其中,z是由备用服务器的操作系统所决定的。
进一步的,再请参见图6,是本发明实施例提供的一种构造模块30的结构示意图,所述构造模块30可以包括:第一构造单元301、第二构造单元302;
所述第一构造单元301,用于根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并通知所述转发模块10将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;
所述第二构造单元302,用于根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并通知所述转发模块10将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文;
例如,所述转发模块10在转发数据报文过程中,若在客户端发起的数据报文为(x+m,y+n)时,检测到主服务器发生了故障,其中,x+m为故障时的客户端发起的数据报文中的客户端TCP序列号,y+n为故障时的客户端发起的数据报文中的主服务器TCP序列号,x是客户端的初始TCP序列号,且x是由客户端的操作系统所决定的,y是主服务器的初始TCP序列号,且y是由主服务器的操作系统所决定的,则所述差值计算单元203可以根据主服务器TCP序列号“y+n”和备用服务器的初始TCP序列号“z”,计算TCP序列号差值k=(z+1)-(y+n),其中,z是由备用服务器的操作系统所决定的。在计算出TCP序列号差值k=(z+1)-(y+n)之后,所述第一构造单元301对客户端发起的数据报文(x+m,y+n)进行加K操作,以将客户端发起的数据报文(x+m,y+n)构造成(x+m,y+n+k),即构造成备用服务器所预期的数据报文(x+m,z+1),并通知所述转发模块10将构造后的数据报文(x+m,z+1)转发到备用服务器,备用服务器根据数据报文(x+m,z+1)进行回应并发送所回应的数据报文到所述装置,所述第二构造单元302对备用服务器所回应的数据报文进行减K操作,以将备用服务器所回应的数据报文中的备用服务器TCP序列号改成主服务器TCP序列号,并通知所述转发模块10将修改后的数据报文转发到客户端,以使客户端可以得到所预期的数据报文。所述第一构造单元301对客户端发起的数据报文进行加K操作,以使备用服务器得到所预期的数据报文;所述第二构造单元302对备用服务器发起的数据报文进行减K操作,以使客户端得到所预期的数据报文。通过所述第一构造单元301和所述第二构造单元302进行加K和减K的往复操作,可以使业务数据顺利地在客户端和备用服务器之间进行传输。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
请参见图7,是本发明实施例提供的又一种数据传输的装置的结构示意图,所述装置可以包括处理器1001、通信接口1002和存储器1003(所述装置中的处理器1001的数量可以为一个或多个,图7中以一个处理器1001为例)。本发明的一些实施例中,处理器1001、通信接口1002和存储器1003可通过通信总线或其他方式连接,其中,图7以通过通信总线连接为例。
其中,所述通信接口1002,用于与客户端、主服务器以及备用服务器进行通信;
所述存储器1003用于存储程序;
所述处理器1001用于执行所述程序,以实现
在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
当检测到所述主服务器发生故障时,与备用服务器建立传输控制协议TCP连接;
根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文;
其中,由所述客户端发起的数据报文所构造成的中转数据报文是所述备用服务器所预期的数据报文,由所述备用服务器发起的数据报文所构造成的中转数据报文是所述客户端所预期的数据报文。
其中,所述处理器1001还用于:
初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
其中,所述处理器1001具体用于:
当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
所述TCP序列号差值是用于构造所述中转数据报文的参数。
其中,所述处理器1001具体用于:
根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;或者,
根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
其中,所述处理器1001还用于:
当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
其中,所述处理器1001还用于:
当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号。
其中,所述处理器1001还用于:
接收所述服务器集群中各服务器在上线时所报告的工作状态;
实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器。
本发明实施例通过在主服务器发生故障时,与备用服务器建立TCP连接,可以使客户端无需感知故障存在,使客户端可以继续发起数据报文,并将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,可以使客户端侧无需对数据报文的目的地进行变更,即可实现客户端与备用服务器之间的数据报文传输,从而可以降低在客户端侧的设计复杂性,以降低对客户端的性能要求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种数据传输的方法,其特征在于,包括:
在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
当检测到所述主服务器发生故障时,与备用服务器建立传输控制协议TCP连接;
根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文;
其中,由所述客户端发起的数据报文所构造成的中转数据报文是所述备用服务器所预期的数据报文,由所述备用服务器发起的数据报文所构造成的中转数据报文是所述客户端所预期的数据报文。
2.如权利要求1所述的方法,其特征在于,在所述在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文的步骤之前,还包括:
初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
3.如权利要求1或2所述的方法,其特征在于,所述当检测到所述主服务器发生故障时,与备用服务器建立TCP连接,包括:
当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
所述TCP序列号差值是用于构造所述中转数据报文的参数。
4.如权利要求3所述的方法,其特征在于,所述根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并在所述客户端与所述备用服务器之间转发所述中转数据报文,包括:
根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;或者,
根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
5.如权利要求2至4任一项所述的方法,其特征在于,还包括:
当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
6.如权利要求1至5任一项所述的方法,其特征在于,还包括:
当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号。
7.如权利要求2至6任一项所述的方法,其特征在于,在所述在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文的步骤之前,还包括:
接收所述服务器集群中各服务器在上线时所报告的工作状态;
实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器。
8.一种数据传输的装置,其特征在于,包括:
转发模块,用于在客户端与主服务器之间转发客户端发起的数据报文和主服务器发起的数据报文;
建立连接模块,用于当检测到所述主服务器发生故障时,与备用服务器建立TCP连接;
构造模块,用于根据与所述备用服务器间的TCP连接,将所述客户端与所述备用服务器之间所发起的数据报文构造成中转数据报文,并通知所述转发模块在所述客户端与所述备用服务器之间转发所述中转数据报文;
其中,由所述客户端发起的数据报文所构造成的中转数据报文是所述备用服务器所预期的数据报文,由所述备用服务器发起的数据报文所构造成的中转数据报文是所述客户端所预期的数据报文。
9.如权利要求8所述的装置,其特征在于,还包括:
初始化模块,用于初始化服务器优先级列表,根据所述服务器优先级列表在服务器集群中选择出所述主服务器,所述服务器优先级列表包括所述主服务器信息以及至少一个备用服务器的优先级信息;
所述转发模块,还用于接收客户端发送的握手请求报文,并将所述握手请求报文转发到所述主服务器,以完成所述客户端与所述主服务器的TCP连接。
10.如权利要求8或9所述的装置,其特征在于,所述建立连接模块包括:
报文生成单元,用于当检测到所述主服务器发生故障时,根据故障时所跟踪到的客户端发起的数据报文中的客户端TCP序列号,生成备用握手请求报文;
报文发送单元,用于将所述备用握手请求报文发送到备用服务器,以与所述备用服务器建立TCP连接;
差值计算单元,用于根据备用服务器的初始TCP序列号以及所述故障时所跟踪到的客户端发起的数据报文中的主服务器TCP序列号,计算TCP序列号差值;
所述TCP序列号差值是用于构造所述中转数据报文的参数。
11.如权利要求10所述的装置,其特征在于,所述构造模块包括:
第一构造单元,用于根据所述TCP序列号差值将所述客户端发起的数据报文中的主服务器TCP序列号计算成备用服务器TCP序列号,以将所述客户端发起的数据报文构造成中转数据报文,并通知所述转发模块将所述中转数据报文转发到所述备用服务器,所述中转数据报文为所述备用服务器所预期的数据报文;
第二构造单元,用于根据所述TCP序列号差值将所述备用服务器发起的数据报文中的备用服务器TCP序列号计算成主服务器TCP序列号,以将所述备用服务器发起的数据报文构造成中转数据报文,并通知所述转发模块将所述中转数据报文转发到所述客户端,所述中转数据报文为所述客户端所预期的数据报文。
12.如权利要求9至11任一项所述的装置,其特征在于,还包括:
添加更新模块,用于当检测到所述服务器集群中增加有新的服务器时,将所述新的服务器添加至所述服务器优先级列表,并更新所述服务器优先级列表中的主服务器信息以及至少一个备用服务器的优先级信息。
13.如权利要求8至12任一项所述的装置,其特征在于,还包括:
删除模块,用于当检测到所述客户端与所述主服务器或所述备用服务器的TCP连接终结时,删除所记录以及所跟踪到的各个TCP序列号。
14.如权利要求9至13任一项所述的装置,其特征在于,还包括:
状态接收模块,用于接收所述服务器集群中各服务器在上线时所报告的工作状态;
状态监测模块,用于实时监测各服务器的工作状态,以便于及时检测到发生故障的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410467037.5A CN104243473B (zh) | 2014-09-12 | 2014-09-12 | 一种数据传输的方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410467037.5A CN104243473B (zh) | 2014-09-12 | 2014-09-12 | 一种数据传输的方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104243473A true CN104243473A (zh) | 2014-12-24 |
CN104243473B CN104243473B (zh) | 2018-11-30 |
Family
ID=52230822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410467037.5A Active CN104243473B (zh) | 2014-09-12 | 2014-09-12 | 一种数据传输的方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104243473B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104574876A (zh) * | 2015-01-16 | 2015-04-29 | 移康智能科技(上海)有限公司 | 一种基于监控系统中的监控管理方法及系统 |
CN105897486A (zh) * | 2016-06-07 | 2016-08-24 | 武汉邮电科学研究院 | 一种sctp协议服务热备份的方法 |
CN109544827A (zh) * | 2018-11-27 | 2019-03-29 | 福州市台江区金科电子科技有限公司 | 带数据备份装置的收银机及其使用方法 |
CN111726391A (zh) * | 2020-05-09 | 2020-09-29 | 深圳震有科技股份有限公司 | 一种平滑退出集群系统的方法、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262147A (zh) * | 2008-04-18 | 2008-09-10 | 深圳南瑞科技有限公司 | 远动工作站双机切换的装置 |
CN101594258A (zh) * | 2009-07-06 | 2009-12-02 | 杭州华三通信技术有限公司 | 一种双机热备技术中实时处理数据的方法、系统和设备 |
CN101702657A (zh) * | 2009-12-04 | 2010-05-05 | 杭州华三通信技术有限公司 | 一种nat业务的热备份方法和设备 |
EP2538637A2 (en) * | 2011-06-22 | 2012-12-26 | Telefonaktiebolaget L M Ericsson (publ) | Multi-path transmission control protocol proxy service |
CN102984172A (zh) * | 2012-12-12 | 2013-03-20 | 清华大学 | 基于LT code的数据中心多对一数据传输协议(LTTP) |
CN103944698A (zh) * | 2014-04-10 | 2014-07-23 | 四川华雁信息产业股份有限公司 | 一种双机热备方法 |
-
2014
- 2014-09-12 CN CN201410467037.5A patent/CN104243473B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262147A (zh) * | 2008-04-18 | 2008-09-10 | 深圳南瑞科技有限公司 | 远动工作站双机切换的装置 |
CN101594258A (zh) * | 2009-07-06 | 2009-12-02 | 杭州华三通信技术有限公司 | 一种双机热备技术中实时处理数据的方法、系统和设备 |
CN101702657A (zh) * | 2009-12-04 | 2010-05-05 | 杭州华三通信技术有限公司 | 一种nat业务的热备份方法和设备 |
EP2538637A2 (en) * | 2011-06-22 | 2012-12-26 | Telefonaktiebolaget L M Ericsson (publ) | Multi-path transmission control protocol proxy service |
CN102984172A (zh) * | 2012-12-12 | 2013-03-20 | 清华大学 | 基于LT code的数据中心多对一数据传输协议(LTTP) |
CN103944698A (zh) * | 2014-04-10 | 2014-07-23 | 四川华雁信息产业股份有限公司 | 一种双机热备方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104574876A (zh) * | 2015-01-16 | 2015-04-29 | 移康智能科技(上海)有限公司 | 一种基于监控系统中的监控管理方法及系统 |
CN104574876B (zh) * | 2015-01-16 | 2017-06-16 | 移康智能科技(上海)股份有限公司 | 一种基于监控系统中的监控管理方法及系统 |
CN105897486A (zh) * | 2016-06-07 | 2016-08-24 | 武汉邮电科学研究院 | 一种sctp协议服务热备份的方法 |
CN105897486B (zh) * | 2016-06-07 | 2019-05-10 | 武汉邮电科学研究院有限公司 | 一种sctp协议服务热备份的方法 |
CN109544827A (zh) * | 2018-11-27 | 2019-03-29 | 福州市台江区金科电子科技有限公司 | 带数据备份装置的收银机及其使用方法 |
CN109544827B (zh) * | 2018-11-27 | 2021-10-29 | 福州市台江区金科电子科技有限公司 | 带数据备份装置的收银机及其使用方法 |
CN111726391A (zh) * | 2020-05-09 | 2020-09-29 | 深圳震有科技股份有限公司 | 一种平滑退出集群系统的方法、系统及存储介质 |
CN111726391B (zh) * | 2020-05-09 | 2023-03-24 | 深圳震有科技股份有限公司 | 一种平滑退出集群系统的方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104243473B (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107645529B (zh) | 心跳包发送方法及装置 | |
CN103812823A (zh) | 虚拟机热迁移时配置信息迁移的方法、设备及系统 | |
CN109660639B (zh) | 一种数据上传方法、设备、系统及介质 | |
CN104243265A (zh) | 一种基于虚拟机迁移的网关控制方法、装置及系统 | |
CN103312605A (zh) | 一种网关设备身份设置的方法及管理网关设备 | |
CN110062054B (zh) | 物联网设备远程控制方法及系统 | |
CN104243473A (zh) | 一种数据传输的方法以及装置 | |
CN110932876B (zh) | 一种通信系统、方法及装置 | |
CN101262479B (zh) | 一种网络文件共享的方法、服务器和网络文件共享的系统 | |
CN103685398B (zh) | 通信连接建立方法及通信系统 | |
CN112202877A (zh) | 网关联动方法、网关、云服务器及用户终端 | |
CN106656659B (zh) | 一种网络路径的选择方法以及网络硬盘录像机 | |
CN104507054B (zh) | 一种群组成员信息更新的方法及相关设备 | |
CN103312558B (zh) | 计算机客户服务器系统中网络连接有效性监测方法及系统 | |
CN103401954A (zh) | 虚拟dhcp的实现方法 | |
EP3425850B1 (en) | Method and device for processing communication path | |
CN103166860A (zh) | 一种p2p叠加网络数据迁移的方法和装置 | |
RU2693903C1 (ru) | Способ, устройство и система обработки для расширенного порта | |
CN104168213A (zh) | 二层互联网络中数据报文处理方法、装置及网络设备 | |
CN106936608B (zh) | 一种建立ssh连接的方法、相关设备及系统 | |
US10972356B2 (en) | Method for selecting negotiation counterpart, method for responding to discovery message, and related apparatus | |
CN105281940A (zh) | 一种基于netconf协议的hello报文交互的方法、设备和系统 | |
CN105721231A (zh) | 一种业务质量感知探测方法及装置 | |
CN103795810A (zh) | 数据分发系统及方法以及该数据分发系统中的中心服务器 | |
CN110572290B (zh) | 主设备确定方法、装置、电子设备、存储介质及网络系统 |
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 |