• Ribbon负载均衡


    1 什么是负载均衡

    负载均衡(Load Balancing)是一种分发网络流量的技术,它可以将传入的请求分发到多个服务器或者计算资源上,以提高系统的性能、可靠性和可伸缩性。在负载均衡的环境下,多个服务器共同处理来自客户端的请求,而不是单个服务器处理所有请求。

    负载均衡器通常位于客户端和服务器之间,它可以根据预定的算法(例如轮询、加权轮询、最小连接数等)将请求转发到多个服务器上,以确保这些服务器的负载相对均衡。这样做可以避免单个服务器过载,提高整个系统的性能和可用性。

    2 Ribbon负载均衡

    Ribbon 是一个负载均衡客户端库,它可以与其他负载均衡解决方案(如 Eureka、Consul、Zookeeper 等)结合使用,提供了在客户端实现负载均衡的功能。Ribbon 主要用于微服务架构中,能够将请求分发到多个服务实例上,以提高系统的性能、可靠性和可伸缩性。

    下面是 Ribbon 负载均衡的一些关键特性:

    1. 客户端负载均衡:Ribbon 在客户端实现负载均衡,即每个服务消费者都包含一个 Ribbon 实例,用于决定向哪个服务实例发送请求。

    2. 多种负载均衡算法:Ribbon 提供了多种负载均衡算法,如轮询、加权轮询、随机等,可以根据实际需求选择合适的算法。

    3. 服务实例的健康检查:Ribbon 可以定期检查服务实例的健康状态,如果某个服务实例不可用,它将不再接收请求,直到恢复正常。

    4. 容错和重试机制:Ribbon 具有容错和重试机制,可以处理因网络故障或服务实例不可用导致的请求失败问题。

    5. 自定义配置:Ribbon 提供了丰富的配置选项,可以根据实际情况进行定制,包括超时设置、重试策略、连接池配置等。

    6. 与 Spring Cloud 整合:Ribbon 是 Spring Cloud 中的一部分,可以与其他组件(如 Eureka、Zookeeper、Consul 等)无缝集成,实现微服务架构中的负载均衡功能。

    总的来说,Ribbon 是一个功能强大、灵活易用的负载均衡解决方案,适用于构建基于微服务架构的分布式系统。

    3 Ribbon 负载均衡策略

    1. RoundRobinRule(轮询策略):默认的负载均衡策略,按顺序轮询访问可用的服务实例。

    2. RandomRule(随机策略):随机选择一个可用的服务实例进行访问。

    3. RetryRule(重试策略):在一定次数内进行重试,如果请求失败,则会尝试重新选择另一个服务实例。

    4. BestAvailableRule(最佳可用策略):选择最低并发的服务实例,排除故障的实例。

    5. AvailabilityFilteringRule(可用过滤策略):过滤掉一直连接失败的服务实例,并选择其中并发量较小的实例。

    6. WeightedResponseTimeRule(加权响应时间策略):根据历史响应时间和权重,动态计算权重,选择响应时间较快的服务实例。

    7. ZoneAvoidanceRule(区域感知策略):根据服务所在的区域进行负载均衡,避免跨区域访问,提高访问效率。

    8. CustomRule(自定义策略):允许开发人员自定义负载均衡策略,根据实际需求进行定制。

    4.Ribbon负载均衡策略设置


    4.1 全局设置

    在启动类或配置类中注入负载均衡策略对象。所有服务请求均使用该策略。

    1. @Bean
    2. public RandomRule randomRule() {
    3. return new RandomRule();
    4. }


    4.2局部设置


            修改配置文件指定服务的负载均衡策略。

    1. # 负载均衡策略
    2. # service-provider 为调用的服务的名称
    3. service-provider:
    4.   ribbon:
    5.     NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule


    5.Ribbon 点对点直连


     点对点直连是指绕过注册中心,直接连接服务提供者获取服务,一般在测试阶 段使用比较多。

    5.1 添加依赖

      在调用方 pom 文件中引入 ribbon 依赖,需要注意的是如果 pom 中有 Eureka 的依赖,则需要去除 Eureka 的依赖。

    1.     org.springframework.cloud
    2.     spring-cloud-starter-netflix-ribbon


    5.2 配置文件

       配置文件中关闭 Eureka,添加直连的服务地址。如果不设置负载均衡策略默认 使用轮询策略。

    1. # 负载均衡策略
    2. # service-provider 为调用的服务的名称
    3. service-provider:
    4.   ribbon:
    5.     NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    6.     # 点对点直连模式,指定具体的 Provider 服务列表,多个用逗号隔开
    7.     listOfServers: http://localhost:7070,http://localhost:7071
    8. # 关闭 Eureka 实现 Ribbon 点对点直连
    9. ribbon:
    10.   eureka:
    11.     enabled: false # false:关闭,true:开启


    5.3 访问
     

            关闭 Eureka 注册中心,服务提供者由于无法连接至注册中心所以会报连接异 常。但是服务是可以正常可消费的,所以目前使用的是点对点的方式来进行调用的。

     

  • 相关阅读:
    基于规则的中文地名识别系统的设计与实现
    一级造价工程师(安装)- 计量笔记 - 重点必考考点
    gunicorn
    OpenSSL证书通过Subject Alternative Name扩展字段扩展证书支持的域名
    E: Unable to locate package xxxx
    天翼云推出全栈政务混合云 支持私有化运行
    聊聊交互设计师的成长 优漫动游
    校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
    Scratch软件编程等级考试三级——20210626
    【若依(ruoyi)】设置主题样式
  • 原文地址:https://blog.csdn.net/hhkdinkd/article/details/136686182