一种网络请求的自动分发方法和系统
文献发布时间:2023-06-19 13:46:35
技术领域
本发明涉及网络技术领域,尤其涉及一种网络请求的自动分发方法和系统。
背景技术
Web服务器,即网络服务器,通常是指驻留于因特网上某种类型的计算机的程序,能够处理浏览器等网络客户端的网络请求并返回相应的响应。
现有Web服务器的服务器集群中通常设置多台Web服务器,通常将工作负载分布到多台Web服务器来提高网站、应用、数据库或其他服务的性能和可靠性。对于网络运维的日常工作来讲,Web服务器的流量压力过大是比较常见的现象。如果同时存在很多网络客户端试图访问Web服务器,超过了Web服务器的处理极限,就会出现加载速度缓慢或根本无法连接的情况;另外,当网络客户端直连到Web服务器时,如果服务器宕机,用户自然也就无法访问。上述问题导致了服务器负载的不均衡和运维效率的降低。
发明内容
本发明提供了一种网络请求的自动分发方法和系统,旨在解决现有技术出现的服务器负载的不平衡和运维效率降低的问题。
根据本发明的第一方面,本发明提供了一种网络请求的自动分发方法,包括:
当接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群;
将网络请求分发至服务器集群中;
将服务器集群对网络请求的响应结果反馈至网络客户端。
优选地,上述按照预设服务器路由算法选择对应的服务器集群的步骤,包括:
按照集群信息中的服务器集群的排列顺序,依次轮询服务器集群;
按照排列顺序,从响应轮询的服务器集群中选择网络请求对应的服务器集群。
优选地,上述按照预设服务器路由算法选择对应的服务器集群的步骤,包括:
获取集群信息中包含的所有服务器集群的连接数;
按照最小连接数原则,选择连接数最小的服务器集群;
或者,
当所有服务器集群的连接数大于或等于预设连接数时,根据网络请求的请求源IP的hash值,选择需要发送的服务器集群。
优选地,上述网络请求的自动分发方法,在根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群的步骤之前,还包括:
定时轮询发现部署的所有服务器集群,其中,服务器集群包括主用Web服务器和备用Web服务器;
将发现的所有Web服务器的信息注册至本地注册表的集群信息中。
优选地,上述网络请求的自动分发方法,还包括:
定时检测服务器集群中的Web服务器;
当检测到服务器集群中存在故障的Web服务器时,则将本地注册表中Web服务器的信息设置为不可用状态;
当检测到存在故障的Web服务器恢复正常时,则将本地注册表中Web服务器的信息设置为可用状态。
优选地,上述网络请求的自动分发方法,还包括:
对网络请求进行请求认证;
当信息认证通过时,生成认证信息并发送至服务器集群;
服务器集群对认证信息进行验证;
当认证信息验证通过时,服务器集群对网络请求进行响应,生成响应结果。
根据本发明的第二方面,本发明还提供了一种网络请求的自动分发系统,包括:
服务器路由模块,用于当接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群;
请求分发模块,用于将网络请求分发至服务器集群中;
响应反馈模块,用于将服务器集群对网络请求的响应结果反馈至网络客户端。
优选地,上述服务器路由模块,包括:
集群轮询子模块,用于按照集群信息中的服务器集群的排列顺序,依次轮询服务器集群;
第一集群选择子模块,用于按照排列顺序,从响应轮询的服务器集群中选择网络请求对应的服务器集群。
优选地,上述服务器路由模块,包括:
连接数获取子模块,用于获取集群信息中包含的所有服务器集群的连接数;
第二集群选择子模块,用于按照最小连接数原则,选择连接数最小的服务器集群;
或者,
第三集群选择子模块,用于当所有服务器集群的连接数大于或等于预设连接数时,根据网络请求的请求源IP的hash值,选择需要发送的服务器集群。
优选地,上述网络请求的自动分发系统,还包括:
集群轮询模块,用于定时轮询发现部署的所有服务器集群,其中,服务器集群包括主用Web服务器和备用Web服务器;
集群注册模块,用于将发现的所有Web服务器的信息注册至本地注册表的集群信息中。
本申请提供的网络请求的自动分发方案,在接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群,然后将网络请求分发至服务器集群中,并将服务器集群对网络请求的响应结果反馈至网络客户端,因为服务器集群的集群信息存储在本地注册表中,这样当有大量网络请求出现时,按照服务器路由算法将网络请求分别分发至对应的服务器集群就能够均衡服务器的负载,提高服务器集群的运维效率,从而解决现有技术中Web服务器流量压力过大,加载缓慢甚至无法连接的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明实施例提供的第一种网络请求的自动分发方法的流程示意图;
图2是图1所示实施例提供的第一种服务器集群的选择方法的流程示意图;
图3是图2所示实施例提供的第二种服务器集群的选择方法的流程示意图;
图4是本发明实施例提供的第二种网络请求的自动分发方法的流程示意图;
图5是本发明实施例提供的第三种网络请求的自动分发方法方法的流程示意图;
图6是本发明实施例提供的第四种网络请求的自动分发方法的流程示意图;
图7是本发明实施例提供的第五种网络请求的自动分发方法的流程示意图;
图8是本发明实施例提供的第一种网络请求的自动分发系统的结构示意图;
图9是图8所示实施例提供的第一种服务器路由模块的结构示意图;
图10是图8所示实施例提供的第二种服务器路由模块的结构示意图;
图11是本发明实施例提供的第二种网络请求的自动分发系统的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要技术问题如下:
现有Web服务器的服务器集群中通常设置多台Web服务器,通常将工作负载分布到多台Web服务器来提高网站、应用、数据库或其他服务的性能和可靠性。对于网络运维的日常工作来讲,Web服务器的流量压力过大是比较常见的现象。如果同时存在很多网络客户端试图访问Web服务器,超过了Web服务器的处理极限,就会出现加载速度缓慢或根本无法连接的情况;另外,当网络客户端直连到Web服务器时,如果服务器宕机,用户自然也就无法访问。上述问题导致了服务器负载的不平衡和运维效率的降低。
为了解决上述问题,具体参见图1,图1为本发明实施例提供的一种网络请求的自动分发方法的流程示意图,如图1所示,该网络请求的自动分发方法,包括:
S110:当接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群。本地注册表主要用于保存、更新和删除注册表中的注册信息,在发现服务器集群中的Web服务器时,会保存在本地注册表中的集群信息中;同样Web服务器出现故障时会更新注册表中信息为不可用状态;若管理员删除Web服务器时也会删除本地注册表中的信息。
作为一种优选的实施例,如图2所示,该按照预设服务器路由算法选择对应的服务器集群的步骤具体包括:
S111:按照集群信息中的服务器集群的排列顺序,依次轮询服务器集群;
S112:按照排列顺序,从响应轮询的服务器集群中选择网络请求对应的服务器集群。
本申请实施例中设置服务器路由模块,用于将网络请求的流量进行分发,其中的服务器路由算法包括轮询模式,即上述按照集群信息中的服务器集群的排列顺序,依次轮询服务器集群,另外,服务器集群至少包括主、备用两台Web服务器,这样轮询服务器集群时还需要考察集群内Web服务器的状态。在响应轮询的服务器集群中,按照本地注册表中集群信息中服务器集群的排列顺序,依次选择服务器集群分发网络请求,例如请求1发送至第一集群的主用Web服务器,请求2发送至第二集群的主用Web服务器,……。
另外,本地服务器还包括多种路由方式,作为一种优选的实施例,如图3所示,该按照预设服务器路由算法选择对应的服务器集群的步骤具体包括:
S113:获取集群信息中包含的所有服务器集群的连接数;
S114:判断是否所有服务器集群的连接数大于或等于预设连接数阈值;
S115:若否,则按照最小连接数原则,选择连接数最小的服务器集群;
连接数最小,则该服务器集群的负载越小,因此选择连接数最小的服务器集群响应该网络请求,能够均衡Web服务器的负载。
或者,
S116:若是,则根据网络请求的请求源IP的hash值,选择需要发送的服务器集群。
本申请实施例中,使用最小连接策略,即优先选择连接数最少的Web服务器,在会话普遍较长的情况下推荐使用;当所有服务器集群的连接数大于或等于预设连接数阈值,则根据请求源的IP的hash值来选择要转发的服务器。因为请求源IP是唯一的,这样通过解析请求源IP的hash值能够唯一确定网络客户端,这样就建立了网络客户端与服务器集群的对应关系,通过该hash值能够将固定网络客户端的网络请求转发至特定的服务器集群。
上述步骤S110的三种方式需要管理员根据现场情况进行选择。
S120:将网络请求分发至服务器集群中。
S130:将服务器集群对网络请求的响应结果反馈至网络客户端。
本申请提供的网络请求的自动分发方法,在接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群,然后将网络请求分发至服务器集群中,并将服务器集群对网络请求的响应结果反馈至网络客户端,因为服务器集群的集群信息存储在本地注册表中,这样当有大量网络请求出现时,按照服务器路由算法将网络请求分别分发至对应的服务器集群就能够均衡服务器的负载,提高服务器集群的运维效率,从而解决现有技术中Web服务器流量压力过大,加载缓慢甚至无法连接的问题。
作为一种优选的实施例,如图4所示,本申请实施例提供的网络请求的自动分发方法,在根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群的步骤之前,还包括:
S210:定时轮询发现部署的所有服务器集群,其中,服务器集群包括主用Web服务器和备用Web服务器。
本申请实施例中,在系统内配置多个服务器集群,如果需要做异地容灾,可以将部分服务器部署到外地服务,采用异地灾备模式部署,服务优先调用本地,当本地服务全部挂掉,网络请求转发到异地服务;若本地服务部分恢复或者全部恢复,那么请求重新发往本地服务,如果Web服务器需要保证的高可用,则将Web节点配置成主备模式。在主备模式中,服务器集群包括主用Web服务器和备用Web服务器,这样如果主节点全部挂掉,网络请求转发到可用的备用节点,如果备用节点也挂掉,就抛出异常;若主节点恢复正常,那么请求重新发往主节点,实现主备,并能够保证负载均衡,并且能够实现异地容灾。
S220:将发现的所有Web服务器的信息注册至本地注册表的集群信息中。
本申请实施例中,需要配置本地注册表的多个服务器集群的集群信息,其中,每个服务器集群包括主备两台Web服务器。其中,集群1地址如下:https://ip1:port,https://ip2:port;集群2地址如下:https://ip3:port,https://ip4:port,集群1中ip1跟ip2为主备关系;集群2同理。通过将上述所有Web服务器的信息注册到本地注册表的集群信息中,能够按照上述预设服务器路由算法分发网络请求,保证负载均衡。
作为一种优选的实施例,如图5所示,本申请实施例提供的网络请求的自动分发方法,除了上述实施例提供的步骤外还包括:
S310:定时检测服务器集群中的Web服务器;
S320:当检测到服务器集群中存在故障的Web服务器时,则将本地注册表中Web服务器的信息设置为不可用状态;
S330:当检测到存在故障的Web服务器恢复正常时,则将本地注册表中Web服务器的信息设置为可用状态。
本申请实施例提供的技术方案,通过定时检测服务器集群中的Web服务器,能够定时发送请求到所有服务器集群的健康检测模块,Web服务器的健康检测模块若检测Web服务器正常,则会返回数据;如果Web服务器异常就无法返回数据给服务器故障检测装置,此时就会向本地注册表发送Web服务器异常的信息。特别注意,如果服务器集群异常,则说明主备节点都发生异常。另外,如果存在故障的Web服务器恢复正常,就会将本地注册表中Web服务器的异常信息修改为正常,网络客户端在发送网络请求时,在服务器路由时,上次异常的服务器由于被修改为正常,将也会接受到客户端的请求。
作为一种优选的实施例,如图6所示,本申请实施例提供的网络请求的自动分发方法还包括:
S410:对网络请求进行请求认证;
S420:当信息认证通过时,生成认证信息并发送至服务器集群;
S430:服务器集群对认证信息进行验证;
S440:当认证信息验证通过时,服务器集群对网络请求进行响应,生成响应结果。
本申请实施例提供的网络请求的自动分发方法,通过
作为一种优选的实施例,如图7所示,本申请实施例提供的网络请求的自动分发方法包括以下步骤:
更新注册表:服务器发现模块因为服务发现定时器,定时发现服务集群中的Web服务器信息,将服务集群的Web服务器的信息更新到服务器本地注册表中,如果管理员手动添加集群,定时发现装置也会发现到,然后将信息保存到服务器本地注册表中。
获取注册表信息:客户端服务调用模块,调用网络客户端的网络请求,将网络请求发送到服务器调度模块,服务器调度装置获取上述本地注册表信息,根据启动前管理选择的服务路由算法(包括轮询、最小服务连接和source hash中之一),选择一个服务集群。
服务器路由模块,选择到相应的服务集群之后,根据客户端的网络请求,通过服务认证模块向服务集群发送认证信息;保证该次客户端请求时正常的访问。
服务集群接收到客户端的请求后开始处理请求页面,并将数据返回给网络客户端。
服务器故障检测模块因为服务故障定时检测器,会定时发送请求到所有集群的健康检测装置,Web服务器的健康检测装置如果正常会返回数据给服务器检测装置,如果异常就无法返回数据给服务器故障检测模块,服务器故障检测模块就会像注册维护装置发送Web服务器异常的信息(特别注意,这个时候异常是主备节点都发生异常)。
服务故障,在注册表标记为不可用:服务故障处理模块在接收到异常Web服务器信息后将会更新本地注册表,将该服务器修改为不可用。网络客户端在发送网络请求时,在服务器路由时将不会路由到异常的Web服务集群中。
服务故障恢复,在注册表标记为可用:服务器故障检测模块是在循环执行的,如果异常的服务集群恢复正常,则会通知注册表维护装置将异常修改为正常,网络客户端在发送请求时,服务恢复模块在服务器路由时上次异常的服务器由于被修改为正常,将也会接受到客户端的请求。
另外,基于上述方法实施例的同一构思,本发明实施例还提供了网络请求的自动分发系统,用于实现本发明的上述方法,由于该系统实施例解决问题的原理与上述方法相似,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
参见图8,图8为本发明实施例提供的一种网络请求的自动分发系统的结构示意图。如图8所示,该网络请求的自动分发系统包括:
服务器路由模块110,用于当接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群;
请求分发模块120,用于将网络请求分发至服务器集群中;
响应反馈模块130,用于将服务器集群对网络请求的响应结果反馈至网络客户端。
本申请提供的网络请求的自动分发系统,服务器路由模块110在接收到网络客户端发送的网络请求时,根据本地注册表中的集群信息,按照预设服务器路由算法选择对应的服务器集群,然后请求分发模块120将网络请求分发至服务器集群中,响应反馈模块130将服务器集群对网络请求的响应结果反馈至网络客户端。因为服务器集群的集群信息存储在本地注册表中,这样当有大量网络请求出现时,按照服务器路由算法将网络请求分别分发至对应的服务器集群就能够均衡服务器的负载,提高服务器集群的运维效率,从而解决现有技术中Web服务器流量压力过大,加载缓慢甚至无法连接的问题。
作为一种优选的实施例,如图9所示,上述服务器路由模块110包括:
集群轮询子模块111,用于按照集群信息中的服务器集群的排列顺序,依次轮询服务器集群;
第一集群选择子模块112,用于按照排列顺序,从响应轮询的服务器集群中选择网络请求对应的服务器集群。
作为一种优选的实施例,如图10所示,本申请实施例提供的服务器路由模块110,包括:
连接数获取子模块113,用于获取集群信息中包含的所有服务器集群的连接数;
第二集群选择子模块114,用于按照最小连接数原则,选择连接数最小的服务器集群;
或者,
第三集群选择子模块115,用于当所有服务器集群的连接数大于或等于预设连接数时,根据网络请求的请求源IP的hash值,选择需要发送的服务器集群。
作为一种优选的实施例,如图11所示,上述网络请求的自动分发系统还包括:
集群轮询模块140,用于定时轮询发现部署的所有服务器集群,其中,服务器集群包括主用Web服务器和备用Web服务器;
集群注册模块150,用于将发现的所有Web服务器的信息注册至本地注册表的集群信息中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
- 一种网络请求的自动分发方法和系统
- 一种自动缓存网络请求返回数据的方法及系统