一种网络服务系统及其数据传输方法
技术领域
本申请属于通信技术领域,尤其涉及一种网络服务系统及其数据传输方法。
背景技术
在物联网中,用户设备通常使用传输控制协议(Transmission ControlProtocol,TCP)与服务器进行通信。由于物联网应用的迅速发展,用户设备的部署数量可能呈现出高并发、高吞吐量的特点,单单使用固定服务器资源的单机TCP服务已无法满足业务需求,因此,亟需部署具有高并发、高可靠性的TCP服务集群系统来提供TCP服务。
发明内容
本申请实施例提供了一种网络服务系统及其数据传输方法,可以解决单机TCP服务无法满足业务需求的问题。
第一方面,本申请实施例提供了一种网络服务系统,包括负载均衡器、用户终端以及服务器集群,所述负载均衡器分别与所述用户终端和所述服务器集群通信连接,所述服务器集群包括至少一个服务器节点;
所述用户终端用于发送用于请求建立TCP连接的第一消息;
所述负载均衡器用于接收所述第一消息;并根据均衡策略从所述服务器集群中确定目标服务器节点;将所述第一消息发送至目标服务器节点;
所述目标服务器节点用于根据所述第一消息建立与所述用户终端的TCP连接,为所述TCP连接生成唯一的连接通道标识,基于所述连接通道标识进行数据传输。
在第一方面的一种可能的实现方式中,所述服务器集群通过Gossip协议进行通信。
在第一方面的一种可能的实现方式中,所述目标服务器节点还用于在上传所述用户终端发送的第二消息至应用进程时,将所述连接通道标识同时上传至所述应用进程。
在第一方面的一种可能的实现方式中,所述目标服务器节点还用于建立并记录所述连接通道标识与所述TCP连接的映射关系,并在所述服务器集群中订阅所述连接通道标识主题。
在第一方面的一种可能的实现方式中,所述负载均衡器还用于当接收到应用进程发送的第三消息时,将所述第三消息发送至服务器集群的任意服务器节点;
所述服务器节点用于将所述第三消息写入连接通道标识主题,由订阅所述连接通道标识主题的目标服务器节点将所述第三消息发送给所述用户终端。
第二方面,本申请实施例提供了一种数据传输方法,所述数据传输方法应用于如第一方面所述的网络服务系统,上述数据传输方法包括:
用户终端发送用于请求建立TCP连接的第一消息;
负载均衡器根据均衡策略从所述服务器集群中确定目标服务器节点,并将所述第一消息发送至目标服务器节点;
目标服务器节点根据所述第一消息建立与所述用户终端的TCP连接,为所述TCP连接生成唯一的连接通道标识;
基于所述连接通道标识进行数据传输。
在第二方面的一种可能的实现方式中,上述数据传输方法还包括:
还包括:
目标服务器节点建立并记录所述连接通道标识与所述TCP连接的映射关系。
进一步地,还包括:
目标服务器节点在所述服务器集群中订阅所述连接通道标识主题。
在第二方面的一种可能的实现方式中,上述基于所述连接通道标识进行数据传输,包括;
目标服务器节点接收所述用户终端发送的第二消息;
将所述第二消息和所述连接通道标识上传至应用进程。
进一步地,还包括:
当接收到应用进程发送的第三消息时,负载均衡器将所述第三消息发送至服务器集群的任意服务器节点;
所述服务器节点将所述第三消息写入连接通道标识主题,由订阅所述连接通道标识主题的目标服务器节点将所述第三消息发送给所述用户终端。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如前述第二方面所述数据传输方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前述第二方面所述数据传输方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第二方面中任一项所述的数据传输方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:通过负载均衡器在接收到用于请求建立TCP连接的第一消息后,选择服务器集群中的一个服务器节点作为目标服务器节点,并在建立了该目标服务器节点与用户终端的TCP连接后,为该TCP连接生成一个用于标识该连接的连接通道标识,在数据传输时基于该连接通道标识进行数据传输,上述网络服务系统具有高并发、高可靠性的特点,能够有效地为用户提供TCP服务。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种网络服务系统的结构示意图;
图2是本申请一实施例提供的一种数据传输方法的流程示意图;
图3是本申请一实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
如图1所示,本申请一实施例提供一种网络服务系统,包括负载均衡器10、用户终端20以及服务器集群30,所述负载均衡器10分别与所述用户终端20和所述服务器集群30通信连接,所述服务器集群30包括至少一个服务器节点;
所述用户终端20用于发送用于请求建立TCP连接的第一消息。
所述负载均衡器10用于接收所述第一消息;并根据均衡策略从所述服务器集群30中确定目标服务器节点;将所述第一消息发送至目标服务器节点。
所述目标服务器节点用于根据所述第一消息建立与所述用户终端20的TCP连接,为所述TCP连接生成唯一的连接通道标识,基于所述连接通道标识进行数据传输。
在本申请实施例中,上述网络服务系统能够为用户终端20提供TCP服务,该服务器集群30为TCP服务器集群。上述用户终端可以是手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备。
具体地,上述网络服务系统包括至少一个用户终端20,用户终端20在需要与服务器建立TCP连接时,会发送用于请求建立TCP连接的第一消息给到负载均衡器10,负载均衡器会基于该网络服务系统的负载均衡策略从服务器集群30中选择一个目标服务器节点,由该目标服务器节点来建立与用户终端20的TCP连接,为用户终端提供TCP服务。当目标服务器节点与用户终端建立了TCP连接后,该目标服务器节点会为该TCP连接生成一个唯一的连接通道标识,在后续进行数据传输的过程中,基于该连接通道标识进行数据传输。
需要说明的是,上述负载均衡策略可以根据实际业务场景来设置,本申请不对此加以限制。需要说明的是,上述负载均衡策略包括但不限于轮询策略、权重策略、IP绑定策略、响应时间策略以及按访问url的hash结果分配策略等。
具体地,上述服务器集群通过Gossip协议进行通信。基于Gossip协议构建服务器集群,使得服务器集群中的每个服务器节点能够实现数据共享。能够将接收到的数据共享到各个服务器节点中。需要说明的是,Gossip协议是一种洪泛信息发布机制。它的工作原理是:在一个有界网络中,每个节点都随机地与其他节点通信,经过各个节点间的无序通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致的。即使有的节点因宕机而重启,有新节点加入,但经过一段时间后,这些节点的状态也会与其他节点达成一致,也就是说,Gossip协议天然具有分布式容错的优点。
具体地,上述目标服务器节点还用于在上传所述用户终端20发送的第二消息至应用进程时,将所述连接通道标识同时上传至所述应用进程。
具体地,在建立了目标服务器节点与用户终端20之间的TCP连接后,就能实现两者间的数据传输。可理解的是,用户终端在需要与其他用户终端进行即时通讯时,就可以向已经建立了TCP连接的目标服务器节点发送第二消息,通过目标服务器节点将第二消息发送给上层的应用进程。上述第二消息就是用户终端与其他用户终端即时通讯的内容,上述应用进程可以是即时通讯进程。
具体地,上述目标服务器节点在将上述第二消息发送给应用进程的同时,会将与该用户终端的TCP连接的连接通道标识一同上传给应用进程,以此来表明是哪一个用户终端上传的信息(第二消息)。
具体地,目标服务器节点还用于建立并记录所述连接通道标识与所述TCP连接的映射关系,并在所述服务器集群中订阅所述连接通道标识主题。
具体地,当目标服务器节点建立了与用户终端20的TCP连接后,会在本地建立和记录该连接通道标识与TCP连接的映射关系,基于该映射关系就能通过连接通道标识来确定TCP连接,进而确定连接的两个终端,进而实现数据传输。
具体地,目标服务器节点会在服务器集群中订阅其与用户终端20的TCP连接对应的连接通道标识主题,当服务器集群的任意一个服务器节点接收到应用进程通过负载均衡器下发的第三消息后,只有订阅了该第三消息携带的连接通道标识主题的服务器节点才会将该第三消息发送给用户终端。
具体地,所述负载均衡器还用于当接收到应用进程发送的第三消息时,将所述第三消息发送至服务器集群的任意服务器节点。
所述服务器节点用于将所述第三消息写入连接通道标识主题,由订阅所述连接通道标识主题的目标服务器节点将所述第三消息发送给所述用户终端。
具体地,当上层的应用进程需要下发第三消息给用户终端时,第三消息中携带之前目标服务节点上传的TCP连接的连接通道标识。应用进程通过负载均衡器10发送第三消息到服务器集群30。服务器集群30中的任意一个服务器节点收到第三消息后,会将第三消息写入到连接通道标识主题中,订阅了该连接通道标识主题的节点(即目标服务节点)就会根据连接通道标识从本地映射中确定对应的TCP连接,然后将第三消息发送给用户终端20。上述第三消息是指其他用户终端通过应用进程发送的即时通讯的内容。
本申请实施例提供的网络服务系统,通过负载均衡器在接收到用于请求建立TCP连接的第一消息后,选择服务器集群中的一个服务器节点作为目标服务器节点,并在建立了该目标服务器节点与用户终端的TCP连接后,为该TCP连接生成一个用于标识该连接的连接通道标识,在数据传输时基于该连接通道标识进行数据传输,上述网络服务系统具有高并发、高可靠性的特点,能够有效地为用户提供TCP服务。
请参阅图2,图2示出了本申请一实施例提供了一种数据传输方法的实现流程图,上述数据传输方法应用于上一实施例提供的网络服务系统中,如图2所示,上述数据传输方法包括以下步骤,详述如下:
S101:用户终端发送用于请求建立TCP连接的第一消息。
具体地,用户终端在需要与服务器建立TCP连接时,会发送用于请求建立TCP连接的第一消息给到负载均衡器。
S102:负载均衡器根据均衡策略从所述服务器集群中确定目标服务器节点,并将所述第一消息发送至目标服务器节点。
具体地,负载均衡器会基于该网络服务系统的负载均衡策略从服务器集群中选择一个目标服务器节点,然后将用户终端发送的第一消息发送给该目标服务节点。
具体地,上述负载均衡策略可以根据实际业务场景来设置,本申请不对此加以限制。需要说明的是,上述负载均衡策略包括但不限于轮询策略、权重策略、IP绑定策略、响应时间策略以及按访问url的hash结果分配策略等。
S103:目标服务器节点根据所述第一消息建立与所述用户终端的TCP连接,为所述TCP连接生成唯一的连接通道标识。
具体地,目标服务器节点在接收到该第一消息后,会建立与用户终端的TCP连接,为用户终端提供TCP服务。当目标服务器节点与用户终端建立了TCP连接后,该目标服务器节点会为该TCP连接生成一个唯一的连接通道标识。
需要说明的是,目标服务器节点与用户终端建立TCP连接的过程包括三次握手的过程,服务器与终端的TCP连接的建立作为现有技术,在此不再加以赘述。
具体地,上述连接通道标识是唯一且与该TCP连接对应的标识信息,目标服务器节点可以在建立与用户终端建立了TCP连接后随机产生一个编号作为该TCP连接的连接通道标识,也可以根据用户终端与目标服务器节点的相关信息生成对应且唯一的编号作为该TCP连接的连接通道标识。上述编号可以包括字母、数字、特殊符号等多个字符的组合,在此不加以限制。需要说明的是,上述用户终端与目标服务器节点的相关信息包括但不限于用户终端的用户名、终端编号、终端地址、服务器节点地址、服务器节点名称、服务器节点编号等。
在本实施例的一种实现方式中,上述数据传输方法还包括以下步骤:
目标服务器节点建立并记录所述连接通道标识与所述TCP连接的映射关系。
具体地,当目标服务器节点建立了与用户终端的TCP连接后,会在本地建立和记录该连接通道标识与TCP连接的映射关系,基于该映射关系就能通过连接通道标识来确定TCP连接,进而确定连接的两个终端(用户终端和目标服务器节点)。
在本实施例的一种实现方式中,上述数据传输方法还包括以下步骤:
目标服务器节点在所述服务器集群中订阅所述连接通道标识主题。
具体地,目标服务器节点会在服务器集群中订阅其与用户终端的TCP连接对应的连接通道标识主题,当服务器集群的任意一个服务器节点接收到应用进程通过负载均衡器下发的第三消息后,只有订阅了该第三消息携带的连接通道标识主题的服务器节点才会将该第三消息发送给用户终端。
S104:基于所述连接通道标识进行数据传输。
具体地,在建立了目标服务器节点与用户终端之间的TCP连接后,就能实现两者间的数据传输。
具体地,上述数据传输包括用户终端上传数据及应用进程下发数据。
在本实施例的一种实现方式中,S104具体包括以下步骤:
目标服务器节点接收所述用户终端发送的第二消息;
将所述第二消息和所述连接通道标识上传至应用进程。
具体地,用户终端在需要与其他用户终端进行即时通讯时,就可以向已经建立了TCP连接的目标服务器节点发送第二消息,通过目标服务器节点将第二消息发送给上层的应用进程。上述第二消息就是用户终端与其他用户终端即时通讯的内容,上述应用进程可以是即时通讯进程。
在本实施例的一种实现方式中,S104还包括以下步骤:
当接收到应用进程发送的第三消息时,负载均衡器将所述第三消息发送至服务器集群的任意服务器节点;
所述服务器节点将所述第三消息写入连接通道标识主题,由订阅所述连接通道标识主题的目标服务器节点将所述第三消息发送给所述用户终端。
当上层的应用进程需要下发第三消息给用户终端时,第三消息中携带之前目标服务节点上传的TCP连接的连接通道标识。应用进程通过负载均衡器发送第三消息到服务器集群。服务器集群中的任意一个服务器节点收到第三消息后,会将第三消息写入到连接通道标识主题中,订阅了该连接通道标识主题的节点(即目标服务节点)就会根据连接通道标识从本地映射中确定对应的TCP连接,然后将第三消息发送给用户终端。上述第三消息是指其他用户终端通过应用进程发送的即时通讯的内容。
本实施例提供的数据传输方法同样能够通过负载均衡器在接收到用于请求建立TCP连接的第一消息后,选择服务器集群中的一个服务器节点作为目标服务器节点,并在建立了该目标服务器节点与用户终端的TCP连接后,为该TCP连接生成一个用于标识该连接的连接通道标识,在数据传输时基于该连接通道标识进行数据传输,上述网络服务系统具有高并发、高可靠性的特点,能够有效地为用户提供TCP服务。
图3为本申请一实施例提供的终端设备的结构示意图。如图3所示,该实施例的终端设备3包括:至少一个处理器30(图3中仅示出一个)、存储器31以及存储在所述存储器31中并可在所述至少一个处理器30上运行的计算机程序32,所述处理器30执行所述计算机程序32时实现上述任意各个数据传输方法实施例中的步骤。
所述终端设备3可以是桌上型计算机、笔记本、掌上电脑及云端终端设备等计算设备。该终端设备可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图3仅仅是终端设备3的举例,并不构成对终端设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),该处理器30还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器31在一些实施例中可以是所述终端设备3的内部存储单元,例如终端设备3的硬盘或内存。所述存储器31在另一些实施例中也可以是所述终端设备3的外部存储设备,例如所述终端设备3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器31还可以既包括所述终端设备3的内部存储单元也包括外部存储设备。所述存储器31用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
示例性的,所述计算机程序32可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器31中,并由所述处理器30执行,以完成本申请。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序32在所述终端设备3中的执行过程。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。