首页 > 其他分享 >Ribbon负载均衡

Ribbon负载均衡

时间:2024-05-22 16:40:49浏览次数:20  
标签:负载 服务 Ribbon 均衡 服务端 客户端

  1. Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。负载均衡是系统处理高并发、缓解网络压力和服务端扩容的重要手段之一。

  2. 通过Ribbon,以将面向服务的 REST 模板(RestTemplate)请求转换为客户端负载均衡的服务调用,Spring Cloud 微服务之间的调用,API 网关的请求转发等内容,实际上都是通过 Spring Cloud Ribbon 来实现的。

  3. 服务端负载均衡

    当客户端发送请求时,该请求不会直接发送到服务端进行处理,而是全部交给负载均衡服务器,由负载均衡服务器按照某种算法(例如轮询、随机等),从其维护的可用服务清单中选择一个服务端,然后进行转发。

    服务端负载均衡具有以下特点:

    需要建立一个独立的负载均衡服务器。
    负载均衡是在客户端发送请求后进行的,因此客户端并不知道到底是哪个服务端提供的服务。
    可用服务端清单存储在负载均衡服务器上。

  4. 客户端负载均衡

    客户端负载均衡是将负载均衡逻辑以代码的形式封装到客户端上,即负载均衡器位于客户端。客户端通过服务注册中心(例如 Eureka Server)获取到一份服务端提供的可用服务清单。有了服务清单后,负载均衡器会在客户端发送请求前通过负载均衡算法选择一个服务端实例再进行访问,以达到负载均衡的目的;

    客户端负载均衡也需要心跳机制去维护服务端清单的有效性,这个过程需要配合服务注册中心一起完成。

    客户端负载均衡具有以下特点:

    负载均衡器位于客户端,不需要单独搭建一个负载均衡服务器。
    负载均衡是在客户端发送请求前进行的,因此客户端清楚地知道是哪个服务端提供的服务。
    客户端都维护了一份可用服务清单,而这份清单都是从服务注册中心获取的。

    Ribbon 就是一个基于 HTTP 和 TCP 的客户端负载均衡器,当我们将 Ribbon 和 Eureka 一起使用时,Ribbon 会从 Eureka Server(服务注册中心)中获取服务端列表,然后通过负载均衡策略将请求分摊给多个服务提供者,从而达到负载均衡的目的。

  5. 区别

  6. Ribbon负载均衡策略

  7. 负载均衡的工作流程

    负载均衡的工作流程主要有以下几个过程:

    首先 order-service 使用 RestTemplate 发送的请求会被 Ribbon(负载均衡) 所拦截,并对请求的 url 进行解析;
    拿到服务名称 userservice(user-service 配置文件中服务命名) ,接着 Ribbon 会通过这个服务名称 userservice 去 eureka-server (服务注册中心)拉去服务的服务列表(要访问的主机ip和端口号);
    最后 Ribbon 会通过负载均衡算法从服务列表中挑选出合适的ip+端口号,接着 Ribbon 会通过修改服务名称 userservice 为挑选出的 ip+端口号 刚刚请求到对应的服务。

  8. 策略原理

    负载均衡的实现主要有三种算法:轮询(默认方式)、随机、权值分配,其中轮询 ZoneAvoidanceRule 也是 @LoadBalanced 注解默认的分配策略

  9. 定义IRule修改负载均衡规则

    • 方式一: 在order–service中的OrderApplication类中,定义一个新的IRule:
    @Bean
    public IRule randomRule() {
       return new RandomRule();
    }
    
    • 方式二: 配置文件方式:在order–servicel的application.yml文件中,添加新的配置也可以修改规则:
    userservice:
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
    
  10. 饥饿加载

    Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长,而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

    ribbon:
      eager-load:
        enabled: true # 开启饥饿加载
        clients: 
        	- userservice # 指定饥饿加载的服务名称
        	- xxservice
    

标签:负载,服务,Ribbon,均衡,服务端,客户端
From: https://www.cnblogs.com/hytip/p/18206612

