SpringCloud (五)ribbon

SpringCloud Ribbon是基于Netflix Ribbon实现的客户端负载均衡工具,用于在微服务间进行连接。它提供了多种负载均衡策略,如简单轮询。在项目中,通过添加相关依赖并配置Eureka,可以实现服务间的负载均衡调用。同时,通过配置LoadBalanced的RestTemplate,可以便捷地在服务名前动态指定目标地址,实现客户端的负载均衡访问。
摘要由CSDN通过智能技术生成

ribbon

1.ribbon是什么

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

2.ribbon能干嘛

  • LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。
  • 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA (高可用)。常见的负载均衡软件有Nginx,Lvs等等
  • dubbo、SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义

3.集成ribbon

客户端添加依赖

springcloud-consumer-dept-80/pom.xml

 <!--ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>

        <!--eureka-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>

添加配置
application.yml

  #eureka配置
eureka:
  client:
    register-with-eureka: false #不向eureke注册自己
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/

配置负载均衡实现template

com.zjj.springcloud.config.ConfigBean

package com.zjj.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {

    //配置负载均衡实现template
    @Bean
    @LoadBalanced //ribbon
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

修改地址

//通过ribbon去实现的时候,我们这个地址应该是一个变量,通过服务名来访问
   // private static final String REST_URL__PREFIX = "http://localhost:8001/";
    private static final String REST_URL__PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT";

启动后访问

在这里插入图片描述

4. 使用ribbon实现负载均衡

创建db02、db03数据库

在这里插入图片描述
创建两个提供者8002,8003

在这里插入图片描述
从8001复制

修改application.yml


server:
  port: 8002

#mybaties配置
mybatis:
  type-aliases-package: com.zjj.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml

#spring配置
spring:
  application:
    name: springcloud-provider-dept
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/db02?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
  # Eureka 注册
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
    instance:
      instance-id: springcloud-providr-dept8002 # 修改默认名称

修改启动类

package com.zjj;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

//启动类
@SpringBootApplication
@EnableEurekaClient //自动在服务启动后注册到Eureka中
public class DeptProvider_8002 {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvider_8002.class,args);
    }
}

启动并访问,ribbon默认算法轮询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值