tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SCAlibaba-Nacos

  • SCAlibaba-Sentinel

  • 负载均衡与服务调用

    • LoadBalancer的使用
      • 它是负载均衡组件
      • 它的特点
      • 它的使用
        • 工作流程
        • 关键步骤
      • 轮询算法切换
    • OpenFeign的使用
    • OpenFeign高级特性
  • 服务熔断与降级

  • 服务链路追踪与网关

  • 分布式实战与细节

  • 其他

  • 《SpringCloud》笔记
  • 负载均衡与服务调用
EffectTang
2024-11-01
目录

LoadBalancer的使用

# Loadbalancer的使用

# 它是负载均衡组件

在 Spring Cloud 中,LoadBalancer 是一个重要的组件,主要用于实现客户端负载均衡。它可以帮助微服务应用在多个服务实例之间均匀地分配请求,从而提高系统的可用性和性能。

客户端负载均衡:

  • LoadBalancer 位于客户端,负责在多个服务实例之间分配请求。
  • 客户端通过 LoadBalancer 获取服务实例列表,并根据某种负载均衡策略选择一个实例进行通信。

那什么是服务端负载均衡呢?Nginx就是一个典型的服务端负载均衡组件。

# 它的特点

它有以下几个特点,

服务发现集成(这也是它主要作用):

  • LoadBalancer 通常与服务发现组件(如 Eureka、Consul、Nacos)集成,动态获取服务实例列表。
  • 当服务实例发生变化时(如新增、删除、健康检查),LoadBalancer 会自动更新服务实例列表。

灵活的负载均衡策略:

  • LoadBalancer 支持多种负载均衡策略,如轮询、随机、最少连接数等。
  • 开发者可以根据具体需求选择合适的负载均衡策略。

去中心化:

  • 没有单点故障,因为每个客户端都独立选择后端服务器。
  • 即使某个客户端或服务实例失败,也不会影响整个系统的正常运行。

易于水平扩展:

  • 客户端负载均衡易于水平扩展,因为每个客户端都是独立的。
  • 新增或移除服务实例时,客户端会自动更新服务实例列表。

任何事物都是如此,再带来新的便利之时,也会带来新的问题。以下就是它所带来的新问题(其中典型的):

  1. 网络开销:
    • 客户端需要定期与服务发现组件通信以获取最新的服务实例列表,这可能会增加网络开销。
    • 如果服务实例数量较多,频繁的通信可能会对网络带宽造成压力。
  2. 复杂性:
    • 客户端需要实现负载均衡逻辑,增加了开发和维护的复杂性。
    • 开发者需要了解和配置负载均衡策略,可能需要更多的学习和调试时间。

# 它的使用

它作为SpringCloud官方组件,当然,在官网是可以找到的,不过它的位置有点隐蔽。没有作为一个单独组件展示出来,而是挂在组件Spring Cloud Commons下了。

在Learn面板的,Guides菜单中可以找到。

这里是SpringCloud LoadBalancer (opens new window)官网介绍的从0到1的案例

  • https://spring.io/guides/gs/spring-cloud-loadbalancer

或者你可以在所有项目汇总这里进行搜索:Spring-搜索页 (opens new window)

  • https://spring.io/guides

当然,你也可以在Commons对应的Reference中找到。

这是对LoadBalancer (opens new window)的特性以及使用介绍:

  • https://docs.spring.io/spring-cloud-commons/reference/spring-cloud-commons/loadbalancer.html

# 工作流程

第一步,先选择服务注册中心(比如:ConsulServer)从服务端查询并拉取服务列表,知道了它有多个服务,这几个实现是完全一样的,

默认轮询调用谁都可以正常执行。类似生活中求医挂号,某个科室今日出诊的全部医生,客户端你自己选一个。

第二步,按照指定的负载均衡策略从server取到的服务注册列表中由客户端自己选择一个地址,所以LoadBalancer是一个客户端的负载均衡器。

# 关键步骤

引入对应pom坐标:

<!--loadbalancer-->
< dependency >
     < groupId >org.springframework.cloud </ groupId >
     < artifactId >spring-cloud-starter-loadbalancer </ artifactId >
</ dependency >
1
2
3
4
5

该坐标添加到要去消费其他微服务的module中。

# 轮询算法切换

  • https://docs.spring.io/spring-cloud-commons/reference/spring-cloud-commons/loadbalancer.html#switching-between-the-load-balancing-algorithms
上次更新: 2025/04/23, 16:23:16
初识Sentinel-流量治理组件
OpenFeign的使用

← 初识Sentinel-流量治理组件 OpenFeign的使用→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式