相关文章

  • SpringCloud(2)-Ribbon相关配置
    Ribbon是一套提供客户端负载均衡的工具Ribbon=负载均衡+RestTemplateRibbon属于进程内LoadBalance,含义是将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再从这些地址中选择出一个合适的服务地址。Ribbon常见负载算法:我们接下来以随机负载......
  • Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
    目录目录目录前言与背景传统LB技术的局限性HDSLB的特点和优势HDSLB的性能参数基准性能数据对标竞品HDSLB的应用场景HDSLB的发展前景参考文档前言与背景在云计算、SDN、NFV高速发展并普遍落地的今天,随着上云业务的用户数量越来越多、数据中心的规模越来越大,云计算规模成......
  • Java Chassis 3:接口维度负载均衡
    本文分享自华为云社区《JavaChassis3技术解密:接口维度负载均衡》,作者:liubao68。在JavaChassis3技术解密:负载均衡选择器中解密了JavaChassis3负载均衡在解决性能方面提供的算法。这次解密的技术来源于实际客户案例:在客户的微服务系统中,存在很多种不同逻辑的接口,以及特殊......
  • VMware Avi Load Balancer 30.2.1 发布 - 多云负载均衡平台
    VMwareAviLoadBalancer30.2.1发布-多云负载均衡平台应用交付:多云负载均衡、Web应用防火墙和容器Ingress服务请访问原文链接:VMwareAviLoadBalancer30.2.1-多云负载均衡平台,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org负载均衡平台VMwareAviLoa......
  • VMware NSX Advanced Load Balancer (NSX ALB) 30.2.1 - 多云负载均衡平台
    VMwareNSXAdvancedLoadBalancer(NSXALB)30.2.1-多云负载均衡平台应用交付:多云负载均衡、Web应用防火墙和容器Ingress服务请访问原文链接:VMwareNSXAdvancedLoadBalancer(NSXALB)30.2.1-多云负载均衡平台,查看最新版。原创作品,转载请保留出处。作者主页:sysin......
  • Nginx负载均衡、动静分离Tomcat案例实战
    一、前言1)Tomcat是一款开源的、免费的WEB软件服务器,是隶属于Apache基金会旗下的,主要是用于去发布网站代码、提供网页信息服务的。用户通过浏览器可以实现网站页面的访问。2)TomcatWEB软件默认可以处理静态网页(Apache、Nginx),同时也可以处理动态网页,主要是处理JSP动态网页,JSP(Java......
  • 微服务Spring Cloud17_负载均衡Ribbon6
    一、概述在刚才的案例中,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。但是实际环境中,往往会开启很多个user-service的集群。此时获取的服务列表中就会有多个,到底该访问哪一个呢?一般这种情况下就需要编写负载均衡算......
  • 接入大量设备后,视频汇聚系统EasyCVR安防监控视频融合平台是如何实现负载均衡的?
    一、负载均衡随着技术的不断进步和监控需求的日益增长,企业视频监控系统的规模也在不断扩大,接入大量监控设备已成为一项常态化的挑战。为确保企业能够有效应对这一挑战,视频汇聚系统EasyCVR视频融合平台凭借其卓越的高并发处理能力,为企业视频监控管理系统提供了持续可靠的负载均衡......
  • SpringBoot3.1.5对应新版本SpringCloud开发(2)-Eureka的负载均衡
    Eureka的负载均衡负载均衡原理负载均衡流程老版本流程介绍当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获取到请求中的服务名称,交给RibbonLoadBanlancerCient,然后RibbonLoadBanlancerCient会将服务名称当作服务id交给Dynamic......
  • 负载均衡
    应用层负载原理:当客户端发送数据到HTTP代理时,HTTP代理必须先收集好一个完整的HTTP请求后,然后根据当前请求再重新构建一个新的HTTP请求向后端服务器发送,后端服务器收到HTTP请求后再响应HTTP代理,最终HTTP代理根据后端服务器响应的内容响应重新封装成一个自己的HTTP响应发给客户端。......