SpringCloud-Netflix学习笔记07——负载均衡及Ribbon

鸡汤:
理论 和 实践 是同样重要的!
因为在你们去面试的时候,需要有谈资!!!
你需要先进去,才能够拥有干活的机会,所以要耐着性子学习!

概述

Ribbon是什么?

  Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

  简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将NetFlix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer(简称LB:负载均衡)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法!

Ribbon能干嘛?

  LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。

  负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。
常见的负载均衡软件有 Nginx,Lvs 等等。

  Dubbo、SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。

  负载均衡简单分类:

  • 集中式LB
    • 即在服务的消费方和提供方之间使用独立的LB设施
    • 如之前学习的Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方!
  • 进程式LB
    • 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
    • Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!

   Ribbon的github地址 : https://github.com/NetFlix/ribbon

Ribbon初步配置

   在之前 RestTemplate 配置的基础上,加一个注解即可 @LoadBalanced

//配置Ribbon负载均衡,将消费者的请求均摊到三个注册中心,一次请求在某一个注册中心拿到服务,通过Ribbon的算法来进行选择
    @Bean
    @LoadBalanced  //Ribbon
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

Ribbon使用

   之前通过RestTemplate实现服务提供者和服务消费者之间的通信,把提供者的地址写死,如下:

// 通过地址进行访问
   private static final String REST_URL_PREFIX = "http://localhost:8001";

   通过Ribbon实现负载均衡,将消费者的请求均摊到三个注册中心,一次请求在某一个注册中心拿到服务,所以地址不能写死,通过Ribbon的算法来进行选择,通过服务名(Application)来访问,如下:

private static final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT";

  使用方法同 RestTemplate ,不再说明。

注意: 可以有多个服务提供者,拥有同一个服务名(Application),这样的话,每次请求都会拿到不同主机上的同一个服务,减少同一个主机的压力。
posted @   爱吃雪糕的小布丁  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示