springcloud 之Ribbon客户端负载均衡配置使用
- pom.xml添加配置
说明:这里服务注册与发现用的是Eureka,所以消费者端需要引入eureka,使用EurekaClient来调用服务<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency> - 修改application.yml 添加eureka的服务注册地址,如下图:
说明:下图中的 service-url配置的是3个eureka集群服务地址
ConfigBean代码
说明:主要代码,获取RestTemplate时,添加@LoadBalanced注解实现客户端负载均衡package com.thr.springcloud.cfgbean; 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; import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule; /**
* 注解@Configuration说明:相当于spring的applicationContext.xml
* 即此时加了@Configuration注解的CfgBean类 等同于 applicationContext.xml
* @author xiongxiaomeng
*/
@Configuration
public class CfgBean { /**
* 使用RestTemplate调用Rest服务
* @LoadBalanced 获取RestTemplate时,加入Ribbon的负载均衡的配置
* @return Rest服务调用模板
*/
@Bean
@LoadBalanced
public RestTemplate getRestTemplate()
{
return new RestTemplate();
} /**
* 定义负载均衡算法:
* 默认:轮询,当前改成:随机
* @return 随机算法
*/
@Bean
public IRule myRule() {
return new RandomRule();
} }- 主启动类添加EurekaClient配置:

- 客户端访问类 UserController_Consumer.java
package com.thr.springcloud.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import com.thr.springcloud.entities.User; /**
* 消费者端的RestController
* 消费者端 都是 调用服务提供者的Controller,这里使用RestTemplate的方式调用
* @author xiongxiaomeng
*
*/
@RestController
public class UserController_Consumer { //未加入Eureka+Ribbon之前,采用ip+端口的访问方式
//private static final String REST_URL_PREFIX = "http://localhost:8001";
//加入Eureka+Ribbon之后,可以直接采用服务名的调用方式,无须再使用ip+端口的调用方式
private static final String REST_URL_PREFIX = "http://THRCLOUD-DEPT"; //使用restTemplate访问restful接口非常的简单粗暴无脑。(url, requestMap, ResponseBean.class)这三个参数分别代表
@Autowired
private RestTemplate _restTemplate; @RequestMapping(value="/consumer/user/add")
public boolean add(User user) {
return _restTemplate.postForObject(REST_URL_PREFIX + "/user/add", user, Boolean.class);
} @RequestMapping(value="/consumer/user/get/{userId}")
public User get(@PathVariable("userId") Long userId) {
return _restTemplate.getForObject(REST_URL_PREFIX + "/user/get/" + userId, User.class);
} @SuppressWarnings("unchecked")
@RequestMapping(value="/consumer/user/list")
public List<User> list() {
return _restTemplate.getForObject(REST_URL_PREFIX + "/user/list", List.class);
} @RequestMapping(value="/consumer/user/discovery")
public Object discovery() {
return _restTemplate.getForObject(REST_URL_PREFIX + "/user/discovery", Object.class);
}
}
springcloud 之Ribbon客户端负载均衡配置使用的更多相关文章
- SpringCloud实战-Ribbon客户端负载均衡
前面我们已经完成了注册中心和服务提供者两个基础组件.接着介绍使用Spring Cloud Ribbon在客户端负载均衡的调用服务. ribbon 是一个客户端负载均衡器,可以简单的理解成类似于 ngi ...
- springcloud(十二):Ribbon客户端负载均衡介绍
springcloud(十二):Ribbon客户端负载均衡介绍 Ribbon简介 使用分布式微服务脚骨的应用系统,在部署的时候通常会为部分或者全部微服务搭建集群环境,通过提供多个实例来提高系统的稳定型 ...
- SpringBoot(三) - Ribbon客户端负载均衡,Zuul网关,Config配置中心
1.Ribbon客户端负载均衡 1.1 依赖 1.2 配置信息 # feign默认加载了ribbon负载均衡,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的,如果改为随机,指定服 ...
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate ---心得【无熔断器】
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 了解了 eureka 服务注册与发现 的3大角色 ,会使用RestTem ...
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 当超大并发量并发访问一个服务接口时,服务器会崩溃 ,不仅导致这个接口无法 ...
- SpringCloud系列之客户端负载均衡Netflix Ribbon
1. 什么是负载均衡? 负载均衡是一种基础的网络服务,它的核心原理是按照指定的负载均衡算法,将请求分配到后端服务集群上,从而为系统提供并行处理和高可用的能力.提到负载均衡,你可能想到nginx.对于负 ...
- ③SpringCloud 实战:使用 Ribbon 客户端负载均衡
这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- 笔记:Spring Cloud Ribbon 客户端负载均衡
Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,基于 Netflix Ribbon 实现,通过Spring Cloud 的封装,可以让我们轻松的将面向服 ...
- SpringCloud Netflix Ribbon(负载均衡)
⒈Ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具. Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负 ...
随机推荐
- PP篇7 生产替代料齐套后处理
扫描可关注本人技术分享公众号,与您一起学习新知! 对于计划订单和生产订单, 当存在替代料的时候,完成齐套性检查后,按照可齐套量进行拆单,并删除不能齐套的替代料(有个删除规则).不能齐套就按照优先级最高 ...
- webpack 安装vue(两种代码模式compiler 和runtime)
使用webpack安装vue,import之后,运营项目报错,如下: [Vue warn]: You are using the runtime-only build of Vue where the ...
- web端自动化——自动化测试准备工作
准备工作# 在开始自己项目的自动化测试之前,我们最好已经完成了下面的准备工作: 1.熟悉待测系统 对项目的待测系统整体功能和业务逻辑有比较清晰的认识. 2.编写系统的自动化测试用例大纲和自动化测试用例 ...
- Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...
- 使用 RedisDesktopManager 连接redis所需步骤
服务器开放了6379端口 redis默认配置是只允许本地连接,我们需要修改redis配置文件 配置文件找到 bind 127.0.0.1 这一行注释掉 在找到 protected-mode yes 修 ...
- 使用Lombok总结
Lombok学习总结 Project Lombok is a java library that automatically plugs into your editor and build tool ...
- STM32之中断函数
本文做中断函数的索引,帮助我们找到中断函数名.中断函数参数以及中断服务函数他们的来源,以便我们编程. 1)如果一个工程只有一个中断,则我们可以进行两个步骤就可以了: 使能中断通道 编写中断服务函数 2 ...
- Python列表生成式测试
print('*'*50) list1 = list(range(1,6)) print(list1) del(list1) #range(1,20) 按顺序生成列表 list1 = [] for x ...
- DjangoRestful 递归嵌套序列化器实现
**** 由于博客园不支持markdown语法,所以推荐以下链接阅读: 原创 https://blog.csdn.net/weixin_42495873/article/details/8943354 ...
- 史上最全最新Java面试题合集一(附答案)
下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征 ...