CN114422575B - 处理网络请求的方法和装置 - Google Patents

处理网络请求的方法和装置 Download PDF

Info

Publication number
CN114422575B
CN114422575B CN202210321167.2A CN202210321167A CN114422575B CN 114422575 B CN114422575 B CN 114422575B CN 202210321167 A CN202210321167 A CN 202210321167A CN 114422575 B CN114422575 B CN 114422575B
Authority
CN
China
Prior art keywords
connection
server
client
distributed system
connections
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
CN202210321167.2A
Other languages
English (en)
Other versions
CN114422575A (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.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase 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 Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202210321167.2A priority Critical patent/CN114422575B/zh
Publication of CN114422575A publication Critical patent/CN114422575A/zh
Application granted granted Critical
Publication of CN114422575B publication Critical patent/CN114422575B/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/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开披露了一种处理网络请求的方法和装置。该方法应用于客户端,客户端通过连接池中的长连接与分布式系统中的服务器通信,连接池中的长连接包括至少一个虚拟连接,其中每个虚拟连接关联多个物理连接,该方法包括:当需要向分布式系统的服务器发送网络请求时,从连接池的至少一个虚拟连接中选择第一虚拟连接;从第一虚拟连接关联的多个物理连接中选择目标物理连接;通过目标物理连接向分布式系统的服务器发送网络请求。

Description

处理网络请求的方法和装置
技术领域
本公开涉及分布式技术领域,具体涉及一种处理网络请求的方法和装置。
背景技术
使用连接池的分布式系统,通常默认选择最近使用的长连接发送网络请求,导致分布式系统中的长连接间流量不均衡。
发明内容
有鉴于此,本公开提供一种处理网络请求的方法和装置,以使得分布式系统中的长连接间的流量负载均衡。
第一方面,提供一种处理网络请求的方法,应用于客户端,所述客户端通过连接池中的长连接与分布式系统中的服务器通信,所述连接池中的长连接包括至少一个虚拟连接,其中每个虚拟连接关联多个物理连接,所述方法包括:当需要向所述分布式系统的服务器发送网络请求时,从所述连接池的至少一个虚拟连接中选择第一虚拟连接;从所述第一虚拟连接关联的多个物理连接中选择目标物理连接;通过所述目标物理连接向所述分布式系统的服务器发送所述网络请求。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:获取所述分布式系统的服务器的负载信息;根据所述负载信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:根据所述客户端的流量信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述连接池中的虚拟连接所关联的物理连接是由所述分布式系统中的硬件负载均衡器创建的。
可选地,在一些实施例中,所述连接池中的长连接为socket连接。
可选地,在一些实施例中,所述分布式系统为分布式数据库。
第二方面,提供一种处理网络请求的装置,包括客户端,所述客户端通过连接池中的长连接与分布式系统中的服务器通信,所述连接池中的长连接包括至少一个虚拟连接,其中每个虚拟连接关联多个物理连接,所述客户端包括:第一选择单元,被配置为当需要向所述分布式系统的服务器发送网络请求时,从所述连接池的至少一个虚拟连接中选择第一虚拟连接;第二选择单元,被配置为从所述第一虚拟连接关联的多个物理连接中选择目标物理连接;发送单元,被配置为通过所述目标物理连接向所述分布式系统的服务器发送所述网络请求。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:获取所述分布式系统的服务器的负载信息;根据所述负载信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:根据所述客户端的流量信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述连接池中的虚拟连接所关联的物理连接是由所述分布式系统中的硬件负载均衡器创建的。
可选地,在一些实施例中,所述连接池中的长连接为socket连接。
可选地,在一些实施例中,所述分布式系统为分布式数据库。
第三方面,提供一种处理网络请求的装置,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面所述的方法。
第四方面,提供一种电子设备,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面所述的方法。
第五方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
第六方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
基于上述技术方案,本公开通过使连接池中的每个虚拟长连接关联多个物理长连接,由客户端从虚拟长连接关联的多个物理长连接中选择一个物理长连接发送网络请求的方式,实现了分布式系统中的长连接间流量的负载均衡。此外,本公开提供的处理网络请求的方法无需修改连接池的运行逻辑,因此,可以适用于通用的连接池中。
附图说明
图1是相关技术提供的分布式系统的结构示意图。
图2是相关技术提供的分布式系统的结构示意图。
图3是本公开实施例提供的处理网络请求的方法流程图。
图4是本公开实施例提供的处理网络请求的方法的系统示意图。
图5是本公开实施例提供的处理网络请求的装置的结构示意图。
图6是本公开实施例提供的处理网络请求的装置的结构示意图。
具体实施方式
下面对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
图1是相关技术提供的分布式系统的结构示意图。如图1所示,分布式系统100可以包括多个节点110。
在一些实施例中,节点110也可以指分布式系统100的服务器。此时,节点110既可以向外提供服务,也可以管理存储于节点110上的数据。
在另一些实施例中,分布式系统100还可以包括独立的服务器(图中未示出)。服务器可以用于管理节点110,并向外提供服务。
不同的节点110可以位于相同的网络或地理环境中,也可以位于不同的网络或地理环境中。
多个节点110可以经由通信链路(例如,有线连接、无线连接等)彼此通信,以便发送和接收数据。
在分布式系统100中,虽然每个节点110是独立的,但是所有节点展现给用户的是一个统一的整体。
图2是相关技术提供的分布式系统的结构示意图。如图2所示,该分布式系统可以包括客户端210和服务端220。用户可以通过客户端210与服务端220通信,以操作服务端220中的数据。
客户端210可以指任意形式的电子设备。例如,服务器、计算机、笔记本、手机、平板电脑等。客户端也可以指安装并运行在终端设备中的由程序语言编制形成的逻辑体。
当服务端220的服务器(例如服务器1、服务器2和服务器3)和客户端210位于不同的主机时,二者无法直接通信。此时,需要首先在服务端220的服务器和客户端210之间建立连接。例如,可以在服务端220和客户端210之间建立连接R01、连接R02和连接R03。
连接也可以称为网络连接。客户端210需要使用连接与服务端220通信,以发送命令和接收、应答数据。
连接在使用的过程中,需要经过建立连接、使用连接和断开连接三个部分。通常情况下,建立连接需要经过三次握手。当使用完后(例如,一个网络请求执行完成后),断开连接时,需要再经过四次握手。
连接可以分为长连接和短连接。短连接是指客户端和分布式系统通信时,为每个任务建立一个连接,当任务执行结束后,关闭该连接。换言之,短连接是一个一次性的连接。
由前文可知,连接在建立和断开的过程中,需要一定的时间,并且会消耗一定的资源(例如内存或CPU等)。当分布式系统的网络较慢或处理的数据量很大(例如分布式系统中需要同时处理百万或亿级的网络请求)时,使用短连接将产生较大的开销和时延。
为了减少建立和断开连接产生的时延和资源消耗,可以为客户端和分布式系统之间建立长连接。通过长连接完成客户端与分布式系统的服务器间的通信。
长连接指连接建立后不会即时断开的连接。即,一次网络请求执行完成后,客户端和服务器之间的连接不会关闭。当客户端再次访问该分布式系统时,可以继续使用已建立的长连接与服务器进行通信。
将长连接以缓冲池的方式维护时,也可以称为连接池或维护池。使用连接池可以减少客户端与服务器通信的过程中建立连接的时间,提高分布式系统的效率。
在一些实施例中,为了方便维护和使用,可以提前建立一定数量的长连接,形成连接池。连接池中的连接数量和类型可以由用户根据需要进行设置,以满足用户在使用过程中的实际需求。
例如,用户的业务包括支付和交易两种。客户可以提前为支付业务和交易业务各建立20个连接,形成连接池。对于支付业务相关的网络请求,客户端将通过为支付业务建立的20个连接发送。对于交易业务相关的网络请求,客户端将通过为交易业务建立的20个连接发送。
继续参见图2,服务端220通常包含多台服务器。为了使每台服务器负载均衡,可以在服务端220增加负载均衡器221。负载均衡器221可以保证客户端210和多台服务器(或称后端服务)建立的连接数量均衡。即,使分布式系统中每个服务器上承担相等的连接数。
例如,如图2所示,负载均衡器221可以在每台服务器(服务器1、服务器2和服务器3)上各建立一个连接。
应理解,虽然图2仅示出一个服务器上建立一个连接的情形,实际中,每台服务器上可以建立多个连接。负载均衡器221可以使每个服务器上的连接数量相当。例如,可以为每台服务器都建立50个连接。又如,可以为服务器1和服务器2各建立20个连接,为服务器3建立19个连接。
负载均衡器221仅可以使建立的连接的数量负载均衡。当连接建立完成后,负载均衡器221不再起到负载均衡的作用。即,当负载均衡器221建立好连接后,无法再感知或分配连接内的流量。因此,负载均衡器221通常无法实现连接间流量的负载均衡。
相关技术中,客户端在使用连接池时,通常会首先选择连接池中最近使用的连接。当最近使用的连接上的网络请求的流量超过一定限度后,才会使用连接池中其他的连接。
优先使用最近使用的连接的方式,将导致部分连接(例如最近使用的一个连接)上流量非常大,而另外部分连接上流量很小或几乎没有流量。网络请求的流量例如可以指客户端向分布式系统发送的网络请求的数量。
不同的连接可能与不同的服务器相连。通过同一个连接发送的网络请求将发送给同一台服务器。当一个连接上对应的网络请求的流量非常大时,该连接对应的服务器将承担较大的负载。此时,可能导致分布式系统不稳定。例如,承担较大流量的服务器可能由于流量过大而挂死。
继续以上述支付业务和交易业务为例。在某一时间段(例如一分钟)内,可能有多个支付业务的网络请求(例如100万个)。这些支付业务的网络请求会优先使用连接池中的同一个连接发送。因此,该连接对应的服务器上将承担极大的网络请求负载。而其他的服务器上可能只有少量的网络请求,甚至完全没有网络请求。这种服务器负载的不均衡将严重影响分布式系统的稳定性。
此外,虽然用户可以针对不同的业务在连接池中维护不同数量的长连接。然而,用户通常不会根据业务的实际情况实时调整连接池中的连接数量。
例如,用户包括支付业务和交易业务。用户为支付业务和交易业务各分配了20个连接。而实际中,支付业务的业务量(或网络请求的数量)可能是交易业务的两倍或三倍。这可能导致支付业务对应的连接上承担较大的流量,而交易业务对应的连接上的流量较小。
这种不均衡的分配可能导致流量较大的服务器上承担较大的负载,从而引起宕机等问题。且为业务分配的连接数量的不合理,还可能使得服务端的服务器无法被充分利用。
有鉴于此,本公开提供一种处理网络请求的方法,使得使用连接池的系统实现长连接间流量的负载均衡。
下面结合图3至图4对本公开提供的处理网络请求的方法进行详细介绍。
图3是本公开实施例提供的处理网络请求的方法流程图。图3所示的方法可以应用于客户端。
应理解,本公开使用客户端的描述方式,仅为了方便介绍。客户端可以指用户直接进行操作的硬件设备(例如电子设备)或软件程序(例如安装于电子设备中的应用),也可以指连通客户端和分布式系统的代理。代理可以通过硬件设备实现,也可以通过软件的形式实现。代理可以与客户端在同一台电子设备中,也可以位于不同的电子设备中。
客户端可以通过连接池中的长连接与分布式系统中的服务器通信。连接池中的长连接的类型可以根据需要选择,本公开对连接池中的长连接的具体类型不做限定。例如,连接池中的长连接可以为socket连接。
分布式系统可以指任意的系统。在一些实施例中,分布式系统可以指分布式数据库。用户可以通过分布式数据库的客户端操作分布式数据库中的数据。例如,用户可以对数据库中的数据进行增、删、改、查等操作。
本公开实施例提及的分布式数据库可以指任意类型的数据库。例如,可以指关系型数据库,也可以指非关系型数据库。
连接池中的长连接可以包括至少一个虚拟连接。虚拟连接也可以称为逻辑连接、代理连接或vsocket。
在一些实施例中,虚拟连接可以集成在客户端中,由客户端管理。在另一些实施例中,虚拟连接也可以作为一个独立的程序或硬件设备与客户端相连。本公开对虚拟连接的具体实现形式不做限定,只要能够使用本公开提供的方法即可。
每个虚拟连接可以关联多个物理连接。客户端可以通过物理连接向分布式系统的服务器发送网络请求。
物理连接可以通过多种方式建立。例如,客户端可以直接与指定的服务器建立物理连接。
在一些实施例中,为了提高客户端与分布式系统的服务器之前的连接数量的负载均衡,防止由于某些服务器上连接数量过多导致该服务器上网络请求的流量过大的问题,还可以在分布式系统中增加负载均衡器。
本公开实施例提及的物理连接可以是由负载均衡器创建的。本公开对使用的负载均衡器的种类和数量不做限定。例如,可以在分布式数据库的服务器中增加软件的负载均衡器。又如,可以在分布式数据库的服务器上增加硬件的负载均衡器。
硬件负载均衡器可以根据实际的业务需求选择。例如,硬件负载均衡器可以包括F5负载均衡器或LVS负载均衡器等。
使用负载均衡器建立物理连接,可以使分布式系统中每个服务器上的连接数量负载均衡。
如图3所示,本公开实施例提供的方法包括步骤S310、步骤S320以及步骤S330。
在步骤S310,当需要向分布式系统的服务器发送网络请求时,从连接池的至少一个虚拟连接中选择第一虚拟连接。
网络请求可以指任意类型的请求。客户端可以通过网络请求操作分布式系统,以完成一项或多项任务。
网络请求可以由客户端发起,也可以根据用户的需求由用户发起。例如,分布式系统可以指分布式数据库。网络请求可以指分布式数据库中的事务。客户端可以向分布式数据库发送事务,以对数据库中的数据进行操作。
客户端可以通过事务查询分布式数据库中的数据。客户端也可以通过事务修改或删除分布式数据库中的数据。在分布式数据库中使用的事务,也可以称为分布式事务。
客户端在从连接池中选择虚拟连接时,可以按照任意的规则进行选取。例如,可以根据连接池本身的运行规则选取一个虚拟连接。例如,可以从至少一个虚拟连接中选择最近使用的一个虚拟连接。
使用连接池本身的运行规则选取虚拟连接,可以不必改变连接池的运行逻辑。因此,可以适用于通用的连接池技术中。
在步骤S320,从第一虚拟连接关联的多个物理连接中选择目标物理连接。
应理解,本公开使用第一虚拟连接,仅为了使描述更加清楚。第一虚拟连接可以指连接池中的任意一个虚拟连接。
第一虚拟连接可以关联多个物理连接。本公开对第一虚拟连接关联的物理连接的具体数量不做限定。客户端可以根据实际的业务需求或软硬件条件选择关联的物理连接的数量。
例如,当第一虚拟连接对应的网络请求的流量较大时,客户端可以增加该虚拟连接关联的物理连接的数量,以减轻每个物理连接上的负载。
客户端根据第一虚拟连接对应的网络请求的流量信息,增加或减少第一虚拟连接关联的物理连接的数量,可以使业务对应的物理连接的数量与业务的流量相匹配。因此,无需用户反复根据业务的网络请求的流量信息,调节为每个业务分配的连接数量,即可以使得分布式系统的服务器得到充分的利用。
当客户端要发送网络请求时,客户端可以从第一虚拟连接关联的多个物理连接中选择目标物理连接。目标物理连接可以通过多种方式选择。目标物理连接的具体选择规则将在后文进行介绍。
在步骤S330,通过目标物理连接向分布式系统的服务器发送网络请求。
客户端在选择出目标物理连接后,可以通过目标物理连接向分布式系统的服务器发送网络请求。分布式系统可以响应该请求,完成对应的操作。
客户端可能同时或在较短的时间内向分布式系统发送多个网络请求。在一些实施例中,如果这些网络请求属于同一种类的业务的网络请求时,连接池通常会选择同一个连接发送这些网络请求。
本公开实施例提及的网络请求,可以指同时或较短时间内通过同一个连接发送的多个网络请求中的任意一个。
例如,客户端为支付业务建立了一个连接池,连接池中包括多个虚拟连接。当客户端需要执行多个支付业务时,每个支付业务可以对应一个网络请求。客户端可以向分布式系统发送与每个支付业务对应的多个网络请求。
在发送该多个网络请求时,客户端可以从连接池中选择第一虚拟连接。该多个网络请求中的每个网络请求,都将通过第一虚拟连接发送。
对于每个网络请求,客户端可以从第一虚拟连接关联的多个物理连接中,选择一个目标物理连接进行网络请求的发送。
例如,该多个网络请求可以包括第一网络请求、第二网络请求和第三网络请求。客户端可以通过第一虚拟连接发送第一网络请求、第二网络请求和第三网络请求。第一虚拟连接可以关联第一物理连接、第二物理连接和第三物理连接。
客户端可以在第一虚拟连接关联的三个物理连接中选择发送第一网络请求至第三网络请求的物理连接。例如,客户端可以选择通过第一物理连接发送第一网络请求,通过第二物理连接发送第二网络请求和第三网络请求。
由于多个网络请求不再通过同一个物理连接发送,因此,实现了物理连接间的流量均衡。即,解决了单个长连接下流量不均衡的问题,使分布式系统的多个长连接间的流量负载均衡。
前文提及从第一虚拟连接关联的多个物理连接中选择一个物理连接作为目标物理连接。下文对选择目标物理连接的方法进行介绍。
从第一虚拟连接关联的多个物理连接中选择目标物理连接的方式可以根据实际情况设置,本公开对从第一虚拟连接关联的多个物理连接中选择目标物理连接的具体方式不做限定。
例如,可以随机从第一虚拟连接关联的多个物理连接中选择一个物理连接作为目标物理连接。又如,可以以轮转的方式,从第一虚拟连接关联的多个物理连接中择一个物理连接作为目标物理连接。使用随机或轮转的方式选择目标物理连接,实现简单。
在一些实施例中,客户端可以获取分布式系统的服务器的负载信息。在选择目标物理连接时,客户端可以根据分布式系统的服务器的负载信息,从多个物理连接中选择目标物理连接。
例如,客户端可以从第一虚拟连接关联的多个物理连接中,选择物理连接对应的服务器上负载最小的物理连接作为目标物理连接。
客户端根据分布式系统的服务器的负载信息选择目标物理连接,可以使网络请求的流量在多个服务器间均衡分配。即,可以实现分布式系统的服务器间流量的负载均衡。
在另一些实施例中,客户端可以根据客户端的流量信息从多个物理连接中选择目标物理连接。客户端的流量信息可以指客户端的流量的统计信息。
客户端的流量信息可以指客户端上承载的流量。例如,客户端的流量信息可以指客户端已发送的网络请求的数量信息。又如,客户端的流量信息也可以指客户端待发送的网络请求的数量信息。
根据客户端的流量信息选择物理连接,可以使每个物理连接上的流量相当。
在另一些实施例中,客户端可以计算第一虚拟连接关联的多个物理连接的权重。根据第一虚拟连接关联的每个物理连接的权重选择目标物理连接。
物理连接的权重可以根据多种方式获得。例如,客户端可以对服务器端反馈的负载信息进行评估,利用评估结果得到第一虚拟连接关联的每个物理连接对应的权重。
又如,客户端可以根据客户端的流量统计结果得到第一虚拟连接关联的每个物理连接对应的权重。
又如,客户端可以综合服务器端反馈的负载信息和客户端的流量统计结果,得到第一虚拟连接关联的每个物理连接的权重。
可以理解,计算权重使用的参考信息越多,权重计算越合理,目标物理连接的选择越合理。目标物理连接的选择越合理,负载均衡的效果越好。
通过计算第一虚拟连接关联的每个物理连接的权重,根据每个物理连接的权重选择目标物理连接,可以使得每个物理连接上的网络请求的流量相当。即,使得分布式系统的流量负载均衡结果更优。
对分布式系统的负载均衡结果越好,越能够发挥分布式系统的优势,使分布式系统的每个服务器都得到充分利用。此外,还可以防止由于某一个或多个服务器承担过多的负载,而产生的宕机等影响系统稳定性的问题。
下面结合图4以一个具体的实施例介绍本公开提供的处理网络请求的方法。图4是本公开实施例提供的处理网络请求的方法的系统示意图。
如图4所示,本公开实施例提供的处理网络请求的方法可以应用于包含分布式系统的系统中。该系统可以包括应用410、客户端420和服务端430。
应用410可以指安装在电子设备上的应用程序。应用程序也可以指安装在用户终端上的APP。用户可以通过应用410向服务端430发送网络请求,以完成某一任务。
客户端420可以指分布式系统的客户端或代理。客户端420可以与服务端430通信,以管理服务端430上的数据或信息。
客户端420可以包括连接池。连接池中可以维护至少一个虚拟连接421。为了便于描述,图4仅示出一个虚拟连接421。应理解,连接池中可以包含任意数量的虚拟连接。本公开对客户端420维护的连接池中的虚拟连接的具体数量不做限定。连接池中虚拟连接的具体数量可以根据用户的需求设置。
虚拟连接421可以关联多个物理连接。例如,虚拟连接421可以关联物理连接1、物理连接2和物理连接3。图4仅示意性地示出3个物理连接,应理解,一个虚拟连接421可以关联任意数量的物理连接。
虚拟连接421包括的物理连接的数量可以根据业务需求以及实际使用情况分配。
每个物理连接可以与一台服务端430的服务器相连。图4仅示出一个物理连接与一台服务器相连的情形。应理解,多个物理连接可以连接相同的服务器,也可以连接不同的服务器。本公开对每个物理连接具体连接的服务器不做限定。
应用410可以向客户端420发送网络请求440。客户端420可以从连接池中选择虚拟连接421,用于发送网络请求440。
虚拟连接421可以根据客户端420上的流量信息和服务端430反馈的负载信息,确定每个物理连接对应的权重。根据每个物理连接对应的权重选择目标物理连接。
在一些实施例中,网络请求440包含多个网络请求。对于网络请求440包含的每个网络请求,客户端从虚拟连接421关联的多个物理连接中,根据物理连接对应的权重选择一个物理连接作为目标物理连接,并通过目标物理连接发送该网络请求。
由于包含多个网络请求的网络请求440不再通过同一个长连接发送,因此,有效地解决了由于单个长连接上流量过大造成的分布式系统不稳定。
通过在发送每个网络请求时从虚拟连接关联的多个物理连接中选择一个物理连接,使得每个物理连接上的流量负载均衡。相应地,使得服务端430的每个服务器上负载均衡。
本公开提供的处理网络请求的方法,通过在客户端中实现虚拟连接,每个虚拟连接关联多个物理连接的方式,由客户端在虚拟连接内做流量的负载均衡,解决了单个长连接负载不均衡的问题。此外,该方法无需修改连接池的运行逻辑。因此,适用于通用的连接池。
前文结合图1至图4详细介绍了本公开提供的方法实施例。下文结合图5至图6介绍本公开提供的装置实施例。应理解,装置实施例和方法实施例相互对应。装置实施例中未详尽介绍之处,请参见方法实施例部分的介绍。
图5是本公开实施例提供的处理网络请求的装置的结构示意图。如图5所示,处理网络请求的装置500可以包括客户端510。客户端510可以通过连接池中的长连接与分布式系统中的服务器通信。连接池中的长连接可以包括至少一个虚拟连接。其中,每个虚拟连接可以关联多个物理连接。
如图5所示,客户端510可以包括第一选择单元511、第二选择单元512以及发送单元513。
第一选择单元511可以被配置为当需要向所述分布式系统的服务器发送网络请求时,从所述连接池的至少一个虚拟连接中选择第一虚拟连接。
第二选择单元512可以被配置为从所述第一虚拟连接关联的多个物理连接中选择目标物理连接。
发送单元513可以被配置为通过所述目标物理连接向所述分布式系统的服务器发送所述网络请求。
本公开提供的处理网络请求的装置可以从第一虚拟连接关联的多个物理连接中,选择目标物理连接发送网络请求,因此,可以实现物理长连接间流量的负载均衡。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:获取所述分布式系统的服务器的负载信息;根据所述负载信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:根据所述客户端的流量信息从所述多个物理连接中选择所述目标物理连接。
可选地,在一些实施例中,所述连接池中的虚拟连接所关联的物理连接是由所述分布式系统中的硬件负载均衡器创建的。
可选地,在一些实施例中,所述连接池中的长连接为socket连接。
可选地,在一些实施例中,所述分布式系统为分布式数据库。
图6是本公开实施例提供的处理网络请求的装置的结构示意图。该处理网络请求的装置600例如可以是分布式系统的应用、客户端或代理。装置600可以包括存储器610和处理器620。存储器610可用于存储可执行代码。处理器620可用于执行所述存储器610中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置600还可以包括网络接口630,处理器620与外部设备的数据交换可以通过该网络接口630实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种处理网络请求的方法,应用于客户端,所述客户端通过连接池中的长连接与分布式系统中的服务器通信,所述连接池中的长连接包括至少一个虚拟连接,其中每个虚拟连接关联多个物理连接,所述方法包括:
当需要向所述分布式系统的服务器发送网络请求时,从所述连接池的至少一个虚拟连接中选择第一虚拟连接;
从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:根据所述分布式系统的服务器的负载信息和/或所述客户端的流量信息从所述多个物理连接中选择所述目标物理连接;
通过所述目标物理连接向所述分布式系统的服务器发送所述网络请求。
2.根据权利要求1所述的方法,所述连接池中的虚拟连接所关联的物理连接是由所述分布式系统中的硬件负载均衡器创建的。
3.根据权利要求1所述的方法,所述连接池中的长连接为socket连接。
4.根据权利要求1所述的方法,所述分布式系统为分布式数据库。
5.一种处理网络请求的装置,包括客户端,所述客户端通过连接池中的长连接与分布式系统中的服务器通信,所述连接池中的长连接包括至少一个虚拟连接,其中每个虚拟连接关联多个物理连接,所述客户端包括:
第一选择单元,被配置为当需要向所述分布式系统的服务器发送网络请求时,从所述连接池的至少一个虚拟连接中选择第一虚拟连接;
第二选择单元,被配置为从所述第一虚拟连接关联的多个物理连接中选择目标物理连接,包括:根据所述分布式系统的服务器的负载信息和/或所述客户端的流量信息从所述多个物理连接中选择所述目标物理连接;
发送单元,被配置为通过所述目标物理连接向所述分布式系统的服务器发送所述网络请求。
6.根据权利要求5所述的装置,所述连接池中的虚拟连接所关联的物理连接是由所述分布式系统中的硬件负载均衡器创建的。
7.根据权利要求5所述的装置,所述连接池中的长连接为socket连接。
8.根据权利要求5所述的装置,所述分布式系统为分布式数据库。
9.一种处理网络请求的装置,包括:
存储器,用于存储指令;
处理器,用于执行所述存储器中存储的指令,以执行如权利要求1-4中任一项所述的方法。
CN202210321167.2A 2022-03-30 2022-03-30 处理网络请求的方法和装置 Active CN114422575B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210321167.2A CN114422575B (zh) 2022-03-30 2022-03-30 处理网络请求的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210321167.2A CN114422575B (zh) 2022-03-30 2022-03-30 处理网络请求的方法和装置

Publications (2)

Publication Number Publication Date
CN114422575A CN114422575A (zh) 2022-04-29
CN114422575B true CN114422575B (zh) 2022-07-08

Family

ID=81263170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210321167.2A Active CN114422575B (zh) 2022-03-30 2022-03-30 处理网络请求的方法和装置

Country Status (1)

Country Link
CN (1) CN114422575B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971703A (zh) * 2019-12-11 2020-04-07 腾讯科技(深圳)有限公司 基于连接池的服务请求方法、装置、服务器和存储介质
CN111367983A (zh) * 2020-03-10 2020-07-03 中国联合网络通信集团有限公司 数据库访问方法、系统、设备和存储介质
CN114254032A (zh) * 2022-02-25 2022-03-29 成都思维世纪科技有限责任公司 分布式共享连接的资产静态数据采集方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6505172B2 (ja) * 2016-08-25 2019-04-24 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation 仮想ネットワーク環境で仮想スイッチを利用してロードバランシングを処理する方法およびシステム
CN110351246A (zh) * 2019-06-12 2019-10-18 深圳市奥克多普科技有限公司 服务器集群系统Socket管理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971703A (zh) * 2019-12-11 2020-04-07 腾讯科技(深圳)有限公司 基于连接池的服务请求方法、装置、服务器和存储介质
CN111367983A (zh) * 2020-03-10 2020-07-03 中国联合网络通信集团有限公司 数据库访问方法、系统、设备和存储介质
CN114254032A (zh) * 2022-02-25 2022-03-29 成都思维世纪科技有限责任公司 分布式共享连接的资产静态数据采集方法及系统

Also Published As

Publication number Publication date
CN114422575A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN106899680B (zh) 多区块链的分片处理方法和装置
US11175913B2 (en) Elastic application framework for deploying software
US9984002B2 (en) Visibility parameters for an in-memory cache
US9230003B2 (en) Preventing database replication conflicts in a distributed environment
CN110266716B (zh) 电网统一服务平台系统
US9990400B2 (en) Builder program code for in-memory cache
US9141435B2 (en) System and methodology providing workload management in database cluster
US8190740B2 (en) Systems and methods for dynamically provisioning cloud computing resources
US9858187B2 (en) Buffering request data for in-memory cache
KR20000004988A (ko) 제한된 메모리 컴퓨터 시스템에서의 클라이언트관리흐름제어를 위한 방법과 장치
US20160036665A1 (en) Data verification based upgrades in time series system
US20130227567A1 (en) Thin client system, connection management server, connection management method and connection management program
JP2010526377A (ja) クラスタデータ処理のための方法及び装置
CN101808119A (zh) 一种多存储阵列负载均衡的方法和设备
JP2023520057A (ja) マイクロサービス構成用方法、装置、電子デバイス、システム及び記憶媒体
CN112346871A (zh) 一种请求处理方法及微服务系统
CN107426323A (zh) 一种基于分布式的资源服务与可视化监控系统及方法
JP2002269061A (ja) クライアントサーバシステム、中継サーバ、接続先サーバの決定方法
CN108293047A (zh) 基于上下文连接并且取回安全令牌
CN114422575B (zh) 处理网络请求的方法和装置
CN116743836A (zh) 长连接通信链路建立方法及其装置、电子设备及存储介质
US10033817B2 (en) Stateless technique for distributing data uploads
CN112799849B (zh) 一种数据处理方法、装置、设备及存储介质
CN112910796B (zh) 流量管理方法、装置、设备、存储介质以及程序产品
US10481963B1 (en) Load-balancing for achieving transaction fault tolerance

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