栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《SpringCloud微服务 四》之 Ribbon 负载均衡

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《SpringCloud微服务 四》之 Ribbon 负载均衡

《SpringCloud微服务 四》之 Ribbon 负载均衡

目录

《SpringCloud微服务 四》之 Ribbon 负载均衡

四、ribbon 负载均衡

4.1 负载均衡策略4.2 自定义负载均衡策略


四、ribbon 负载均衡

Ribbon是一个客户端的负载均衡器,它决定选择哪一台机器来调用远程服务,对于多应用实例


1.添加依赖


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


2.添加配置

server:
  port: 8081
spring:
  application:
    name: user-service

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8080/eureka

3.在启动类上添加开启 负载均衡 客户端注解 @RibbonClient

@SpringBootApplication
@EnableEurekaClient
// 开启负载均衡
@RibbonClient
public class UserServiceApplication {

	public static void main(String[] args) {
		SpringApplication.run(UserServiceApplication.class, args);
	}
	
}


4.对 RestTemplate添加 负载均衡 @LoadBalanced 注解

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

这样就可以对 RestTemplate 进行负载均衡 调用服务


5.控制器 负载均衡调用服务

@RestController
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private RestTemplate restTemplate ;
	
	@GetMapping("/book")
	public BookVo getBook() {
		String url = "http://BOOKS-SERVICE/book" ;
		return restTemplate.getForObject(url, BookVo.class);
	}
}


当调用 BOOKS-SERVICE 服务时,会去eureka服务注册中心获取具体的IP地址进行请求,当有多个实例时,ribbon会实现负载均衡的去调用服务




4.1 负载均衡策略

ribbon 默认是采用的 轮询调度策略 RoundRobinRule


常用的负载均衡规则(IRule)有:

负载均衡策略子类型负载均衡名称
RoundRobinRule轮询调度(默认的)
WeightedResponseTimeRule权重(不推荐,过时了)
ResponseTimeWeightedRule权重
RandomRule随机分配
RetryRule重试机制




4.2 自定义负载均衡策略

1.添加配置类 自定义负载均衡策略 或者实现 IRule 接口

@Configuration
public class CostumRibbonConfig {

	@Bean
	public IRule ribbonRule() {
        // 自定义负载均衡的策略,此处采用的 随机策略
		return new RandomRule();
	}

}


2.启动类上添加 开启负载均衡配置

@SpringBootApplication
@EnableEurekaClient
// 开启ribbon负载均衡
// books-service 服务采用的是 CostumRibbonConfig 里面的负载均衡策略
@RibbonClient(name = "books-service", configuration = CostumRibbonConfig.class)
public class UserServiceApplication {

	public static void main(String[] args) {
		SpringApplication.run(UserServiceApplication.class, args);
	}
	
	
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号