CN115604271A - 一种基于微服务的软硬件互补的负载均衡方法 - Google Patents
一种基于微服务的软硬件互补的负载均衡方法 Download PDFInfo
- Publication number
- CN115604271A CN115604271A CN202210925155.0A CN202210925155A CN115604271A CN 115604271 A CN115604271 A CN 115604271A CN 202210925155 A CN202210925155 A CN 202210925155A CN 115604271 A CN115604271 A CN 115604271A
- Authority
- CN
- China
- Prior art keywords
- service
- load balancing
- address
- request
- load
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于微服务的软硬件互补的负载均衡方法,包括:各服务均集成负载均衡模块并配置F5硬件的负载均衡地址;初始化配置信息;初始化负载均衡模块;查询微服务注册中心,获取各关联服务端的节点地址信息列表,用以更新服务配置信息中的集群地址;当服务向其他服务发送请求时,负载均衡模块根据请求服务的服务名称进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。本发明在双层负载策略下,能够很好的保障系统负载均衡的稳定性。
Description
技术领域
本发明属于互联网负载均衡技术领域,具体涉及一种基于微服务的软硬件互补的负载均衡方法。
背景技术
在当今的互联网商业模式下,企业通过建立自己的商务业务系统来开展业务,而如今流行以微服务技术架构来构建这些业务系统。微服务技术架构的系统一般由许多个独立服务组成,一个完整的业务将被拆分成不同的部分,每个服务只负责其中的一部分,业务最终由多个服务之间相互协作才能完成。服务与服务之间通过发送请求来实现相互协作;另外,为了保障服务的稳定,服务一般由一群服务实例组成;为了将请求从一个服务(客户端)发送给另一个服务(服务端),必须引入负载均衡,使服务端每个服务能够相对平衡的处理来自客户端的请求。
当前,在行业内实现应用的负载均衡的工具有多种,比较常用的包括:F5负载均衡设备,LVS、Nginx、软件自定义的负载均衡等。这些负载均衡大致可以分为两类:一类是独立部署的负载设备,包括F5设备、LVS、NGINX这些工具;另一类是在客户端集成负载均衡算法,由客户端自己实现负载均衡。
对于独立部署的负载均衡设备,比较好的是F5设备,它的优点是稳定,但最大的缺陷就是投入成本太高,当性能不满足要求时,就需要买更高要求的设备;而采用由客户端自行实现负载均衡的方式的,在高性能场景下,由于服务端集群节点的状态变化如宕机、停机发布等,不能十分快速的反馈到客户端,会存在偶尔的失败。
发明内容
本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于微服务的软硬件互补的负载均衡方法,通过客户端软件负载均衡和F5负载均衡设备相结合的方式,来实现最终的负载均衡方案。
为实现上述技术目的,本发明采取的技术方案为:
一种基于微服务的软硬件互补的负载均衡方法,先通过软件负载均衡模块对请求进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。
为优化上述技术方案,采取的具体措施还包括:
上述的方法包括以下步骤:
步骤1,服务集群中各服务均集成负载均衡模块,使各服务具备软件负载均衡能力;同时为每个服务配置F5硬件的负载均衡地址,使各服务具备硬件负载均衡能力;
步骤2,服务集成负载均衡模块后,按照负载均衡模块的要求,进行初始化配置,配置信息包括注册中心地址,关联的各服务端F5负载均衡地址;
步骤3,服务启动时,初始化负载均衡模块,包括初始化服务端配置信息和初始化负载均衡算法实例;
步骤4,在负载均衡模块初始化后,查询微服务注册中心,获取各关联服务端的节点地址信息列表,用以更新服务配置信息中的集群地址,删除配置信息集群地址中存在而注册中心里不存在的节点地址,添加配置信息集群地址中不存在而注册中心里存在的地址;
步骤5,当服务向其他服务发送请求时,负载均衡模块根据请求服务的服务名称进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。
上述的步骤2配置如下信息:
注册中心地址:用于当服务作为客户端时,获取其需要的服务端各节点地址信息;当服务作为服务端时,启动时报送本身节点的地址信息;
关联的各服务端F5负载均衡地址:用于作为当请求经过软件负载均衡失败时重试发送的备用兜底地址,启到双重保障作用。
上述的步骤3包括:
步骤3.1,初始化服务端配置信息:为每个服务端都建立一个配置对象,该配置对象包括服务名称、服务集群地址列表以及服务的F5负载均衡地址;
步骤3.2,初始化负载均衡算法实例:为每个服务端单独创建一个负载均衡算法实例对象,该对象负责为去往其对应服务的请求计算出目标节点;并以服务名称为Key将该对象存储在一个全局Hash存储结构。
上述的步骤3.1中,服务名称作为服务端的唯一标识,用作从配置中心获取该服务的各节点地址信息以及请求去往的目标服务的凭证;
服务集群地址列表,用于给负载均衡算法实例计算负载调度,并获取某个节点的地址信息;
服务的F5负载均衡地址,用于在软件负载失败的情况下,作为兜底的负载调度方案。
上述的步骤4过程由专门的线程周期性调度,直到服务的生命周期结束。
上述的步骤5具体过程如下:
步骤5.1,根据请求目标服务的服务名称,获取该服务的负载均衡算法实例以及配置信息;
步骤5.2,初始化负载均衡算法实例中的index指针;
步骤5.3,当请求过来被负载调度时,负载均衡算法实例用index指针的值和根据配置信息中服务集群地址列表的长度length进行比较:
1)如果index<length,返回服务集群地址列表中序列为index的地址;
2)如果index≥length,index设置成0,并返回服务集群地址列表中的首地址;
步骤5.4,index自增1,为下次负载调度做准备;
步骤5.5,当请求因异常未能成功发送时,再次重试,负载均衡模块直接使用配置信息中的F5地址作为兜底,从而实现优先软件负载调度,然后再由硬件负载做补充的软硬件互补的负载均衡方法。
本发明具有以下有益效果:
本发明首先,在微服务架构体系内,各服务需要嵌入负载均衡模块,该模块支持服务作为客户端时具备负载均衡的能力;在服务启动前,将其关联的其他服务的F5负载均衡地址配置进服务,由该地址作为兜底来实现负载均衡措施;在服务启动时,服务需要初始化负载均衡模块,以备服务发出请求时的负载调度;负载模块启动后,立即查询微服务的注册中心,获取其作为客户端时关联的其他各服务集群的各节点地址信息,并以服务为维度更新地址配置信息,该过程在程序生命周期内将周期性执行,以保证各服务的地址配置信息的有效性;当服务向其他服务发送请求时,负载模块采用轮询策略进行负载调度,直接将请求发给某个指定的远端服务节点;如果请求失败,将以该服务的F5负载均衡地址重试请求,作为兜底。
1、通过客户端服务集成负载均衡模块能够满足高性能要求,处理绝大部分负载均衡的需求;
2、利用现有的已经达不到性能要求的F5设备作为补充,在客户端软件负载均衡失败的情况下,依然能够完成负载请求发送,节省了成本,提高了服务整体的稳定性。
本发明通过优先使用客户端负载均衡,利用F5设备为辅助的负载均衡实现方法,有效的降低对F5设备的依赖,达到节约成本的目的,又能减少网络交互,提高系统性能。在双层负载策略下,很好的保障系统负载均衡的稳定性。
附图说明
图1为本发明一种基于微服务的软硬件互补的负载均衡方法的工作流程图;
图2为本发明一种基于微服务的软硬件互补的负载均衡方法的系统架构图;
图3为本发明一种基于微服务的软硬件互补的负载均衡方法的负载均衡模块结构示意图;
图4为本发明一种基于微服务的软硬件互补的负载均衡方法的配置文件实例图;
图5为本发明一种基于微服务的软硬件互补的负载均衡方法的负载均衡算法实例代码截图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细描述。
如图1-2所示,在微服务架构的系统中,存在多个服务,且每个服务都由多个节点组成。一个业务往往需要多个服务通过发送请求相互协作来完成,发送请求方为客户端,接受请求方为服务端,请求必须要发送到服务端的某个具体的节点上处理,为了平衡各节点的处理能力,因此需要负载均衡。本发明基于微服务的软硬件互补的负载均衡方法先通过软件负载均衡模块对请求进行调度,将请求发送到目标服务的指定节点地址,若发送失败,就用服务端的F5负载均衡地址作为兜底把请求发送过去,具体步骤如下:
步骤1,服务集群中各服务均集成负载均衡模块,因此服务就具备了软件负载均衡能力;同时为每个服务配置F5硬件的负载均衡地址,因此该服务集群就具备了硬件负载均衡能力。
通过步骤1使得在微服务架构系统中每个服务都具备软件负载均衡能力和硬件负载均衡能力。
步骤2,服务集成负载均衡模块后,按照负载均衡模块的要求,进行初始化配置。
程序在使用负载均衡模块时,配置信息需要包含注册中心地址以及其关联的各服务端的F5负载均衡地址;
注册中心地址(配置项为rpc.registry.addrs),用作:当服务作为客户端时,获取其需要的服务端各节点地址信息;当服务作为服务端时,启动时报送本身节点的地址信息;
关联的各服务端F5负载均衡地址,配置格式为rpc.client.serverAddresses.<服务名称>=<F5负载均衡地址>,作为当请求经过软件负载均衡失败等紧急情况发生时重试发送的备用兜底地址,起到双重保障作用;
步骤3,服务启动时,初始化负载均衡模块,如图3所示,具体包括:服务端配置信息、负载均衡算法实例;
步骤3.1,初始化服务端配置信息:为每个服务端都建立一个配置对象,该配置对象由3部分组成,分别是:服务名称、服务集群地址列表以及服务的F5负载均衡地址;
服务名称作为服务端的唯一标识,用作从配置中心获取该服务的各节点地址信息以及请求去往的目标服务的凭证;
服务集群地址列表,起到给负载均衡算法实例计算负载调度,并获取某个节点的地址信息的用途;
服务的F5负载均衡地址,是在软件负载失败的情况下,作为兜底的负载调度方案;
步骤3.2,初始化负载均衡算法实例:为每个服务端单独创建一个负载均衡算法实例对象,该对象负责为去往其对应服务的请求计算出目标节点;并以服务名称为Key将该对象存储在一个全局Hash存储结构;
步骤4,在负载均衡模块初始化后,会立即查询注册中心,获取其需要的各服务端的节点地址信息列表,用以更新该服务配置信息中的集群地址,删除配置信息集群地址中存在而注册中心里不存在的节点地址,添加配置信息集群地址中不存在而注册中心里存在的地址;这一过程由专门的线程周期性调度,直到服务的生命周期结束;
步骤5,当服务向其他服务发送请求时,负载均衡模块根据请求服务的服务名称进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。
步骤5中,当服务向其他服务发送请求时,负载均衡模块根据请求服务的服务名称进行调度,获取服务端具体节点的地址,过程如下:
步骤5.1,根据请求目标服务的服务名称,获取该服务的负载均衡算法实例以及配置信息;
步骤5.2,负载均衡算法实例中保存着一个指针index,该指针指向配置信息中服务集群地址列表中的某个位置,指针初始值为0;
步骤5.3,当请求过来被负载调度时,负载均衡算法实例用index指针的值和根据配置信息中服务集群地址列表的长度(length)进行比较:
1)如果index<length,返回服务集群地址列表中序列为index的地址;
2)如果index≥length,index设置成0,并返回服务集群地址列表中的首地址;
步骤5.4,index自增1,为下次负载调度做准备;
步骤5.5,当请求因异常未能成功发送时,会再次重试,此时负载均衡模块直接使用配置信息中的F5地址作为兜底,从而实现优先软件负载调度,然后再由硬件负载做补充的软硬件互补的负载均衡方法。
本发明配置文件实例与负载均衡算法实例代码如图4和5所示,本发明通过优先使用客户端负载均衡,利用F5设备为辅助的负载均衡实现方法,有效的降低对F5设备的依赖,达到节约成本的目的,又能减少网络交互,提高系统性能。在双层负载策略下,很好的保障系统负载均衡的稳定性。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (7)
1.一种基于微服务的软硬件互补的负载均衡方法,其特征在于,先通过软件负载均衡模块对请求进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。
2.根据权利要求1所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,所述方法包括以下步骤:
步骤1,服务集群中各服务均集成负载均衡模块,使各服务具备软件负载均衡能力;同时为每个服务配置F5硬件的负载均衡地址,使各服务具备硬件负载均衡能力;
步骤2,服务集成负载均衡模块后,按照负载均衡模块的要求,进行初始化配置,配置信息包括注册中心地址,关联的各服务端F5负载均衡地址;
步骤3,服务启动时,初始化负载均衡模块,包括初始化服务端配置信息和初始化负载均衡算法实例;
步骤4,在负载均衡模块初始化后,查询微服务注册中心,获取各关联服务端的节点地址信息列表,用以更新服务配置信息中的集群地址,删除配置信息集群地址中存在而注册中心里不存在的节点地址,添加配置信息集群地址中不存在而注册中心里存在的地址;
步骤5,当服务向其他服务发送请求时,负载均衡模块根据请求服务的服务名称进行调度,将请求发送到目标服务的指定节点地址,若发送失败,再采用服务端的F5负载均衡地址作为兜底把请求发送过去。
3.根据权利要求2所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,所述步骤2配置如下信息:
注册中心地址:用于当服务作为客户端时,获取其需要的服务端各节点地址信息;当服务作为服务端时,启动时报送本身节点的地址信息;
关联的各服务端F5负载均衡地址:用于作为当请求经过软件负载均衡失败时重试发送的备用兜底地址,启到双重保障作用。
4.根据权利要求2所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,所述步骤3包括:
步骤3.1,初始化服务端配置信息:为每个服务端都建立一个配置对象,该配置对象包括服务名称、服务集群地址列表以及服务的F5负载均衡地址;
步骤3.2,初始化负载均衡算法实例:为每个服务端单独创建一个负载均衡算法实例对象,该对象负责为去往其对应服务的请求计算出目标节点;并以服务名称为Key将该对象存储在一个全局Hash存储结构。
5.根据权利要求4所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,步骤3.1中,服务名称作为服务端的唯一标识,用作从配置中心获取该服务的各节点地址信息以及请求去往的目标服务的凭证;
服务集群地址列表,用于给负载均衡算法实例计算负载调度,并获取某个节点的地址信息;
服务的F5负载均衡地址,用于在软件负载失败的情况下,作为兜底的负载调度方案。
6.根据权利要求1所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,所述步骤4过程由专门的线程周期性调度,直到服务的生命周期结束。
7.根据权利要求1所述的一种基于微服务的软硬件互补的负载均衡方法,其特征在于,所述步骤5具体过程如下:
步骤5.1,根据请求目标服务的服务名称,获取该服务的负载均衡算法实例以及配置信息;
步骤5.2,初始化负载均衡算法实例中的index指针;
步骤5.3,当请求过来被负载调度时,负载均衡算法实例用index指针的值和根据配置信息中服务集群地址列表的长度length进行比较:
1)如果index<length,返回服务集群地址列表中序列为index的地址;
2)如果index≥length,index设置成0,并返回服务集群地址列表中的首地址;
步骤5.4,index自增1,为下次负载调度做准备;
步骤5.5,当请求因异常未能成功发送时,再次重试,负载均衡模块直接使用配置信息中的F5地址作为兜底,从而实现优先软件负载调度,然后再由硬件负载做补充的软硬件互补的负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210925155.0A CN115604271A (zh) | 2022-08-03 | 2022-08-03 | 一种基于微服务的软硬件互补的负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210925155.0A CN115604271A (zh) | 2022-08-03 | 2022-08-03 | 一种基于微服务的软硬件互补的负载均衡方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115604271A true CN115604271A (zh) | 2023-01-13 |
Family
ID=84843951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210925155.0A Pending CN115604271A (zh) | 2022-08-03 | 2022-08-03 | 一种基于微服务的软硬件互补的负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115604271A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117640642A (zh) * | 2024-01-26 | 2024-03-01 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
-
2022
- 2022-08-03 CN CN202210925155.0A patent/CN115604271A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117640642A (zh) * | 2024-01-26 | 2024-03-01 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
CN117640642B (zh) * | 2024-01-26 | 2024-04-09 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
CN105512266A (zh) | 一种实现分布式数据库操作一致性的方法及装置 | |
CN111897638B (zh) | 分布式任务调度方法及系统 | |
CN103905537A (zh) | 分布式环境下管理工业实时数据存储的系统 | |
US20170060570A1 (en) | Managing Software Version Upgrades in a Multiple Computer System Environment | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
WO2021031889A1 (zh) | 一种升级方法、通信设备以及计算机可读存储介质 | |
CN113987064A (zh) | 数据处理方法、系统及设备 | |
CN112039970B (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
CN105630589A (zh) | 分布式流程调度系统及流程调度、执行方法 | |
CN102571991A (zh) | 基于多级映射的大规模多副本分布式存储系统及其应用方法 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN101860493A (zh) | 为客户端分配应用服务器地址的方法、服务器及系统 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN107870982B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN112953982B (zh) | 一种服务处理的方法、服务配置的方法以及相关装置 | |
CN109995878A (zh) | 资源库共享方法及分布式集群系统 | |
CN107562803B (zh) | 数据供应系统及方法、终端 | |
CN115604271A (zh) | 一种基于微服务的软硬件互补的负载均衡方法 | |
CN113051102B (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
CN116055563A (zh) | 基于Raft协议的任务调度方法、系统、电子设备和介质 | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN110912979B (zh) | 一种解决多服务器资源同步冲突方法 | |
CN112243030A (zh) | 分布式存储系统的数据同步方法、装置、设备及介质 |
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 |