首页 / 一种通信方法、装置、服务器及存储介质

一种通信方法、装置、服务器及存储介质有效专利 发明

技术领域

[0001] 本公开涉及通信技术领域,尤其涉及一种通信方法、装置、服务器及存储介质。

相关背景技术

[0002] 目前,当客户端节点需要获取业务数据时,可以向服务发现节点发送服务端节点确定请求,以使得该服务发现节点可以确定出一个为该客户端节点提供服务的服务端节点。如此,该客户端节点可以与该服务端节点建立传输控制协议(transmission control protocol,TCP)连接,并且从该服务端节点中获取业务数据。
[0003] 但是,当大量客户端节点需要获取业务数据时,由于每一次获取业务数据都会发送一次服务端节点确定请求,即服务发现节点可能接收到了大量的请求,如此可能会对服务发现节点产生过大的服务压力,影响服务发现节点为每一个客户端节点确定服务端节点的过程,可能会减缓每一个客户端节点与对应的服务端节点之间建立TCP连接的过程,进而影响客户端节点获取业务数据。

具体实施方式

[0046] 为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0047] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0048] 还应当理解的是,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素和/或组件的存在或添加。
[0049] 本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
[0050] 如背景技术中所描述,由于现有技术中,当大量客户端节点需要获取业务数据(或者当某一个客户端节点)时,服务发现节点可能接收到了大量的服务端节点确定请求,可能会对服务发现节点造成较大的服务压力,基于此,本公开实施例提供一种通信方法,客户端节点可以直接从目标队列中获取目标TCP连接并基于该目标TCP连接获取目标业务数据,无需在每一次请求获取业务数据时均向服务发现节点发送服务端节点确定请求,能够提升业务数据的获取效率。
[0051] 本公开实施例提供的通信方法、装置、服务器及存储介质,应用于业务数据获取场景中。当客户端节点接收到业务数据请求时,可以依据本公开实施例提供的方法,获取目标队列,并且将目标队列中的空闲TCP连接确定为目标TCP连接,然后基于该目标TCP连接获取目标业务数据。
[0052] 以下结合附图对本公开实施例提供的通信方法进行示例性说明:
[0053] 图1为本公开实施例提供的一种通信系统示意图,如图1所示,该通信系统中可以包括终端101、客户端节点102、服务发现节点103、服务端节点104、服务端节点105以及服务端节点106,客户端节点101可以通过有线网络或无线网络与终端101、服务发现节点102以及服务端节点(包括服务端节点103、服务端节点104以及服务端节点105)之间建立连接。
[0054] 其中,客户端节点102可以是一个单独的服务器,或者可以是由多个服务器构成的服务器集群。本公开实施例对服务器的具体实现方式不作限定。
[0055] 具体的,终端101可以向客户端节点101发送业务数据请求,以使得客户端节点101可以将该业务数据请求发送至某一个服务端节点,进而获取目标业务数据。
[0056] 客户端节点102可以向服务发现节点103发送节点获取请求,即请求获取支持目标业务的服务端节点的节点信息。客户端节点102还可以与服务端节点(即服务端节点104、服务端节点105以及服务端节点106)建立TCP连接,以使得客户端节点102可以基于已建立完成的TCP连接从服务端节点获取目标业务数据。
[0057] 需要说明的是,图1中示出的1个终端、1个客户端节点、1个服务发现节点以及3个服务端节点为本公开实施例的一种示例,本公开实施例不对终端的数量、客户端节点的数量、服务发现节点的数量以及服务端节点的数量作具体限定。
[0058] 如图2所示,当通信方法应用于上述客户端节点102时,该通信方法可以包括S101‑S104。
[0059] S101、客户端节点接收业务数据请求。
[0060] 其中,该业务数据请求包括目标业务的标识,该业务数据请求用于请求获取目标业务数据。
[0061] 应理解,当用户需要获取目标业务数据时,可以在终端上输入相应的指令,终端在接收并响应该指令后,可以向该客户端节点发送该业务数据请求,以使得该客户端节点可以从某一个可以为该用户提供服务的服务端节点中获取目标业务数据,并返回给用户(或终端),该目标业务数据即为该目标业务对应的业务数据。
[0062] 本公开实施例中,上述业务数据请求可以为超文本传输协议(hypertext transfer protocol,HTTP)请求,也可以为远程过程调用(remote procedure call,RPC)请求。
[0063] S102、客户端节点获取目标业务的标识对应的目标队列。
[0064] 其中,该目标队列中包括多个TCP连接,该多个TCP连接均支持该目标业务数据的传输,其中,一个TCP连接用于表征该客户端节点与一个服务端节点之间的通信关系。
[0065] 可以理解的是,该多个TCP连接对应的服务端节点均可以为该客户端节点提供该目标业务数据。
[0066] S103、客户端节点将目标队列中包括的空闲TCP连接,确定为目标TCP连接。
[0067] 应理解,一个业务数据请求可以基于一个TCP连接进行发送,以及基于该TCP连接接收相应的业务数据响应(即获取目标业务数据)。具体的,一个TCP连接在同一时间只能被一个业务数据请求使用。
[0068] 当该目标队列中包括空闲TCP连接时,说明该目标队列中存在没有被其他业务数据请求使用的TCP连接,如此,客户端节点可以从该空闲TCP连接中确定(或选择)一个TCP连接,并将该TCP连接确定为目标TCP连接,以供该业务数据请求(即S101中的业务数据请求)使用。
[0069] S104、客户端节点基于目标TCP连接,获取目标业务数据。
[0070] 应理解,当客户端节点与某一个服务端节点存在TCP连接时(即该客户端节点与该服务端节点已经存在通信关系),该客户端节点可以从该服务端节点中获取业务数据,否则,该客户端节点可能不能从该服务端节点获取业务数据。由于该目标TCP连接可以表征该客户端节点与该目标TCP连接对应的服务端节点之间的通信关系,如此,在客户端节点确定该目标TCP连接之后,该客户端节点可以基于该目标TCP连接与从该目标TCP连接对应的服务端节点通信,从而获取该目标业务数据。
[0071] 上述实施例提供的技术方案至少能够带来以下有益效果:由S101‑S104可知,客户端节点可以接收业务数据请求,即请求获取目标业务数据;然后该客户端节点还可以获取包括有多个TCP连接的目标队列;该客户端节点可以将该目标队列中的空闲TCP连接,确定为目标TCP连接,并且基于该目标TCP连接获取该目标业务数据。本公开实施例中,由于目标TCP连接可以表征客户端节点与该目标TCP连接对应的服务端节点之间的通信关系,如此客户端节点在确定出该目标TCP连接之后,可以基于该目标TCP连接与该目标TCP连接对应的服务端节点通信,并且从该服务端节点中获取目标业务数据。同时,该目标队列是由多个已经建立完成的TCP连接组成,如此当客户端节点接收到业务数据请求时,无需再向服务发现节点发送服务端节点确定请求,可以直接从该目标队列中确定并获取该目标TCP连接,进而完成目标业务数据的获取过程,能够提升业务数据的获取效率。
[0072] 结合图2,如图3所示,在本公开实施例的一种实现方式中,上述客户端节点获取目标业务的标识对应的目标队列,具体可以包括S1021‑S1023。
[0073] S1021、客户端节点获取目标业务的标识对应的当前队列。
[0074] 其中,该当前队列中包括的TCP连接均支持该目标业务数据的传输。
[0075] S1022、在当前队列中不存在空闲TCP连接的情况下,客户端节点将业务数据请求确定为被阻塞请求。
[0076] 应理解,若当前队列中不存在空闲TCP连接,说明当前队列中包括的TCP连接已经全部被其他业务数据请求使用,该业务数据请求(即S101中的业务数据请求)可能需要等待该当前队列中包括的TCP连接被释放后才可以使用,即没有任何一个TCP连接可以供该业务数据请求使用,如此该业务数据请求无法被发送至某一个服务端节点,进而无法完成目标业务数据的获取过程。本公开实施例中,客户端节点可以将无法被发送(具体为无法从客户端节点发送至服务端节点)的业务数据请求确定为被阻塞请求。
[0077] 可选地,若当前队列中存在空闲TCP连接,说明当前队列中存在至少一个TCP连接未被其他业务数据请求使用,该至少一个TCP连接即为空闲TCP连接,客户端节点可以将当前队列确定为上述目标队列,并且从该至少一个TCP连接中确定上述目标TCP连接,从而获取目标业务数据。
[0078] S1023、在被阻塞请求的数量大于或等于数量阈值的情况下,客户端节点对当前队列执行扩容操作,以得到目标队列。
[0079] 其中,该目标队列中包括的TCP连接的数量大于该当前队列中包括的TCP连接的数量。
[0080] 应理解,客户端节点在同一时刻(或者在一定的时间内)可能会获取到多个业务类型相同(即包括的业务的标识相同)的业务数据请求。当客户端节点获取到该多个业务类型相同的业务数据请求,并且该当前队列中不存在空闲TCP连接时,客户端节点可以将多个业务类型相同的业务数据请求全部确定为被阻塞请求,该被阻塞请求为该目标业务对应的被阻塞请求。
[0081] 在一种实现方式中,该数量阈值可以为该当前队列中包括的TCP连接的数量,即当被阻塞请求的数量大于或等于当前队列中包括的TCP连接的数量时,客户端节点对该当前队列执行扩容操作。
[0082] 应理解,当被阻塞请求的数量大于或等于该当前队列中包括的TCP连接的数量时,说明该当前队列的空闲TCP连接的最大数量已经无法满足当前所有被阻塞请求的使用,如此,客户端节点可以对该当前队列执行扩容操作,以得到TCP连接的数量更多的第二队列。
[0083] 可选地,该扩容操作可以为呈指数形式扩张的方式。
[0084] 示例性的,图4为本公开实施例提供的呈指数形式进行扩容操作的一种示例。如图4所示,第一队列中包括的TCP连接的数量为8个,第二队列中包括的TCP连接的数量为16个,第三队列中包括的TCP连接的数量为32个。若当前队列中包括的TCP连接的数量与该第一队列中包括的TCP连接的数量相同(即8个),则执行扩容操作后得到的目标队列中包括的TCP连接的数量可以与该第二队列中包括的TCP连接的数量相同(即16个),也可以与该第三队列中包括的TCP连接的数量相同(即32个)。
[0085] 可选地,继续如图4所示,本公开实施例中,客户端节点还可以对目标队列执行缩容操作,以得到包括的TCP连接数量较少的队列。
[0086] 至此,客户端节点可以从该目标队列中的空闲TCP连接确定为目标TCP连接,并且基于该目标TCP连接获取目标业务数据。
[0087] 上述实施例提供的技术方案至少能够带来以下有益效果:由S1021‑S1023可知,客户端节点可以获取目标业务的标识对应的当前队列,并且在该当前队列中不存在空闲TCP连接的情况下,将该业务数据请求确定为被阻塞请求;然后在被阻塞请求的数量大于或等于数量阈值的情况下,客户端节点对该当前队列执行扩容操作,以得到目标队列。本公开实施例中,当被阻塞请求的数量大于或等于数量阈值时,说明当前队列的空闲TCP连接的最大数量可能无法满足当前所有被阻塞请求的使用,至此,该所有被阻塞的请求无需等待当前队列中包括的TCP连接的释放(即无需等待当前队列存在空闲TCP连接),客户端节点可以对当前队列执行扩容操作,以得到包括的TCP连接的数量更多的目标队列,以供该所有被阻塞的请求使用,能够快速、有效地得到目标队列,进而客户端节点可以从该目标队列中获取(或确定)目标TCP连接,进而节省目标业务数据的获取时间。
[0088] 结合图2,如图5所示,在本公开实施例的一种实现方式中,上述客户端节点获取目标业务的标识对应的目标队列,具体可以包括S1024‑S1027。
[0089] S1024、客户端节点向服务发现节点发送节点获取请求。
[0090] 其中,该节点获取请求包括上述目标业务的标识,该节点获取请求用于请求获取支持该目标业务的服务端节点的节点信息。
[0091] 应理解,支持该目标业务的一个服务端节点即为可以为客户端节点提供目标业务数据的服务端节点,该服务端节点的节点信息可以包括该服务端节点的互联网协议(internet protocol,IP)地址和该服务端节点的端口信息(具体通过哪个端口可以与该客户端节点建立TCP连接)。
[0092] 步骤A、服务发现节点接收客户端节点发送的节点获取请求。
[0093] 结合上述实施例的描述,应理解,该节点获取请求包括该目标业务的标识,该节点获取请求用于请求获取支持该目标业务的服务端节点的节点信息。
[0094] 步骤B、服务发现节点确定支持目标业务的服务端节点。
[0095] 应理解,服务发现节点可以基于目标业务的标识确定出支持目标业务的服务端节点。
[0096] 步骤C、服务发现节点向客户端节点发送多个服务端节点的节点信息。
[0097] 其中,该多个服务端节点为上述支持目标业务的服务端节点。
[0098] 需要说明的是,图5中示出的通信过程还包括上述步骤A‑步骤C,该步骤A‑步骤C是上述图1中服务发现节点103相关的执行步骤。
[0099] S1025、客户端节点接收服务发现节点发送的多个服务端节点的节点信息。
[0100] S1026、客户端节点与多个服务端节点分别建立通信连接,以得到多个TCP连接。
[0101] 应理解,客户端节点与一个服务端节点建立通信连接可以得到一个TCP连接,该TCP连接用于表征该客户端节点与该服务端节点之间的通信关系。
[0102] 在本公开实施例的一种实现方式中,该多个服务端节点为支持目标业务的全部服务端节点,即多个服务端节点的数量与支持目标业务的全部服务端节点的数量相同,此时客户端节点可以直接与该多个服务端节点分别建立通信连接,以得到该多个TCP连接。
[0103] 在本公开实施例的另一种实现方式中,该多个服务端节点为支持目标业务的全部服务端节点中的一部分,具体为多个服务端节点的数量小于支持目标业务的全部服务端节点的数量,此时客户端节点可以从该全部服务端节点中确定该多个服务端节点,进而与该多个服务端节点建立通信连接,以得到该多个TCP连接。
[0104] 对于上述另一种实现方式,可以具体分为两种情况。一种情况下,客户端节点可以从该全部服务端节点中随机选取M个服务端节点(M>1),并将该M个服务端节点确定为该多个服务端节点。
[0105] 另一种情况下,客户端节点还可以为该全部服务端节点分配权重值,然后从该全部服务端节点中选择权重值最大的M个服务端节点,并将该M个服务端节点确定为该多个服务端节点。
[0106] S1027、客户端节点将多个TCP连接按照预设使用顺序排序,以得到目标队列。
[0107] 应理解,当该多个TCP连接为随机选取的M个服务端节点对应的TCP连接时,该预设使用顺序可以为该M个服务端节点的选取顺序。当该多个TCP连接为按照权重值大小选取的M个服务端节点对应的TCP连接时,该预设使用顺序为多个权重值从大到小的顺序。例如,若目标队列中包括第一TCP连接和第二TCP连接,该第一TCP连接对应的服务端节点的权重值大于该第二TCP连接对应的服务端节点的权重值,则在该目标队列中该第一TCP连接的使用顺序在该第二TCP连接之前,即业务数据请求可以优先使用该第一TCP连接。
[0108] 需要说明的是,本发明实施例不限制上述S101与上述S1024‑S1027的执行顺序。例如,可以先执行S101后执行S1024‑S1027(即客户端节点可以在接收到业务数据请求之后,再向服务发现节点发送节点获取请求,进而得到目标队列),或者可以先执行S1024‑S1027后执行S101(即客户端节点可以先向服务发现节点发送节点获取请求,即在得到目标队列之后,再接收业务数据请求,此时可以理解为已经得到该目标队列,客户端节点可以直接拿来使用),或者可以同时执行S101和S1024‑S1027。
[0109] 上述实施例提供的技术方案至少能够带来以下有益效果:由S1024‑S1027可知,客户端节点可以向服务发现节点发送节点获取请求,即请求获取支持目标业务的服务端节点的节点信息;该客户端节点在接收到该服务发现节点发送的多个服务端节点的节点信息之后,可以与该多个服务端节点分别建立通信连接,以得到多个TCP连接;然后该客户端节点将该多个TCP连接按照预设使用顺序排序,以得到目标队列。本公开实施例中,客户端节点无需在每一次获取业务数据时均向服务发现节点发送服务端节点确定请求,可以(在接收业务数据请求的同时、之前或之后)向服务发现节点发送节点获取请求,即可以一次性得获取到多个服务端节点,并且与该多个服务端节点分别建立通信连接以得到多个TCP连接,进而得到目标队列。如此,当客户端节点需要获取业务数据时,可以直接从该已经得到的目标队列中确定目标TCP连接,从而完成目标业务数据的获取过程。能够合理、准确地得到目标队列,进而客户端节点可以从该目标队列中获取(或确定)目标TCP连接,提升通信效率。
[0110] 需要说明的是,本公开实施例中的目标队列可以是通过上述扩容操作得到的(即S1023),也可以是通过上述通信交互过程得到的(即S1024‑S1027和步骤A‑步骤C)。应理解,该目标队列中包括至少一个空闲TCP连接,如此客户端节点可以从该至少一个空闲TCP连接中确定出目标TCP连接,进而获取目标业务数据。
[0111] 在一种实现方式中,本公开实施例中的目标队列为双端阻塞队列。
[0112] 应理解,双端阻塞队列是一种双端队列,向其中加入元素或从中取出元素都是线程安全的。本公开实施例中,一个元素即为一个TCP连接。
[0113] 需要说明的是,如果某一个队列是满的,插入线程将会被阻塞直到一个移除元素的线程从该队列中取出一个元素。同样,如果该队列是空的,移除元素的线程会被阻塞直到一个插入元素的线程向队列中插入了一个元素。
[0114] 具体的,客户端节点可以基于一个插入元素的线程从该目标队列的两端(包括开始位置和结束位置)插入(或添加)元素(即TCP连接)。本公开实施例中,客户端节点可以基于一个移除元素的线程从该目标队列的某一个端(开始位置或结束位置,也可以理解为首端或尾端)获取元素(即一个TCP连接),并将该TCP连接确定为目标TCP连接以供上述业务数据请求使用。
[0115] 上述实施例提供的技术方案至少能够带来以下有益效果:由于本公开实施例中的目标队列可以是双端阻塞队列,即该目标队列的两端都可以插入或获取元素,如此客户端节点可以从该目标队列的某一个端(开始位置或结束位置,也可以理解为首端或尾端)获取并确定目标TCP连接,能够提升目标TCP连接的确定效率,进而提升业务数据的获取效率。
[0116] 结合图2,如图6所示,在本公开实施例的一种实现方式中,上述客户端节点将目标队列中的空闲TCP连接,确定为目标TCP连接,具体可以包括S1031。
[0117] S1031、客户端节点获取目标队列中位于开始位置的空闲TCP连接,并将获取到的空闲TCP连接确定为目标TCP连接。
[0118] 应理解,该目标队列中可能会存在多个空闲TCP连接。本公开实施例中,客户端节点(具体可以为上述移除元素的线程)可以从该目标队列的开始位置(即首端)获取一个空闲TCP连接,并将该空闲TCP连接确定为目标TCP连接,从而获取目标业务数据。
[0119] 上述实施例提供的技术方案至少能够带来以下有益效果:由S1031可知,客户端节点可以从目标队列的开始位置(即首端)获取一个空闲TCP连接,并将该空闲TCP连接确定为目标TCP连接,能够基于相同的标准获取并确定目标TCP连接,提升通信系统的稳定性。
[0120] 在本公开实施例的一种实现方式中,上述客户端节点对当前队列执行扩容操作以得到目标队列的过程可以是基于上述客户端节点与服务端节点之间的交互过程实现的,具体可以包括步骤D‑步骤G。
[0121] 步骤D、在被阻塞请求的数量大于或等于数量阈值的情况下,客户端节点向服务发现节点发送节点获取请求。
[0122] 步骤E、客户端节点接收服务发现节点发送的至少两个服务端节点的节点信息。
[0123] 应理解,该至少两个服务端节点为支持上述目标业务的服务端节点。
[0124] 步骤F、客户端节点与至少两个服务端节点分别建立TCP连接,以得到至少两个TCP连接。
[0125] 步骤G、客户端将该至少两个TCP连接添加至当前队列,以得到目标队列。
[0126] 可以理解的是,此时目标队列中包括的TCP连接的数量大于当前队列中包括的TCP连接的数量,即完成当前队列的扩容过程。
[0127] 本公开实施例中,客户端节点可以在当前队列的结束位置(或尾端)添加该至少两个TCP连接,以得到该目标队列。
[0128] 在一种情况下,若当前队列中包括的至少一个TCP连接均未被使用,则客户端节点将该至少两个TCP连接添加到该至少一个TCP连接之后,即该至少一个TCP连接的使用顺序在该至少两个TCP连接之前。
[0129] 在另一种情况下,若该至少一个TCP连接中的某一个TCP连接(例如第一TCP连接)已经被其他业务数据请求使用并且可能即将被释放(或即将使用完成),客户端节点可以将该至少两个TCP连接添加到该第一TCP连接之后(即该至少两个TCP连接在被添加至当前队列之前,该第一TCP连接已经被释放)。客户端节点也可以将该至少两个TCP连接添加到该第一TCP连接之前(即该至少两个TCP连接先被添加到当前队列,之后该第一TCP连接才被释放)。
[0130] 结合图2,如图7所示,在上述客户端节点基于目标TCP连接,获取目标业务数据之后,本公开实施例提供的通信方法还包括S105‑S106。
[0131] S105、客户端节点确定业务数据请求对应的响应时间。
[0132] 其中,该响应时间用于表征客户端节点基于目标TCP连接发送该业务数据请求,并且获取到目标业务数据的时长。
[0133] 应理解,该业务数据请求为S101中的业务数据请求,客户端节点在接收到该业务数据请求,并且确定出目标TCP连接之后,可以基于该目标TCP连接与该目标TCP连接对应的服务端节点通信,从而获取目标业务数据。
[0134] 具体的,客户端节点可以获取并记录发送(即向目标TCP连接对应的服务端节点发送)该业务数据请求的时间,以及获取并记录接收目标业务数据(即从目标TCP连接对应的服务端节点获取到该目标业务数据)的时间,并且将该两个时间的差值确定为业务数据请求对应的响应时间。
[0135] 可选地,由于客户端节点确定目标TCP连接的时间客户端节点发送业务数据请求的时间间隔较短,客户端节点也可以将确定目标TCP连接的时间,与接收目标业务数据的时间之间的时间差确定为该响应时间。
[0136] S106、在响应时间小于第一时间阈值的情况下,客户端节点将目标TCP连接添加至目标队列的开始位置。
[0137] 应理解,当该响应时间小于第一时间阈值时,说明基于该目标TCP连接对应的获取目标业务数据的时延较低。又由于,上述实施例中,客户端节点可以从目标队列的开始位置处获取空闲TCP连接,并将该空闲TCP连接确定目标TCP连接。至此,当对应时延较低的目标TCP连接在使用完成(即被释放后),可以将其从该目标队列的开始位置(或首端)插入,以使得下一个业务数据请求可以使用(或优先使用)该对应时延较低的目标TCP连接,以提升业务数据的获取效率。
[0138] 可以理解的是,当客户端节点将该目标TCP连接添加至该目标队列的开始位置时,可以理解为该目标TCP连接分配了一个较高的优先级,即当获取到一个新的业务数据请求(或者下一个业务数据请求)时,优先使用该目标TCP连接,即仍然遵循从目标队列的开始位置获取空闲TCP连接。
[0139] 上述实施例提供的技术方案至少能够带来以下有益效果:由S105‑S106可知,客户端节点可以确定业务数据请求对应的响应时间;在该响应时间小于第一时间阈值的情况下,客户端节点将该目标TCP连接添加至目标队列的开始位置。本公开实施例中,当该响应时间小于第一时间阈值时,说明基于该目标TCP连接对应的获取目标业务数据的时延较低,客户端节点可以为该目标TCP连接分配一个较高的优先级,即当获取到一个新的业务数据请求(或者下一个业务数据请求)时,可以优先使用对应时延较低的目标TCP连接,提升业务数据的获取效率。
[0140] 结合图7,如图8所示,在上述客户端节点确定业务数据请求对应的响应时间之后,本公开实施例提供的通信方法还包括S107。
[0141] S107、在响应时间大于或等于第一时间阈值的情况下,客户端节点将目标TCP连接添加至目标队列的结束位置。
[0142] 应理解,当该响应时间大于或等于该第一时间阈值时,说明该目标TCP连接对应的获取目标业务数据的时延较高,客户端节点可以将该目标TCP连接添加至该目标队列的结束位置(或尾端),同理,可以理解为客户端节点为该目标TCP连接分配了一个较低的优先级。该目标TCP连接在被重新插入(或添加)到该目标队列中对应的使用顺序可以参见上述第一TCP连接与至少两个TCP连接之间的相关描述,此处不再赘述。
[0143] 可选地,上述第一时间阈值可以为当前所有业务数据请求对应的响应时间的平均值。
[0144] 需要说明的是,当目标TCP连接对应的获取目标业务数据的时延较低时,将该目标TCP连接重新添加至目标队列的开始位置;否则,即当目标TCP连接对应的获取目标业务数据的时延较高时,将该目标TCP连接重新添加至目标队列的结束位置。结合上述客户端节点从目标队列的开始位置获取(或确定)目标TCP连接,即可以理解为客户端节点每次都可以获取并使用优先级较高的TCP连接,TCP连接的优先级较高也对应了其所对应的服务端节点的优先级较高,即若某一个服务端节点的优先级较高,说明该服务端节点的响应速度较快,否则说明该服务端节点的响应时间较慢,如此在一定程度上满足了多个服务端节点的负载均衡。
[0145] 并且,某一TCP连接(例如目标TCP连接)在被当前业务数据请求使用之后,仍然可以被下一个业务数据请求使用。本公开实施例中的TCP连接复用方式,客户端节点无需在每次接收到业务数据请求之后,都重新建立TCP连接,即已经建立完成的TCP连接可以重复使用,能够降低服务端节点的性能负载,减少客户端节点与服务端节点新建TCP连接所带来的时延。
[0146] 上述实施例提供的技术方案至少能够带来以下有益效果:由S107可知,当该响应时间大于或等于该第一时间阈值时,说明基于该目标TCP连接对应的获取目标业务数据的时延较高,客户端节点可以将该目标TCP连接添加至该目标队列的结束位置,即为该目标TCP连接分配一个较低的优先级,以使得该客户端节点获取到下一个业务数据请求时,可以优先使用其他的TCP连接(即优先级较高的TCP连接),从而提升业务数据的获取效率。
[0147] 结合图7,如图9所示,在上述客户端节点确定业务数据请求对应的响应时间之后,本公开实施例提供的通信方法还包括S108‑S109。
[0148] S108、在响应时间大于第二时间阈值的情况下,客户端节点重新从目标队列中获取TCP连接。
[0149] 其中,该第二时间阈值大于第一时间阈值。
[0150] 应理解,当该响应时间大于该第二时间阈值时,说明该获取目标业务数据的时延已经超过用户对时延的需求,即该目标业务数据是客户端节点超时获取到的。
[0151] 可选地,当该响应时间大于该第二时间阈值,或者当该客户端节点获取到的目标业务数据中包括错误信息时,该客户端节点可以丢弃该目标TCP连接。
[0152] S109、客户端节点基于重新获取的TCP连接,获取目标业务数据。
[0153] 可理解的是,当响应时间大于第二时间阈值,即上述S104中获取到的目标业务数据的时延已经超过用户对时延的需求时,用户可能不需要该目标业务数据,或者客户端节点可以将该目标业务数据确定为无效数据。如此,客户端节点需要从目标队列中重新获取TCP连接,并基于该重新获取的TCP连接获取目标业务数据,以使得客户端节点(或用户)可以获取到有效数据(即基于该重新获取的TCP连接对应的响应时间小于或等于第二时间阈值)
[0154] 上述实施例提供的技术方案至少能够带来以下有益效果:由S108‑S109可知,当客户端节点超时获取到目标业务数据时(即响应时间大于第二时间阈值),可以重新从目标队列中获取TCP连接,并且基于该重新获取的TCP连接获取目标业务数据,以使得客户端节点可以在第二时间阈值内获取到目标业务数据(即获取到有效的目标业务数据),能够降低通信时延,提升通信效率。
[0155] 可选地,客户端节点可以为目标队列中包括的多个TCP连接分配连接时长阈值,对于每一个TCP连接,其所对应的连接时长阈值可以相同,也可以不同。当某一个TCP连接在该连接时长阈值内未被使用(即没有业务数据请求使用该TCP连接,或者该TCP连接未传输业务数据)时,客户端节点可以断开该TCP连接,即断开客户端节点与该TCP连接对应的服务端节点之间的通信关系。
[0156] 示例性的,图10为本公开实施例提供的将目标TCP连接添加至目标队列的一种示例。如图10所示,客户端节点可以从目标队列的开始位置获取TCP连接,并将该TCP连接确定为目标TCP连接(例如TCP连接1)。当响应时间小于第一时间阈值的情况时,客户端节点可以将目标TCP连接添加至目标队列的开始位置;当响应时间大于或等于第一时间阈值的情况下,客户端节点可以将目标TCP连接添加至目标队列的结束位置。当响应时间大于第二时间阈值时,客户端节点可以丢弃目标TCP连接。
[0157] 如图11所示,当通信方法基于客户端节点与服务发现节点的交互过程中时,该通信方法可以包括S201‑S210。
[0158] S201、客户端节点接收业务数据请求。
[0159] 其中,该业务数据请求包括目标业务的标识,该业务数据请求用于请求获取目标业务数据。
[0160] S202、客户端节点向服务发现节点发送节点获取请求。
[0161] 其中,该节点获取请求包括上述目标业务的标识,该节点获取请求用于请求获取支持该目标业务的服务端节点的节点信息。
[0162] S203、服务发现节点接收客户端节点发送的节点获取请求。
[0163] S204、服务发现节点确定支持目标业务的服务端节点。
[0164] S205、服务发现节点向客户端节点发送多个服务端节点的节点信息。
[0165] S206、客户端节点接收服务发现节点发送的多个服务端节点的节点信息。
[0166] S207、客户端节点与多个服务端节点分别建立通信连接,以得到多个TCP连接。
[0167] 其中,该多个TCP连接均支持该目标业务数据的传输,其中,一个TCP连接用于表征该客户端节点与一个服务端节点之间的通信关系。
[0168] S208、客户端节点将多个TCP连接按照预设使用顺序排序,以得到目标队列。
[0169] S209、客户端节点将目标队列中包括的空闲TCP连接,确定为目标TCP连接。
[0170] S210、客户端节点基于目标TCP连接,获取目标业务数据。
[0171] 以上实施例提供的技术方案至少带来以下有益效果:由S201‑S210可知,客户端节点可以接收业务数据请求,即请求获取目标业务数据;然后向服务发现节点发送节点获取请求,即请求获取支持目标业务的服务端节点的节点信息;该客户端节点在接收到该服务发现节点发送的多个服务端节点的节点信息之后,可以与该多个服务端节点分别建立通信连接,以得到多个TCP连接;然后该客户端节点将该多个TCP连接按照预设使用顺序排序,以得到目标队列;该客户端节点可以将该目标队列中的空闲TCP连接,确定为目标TCP连接,并且基于该目标TCP连接获取该目标业务数据。本公开实施例中,由于目标TCP连接可以表征客户端节点与该目标TCP连接对应的服务端节点之间的通信关系,如此客户端节点在确定出该目标TCP连接之后,可以基于该目标TCP连接与该目标TCP连接对应的服务端节点通信,并且从该服务端节点中获取目标业务数据。同时,该目标队列是由多个已经建立完成的TCP连接组成,如此当客户端节点接收到业务数据请求时,无需再向服务发现节点发送服务端节点确定请求,可以直接从该目标队列中确定并获取该目标TCP连接,进而完成目标业务数据的获取过程,能够提升业务数据的获取效率。
[0172] 可以理解的,在实际实施时,本公开实施例所述的客户端节点可以包含有用于实现前述对应通信方法的一个或多个硬件结构和/或软件模块,这些执行硬件结构和/或软件模块可以构成一个服务器。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
[0173] 基于这样的理解,本公开实施例还对应提供一种通信装置,图12示出了本公开实施例提供的通信装置的结构示意图。如图12所示,该通信装置20可以包括:接收模块201、获取模块202以及确定模块203。
[0174] 接收模块201,被配置为接收业务数据请求,该业务数据请求包括目标业务的标识,该业务数据请求用于请求获取目标业务数据。
[0175] 获取模块202,被配置为获取该目标业务的标识对应的目标队列,该目标队列中包括多个TCP连接,该多个TCP连接均支持该目标业务数据的传输,其中,一个TCP连接用于表征该客户端节点与一个服务端节点之间的通信关系。
[0176] 确定模块203,被配置为将该目标队列中的空闲TCP连接,确定为目标TCP连接。
[0177] 获取模块202,还被配置为基于该目标TCP连接,获取该目标业务数据。
[0178] 可选地,该通信装置20还包括处理模块204。
[0179] 获取模块202,具体被配置为获取该目标业务的标识对应的当前队列,该当前队列中包括的TCP连接均支持该目标业务数据的传输。
[0180] 确定模块203,具体被配置为在该当前队列中不存在空闲TCP连接的情况下,将该业务数据请求确定为被阻塞请求。
[0181] 处理模块204,被配置为在被阻塞请求的数量大于或等于数量阈值的情况下,对该当前队列执行扩容操作,以得到该目标队列,该目标队列中包括的TCP连接的数量大于该当前队列中包括的TCP连接的数量。
[0182] 可选地,该通信装置20还包括发送模块205。
[0183] 发送模块205,被配置为向服务发现节点发送节点获取请求,该节点获取请求包括该目标业务的标识,该节点获取请求用于请求获取支持该目标业务的服务端节点的节点信息。
[0184] 接收模块201,具体被配置为接收该服务发现节点发送的多个服务端节点的节点信息。
[0185] 处理模块204,被配置为与该多个服务端节点分别建立TCP连接,以得到该多个TCP连接。
[0186] 处理模块204,还被配置为将该多个TCP连接按照预设使用顺序排序,以得到该目标队列。
[0187] 可选地,获取模块202,具体被配置为获取该目标队列中位于开始位置的空闲TCP连接。
[0188] 确定模块203,具体被配置为将获取到的空闲TCP连接确定为该目标TCP连接。
[0189] 可选地,确定模块203,还被配置为确定该业务数据请求对应的响应时间,该响应时间用于表征该客户端节点基于该目标TCP连接发送该业务数据请求,并且获取到该目标业务数据的时长。
[0190] 处理模块204,被配置为在该响应时间小于第一时间阈值的情况下,将该目标TCP连接添加至该目标队列的开始位置。
[0191] 处理模块204,还被配置为在该响应时间大于或等于该第一时间阈值的情况下,将该目标TCP连接添加至该目标队列的结束位置。
[0192] 可选地,获取模块202,还被配置为在该响应时间大于第二时间阈值的情况下,重新从该目标队列中获取TCP连接,该第二时间阈值大于该第一时间阈值。
[0193] 获取模块202,还被配置为基于重新获取的TCP连接,获取目标业务数据。
[0194] 可选地,上述目标队列为双端阻塞队列。
[0195] 如上所述,本公开实施例可以根据上述方法示例对客户端节点进行功能模块的划分。其中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,还需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
[0196] 关于上述实施例中的客户端节点,其中各个模块执行操作的具体方式、以及具备的有益效果,均已经在前述方法实施例中进行了详细描述,此处不再赘述。
[0197] 图13是本公开提供的另一种通信装置的结构示意图。如图13,该通信装置30可以包括至少一个处理器301以及用于存储处理器可执行指令的存储器303。其中,处理器301被配置为执行存储器303中的指令,以实现上述实施例中的通信方法。
[0198] 另外,通信装置30还可以包括通信总线302以及至少一个通信接口304。
[0199] 处理器301可以是一个处理器(central processing units,CPU),微处理单元,ASIC,或一个或多个用于控制本公开方案程序执行的集成电路。
[0200] 通信总线302可包括一通路,在上述组件之间传送信息。
[0201] 通信接口304,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等。
[0202] 存储器303可以是只读存储器(read‑only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read‑only memory,EEPROM)、只读光盘(compact disc read‑only memory,CD‑ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
[0203] 其中,存储器303用于存储执行本公开方案的指令,并由处理器301来控制执行。处理器301用于执行存储器303中存储的指令,从而实现本公开方法中的功能。
[0204] 在具体实现中,作为一种实施例,处理器301可以包括一个或多个CPU,例如图13中的CPU0和CPU1。
[0205] 在具体实现中,作为一种实施例,通信装置30可以包括多个处理器,例如图13中的处理器301和处理器307。这些处理器中的每一个可以是一个单核(single‑CPU)处理器,也可以是一个多核(multi‑CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0206] 在具体实现中,作为一种实施例,通信装置30还可以包括输出设备305和输入设备306。输出设备305和处理器301通信,可以以多种方式来显示信息。例如,输出设备305可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备306和处理器301通信,可以以多种方式接受用户的输入。例如,输入设备306可以是鼠标、键盘、触摸屏设备或传感设备等。
[0207] 图14为本公开提供的另一种通信装置的结构示例图。如图14所示,该通信装置40可以包括:接收模块401、确定模块402以及发送模块403。
[0208] 接收模块401,被配置为接收客户端节点发送的节点获取请求,该节点获取请求包括该目标业务的标识,该节点获取请求用于请求获取支持该目标业务的服务端节点的节点信息。
[0209] 确定模块402,被配置为确定支持目标业务的服务端节点。
[0210] 发送模块403,被配置为向客户端节点发送多个服务端节点的节点信息。
[0211] 如上所述,本公开实施例可以根据上述方法示例对服务发现节点进行功能模块的划分。其中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,还需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
[0212] 关于上述实施例中的服务发现节点,其中各个模块执行操作的具体方式、以及具备的有益效果,均已经在前述方法实施例中进行了详细描述,此处不再赘述。
[0213] 图15是本公开提供的另一种通信装置的结构示意图。如图15,该通信装置50可以包括至少一个处理器501以及用于存储处理器可执行指令的存储器503。其中,处理器501被配置为执行存储器503中的指令,以实现上述实施例中的通信方法。
[0214] 另外,通信装置50还可以包括通信总线502以及至少一个通信接口504。
[0215] 处理器501可以是一个CPU,微处理单元,ASIC,或一个或多个用于控制本公开方案程序执行的集成电路。
[0216] 通信总线502可包括一通路,在上述组件之间传送信息。
[0217] 通信接口504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,RAN,WLAN等。
[0218] 存储器503可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD‑ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
[0219] 其中,存储器503用于存储执行本公开方案的指令,并由处理器501来控制执行。处理器501用于执行存储器503中存储的指令,从而实现本公开方法中的功能。
[0220] 在具体实现中,作为一种实施例,处理器501可以包括一个或多个CPU,例如图15中的CPU0和CPU1。
[0221] 在具体实现中,作为一种实施例,通信装置50可以包括多个处理器,例如图15中的处理器501和处理器507。这些处理器中的每一个可以是一个单核(single‑CPU)处理器,也可以是一个多核(multi‑CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0222] 在具体实现中,作为一种实施例,通信装置50还可以包括输出设备505和输入设备506。输出设备505和处理器501通信,可以以多种方式来显示信息。例如,输出设备505可以是LCD,LED显示设备,CRT显示设备,或投影仪(projector)等。输入设备506和处理器501通信,可以以多种方式接受用户的输入。例如,输入设备506可以是鼠标、键盘、触摸屏设备或传感设备等。
[0223] 本领域技术人员可以理解,图13或图15中示出的结构并不构成对通信装置的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0224] 另外,本公开还提供一种计算机可读存储介质,包括指令,当指令由处理器执行时,使得处理器执行如上述实施例所提供的通信方法。
[0225] 另外,本公开还提供一种计算机程序产品,包括指令,当指令由处理器执行时,使得处理器执行如上述实施例所提供的通信方法。
[0226] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

当前第1页 第1页 第2页 第3页