springCloud入门学习(六):使用Ribbon实现负载均衡
在之前,我使用ip+端口来访问服务提供者。但一般来说,在生产环境中,通常一个服务会有多个实例。那么服务消费者应该如何将请求分摊到多个服务提供者呢?
一、Ribbon
Ribbon是Netflix发布的负载均衡其。当我们为Ribbon配置服务提供者的地址列表后,Ribbon就可基于某种负载均衡的算法,自动帮助服务消费者请求。
二、Ribbon与Eureka配合使用
Riboon会自动从Eureka获取服务提供者的服务列表,然后通过负载均衡算法请求其中的一个实例。
三、整合Riboon
1、修改movie项目,由于已经介入了spring-cloud-starter-eureka包,不必再次引入Ribbon的包,Ribbon单独依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2、修改启动类,为RestTemplate添加注解
@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
3、修改controller,之前我们是使用ip+端口的方式进行访问的,这里将 ip+端口 改为我们要调动的微服务的serviceId,即服务提供者的spring.application.name字段,这样,Eureka会自动将虚拟主机名英社称微服务的网络地址。如果我们依然通过 ip+端口号 的方式进行访问,实际上我们只能访问其中的一个实例,并没有做到真正的负载均衡。
@RequestMapping(value = "/movie/findById", method = RequestMethod.GET)
public Map findById(Integer userId) {log.info("/movie/findById被访问,参数:userId=" + userId);/*ResponseEntity<HashMap> forEntity =this.restTemplate.getForEntity(findByUserIdUrl + userId, HashMap.class);*/return this.restTemplate.getForObject("http://user/user/getUserInfo?userId=" + userId, HashMap.class);}
此时启动movie和eureka项目,同时启动多个user项目
注册中心这里引入了两个user实例
此时访问 http://localhost:8020/movie/findById?userId=1,并且多次访问
获取到结果,说明访问成功。
再来看user的控制台:
另一台端口号为8011的服务也出现了同样的打印信息,说明Ribbon均匀的将请求分配到两个实例中,实现了负载均衡
转载于:https://blog.51cto.com/13593129/2398217
springCloud入门学习(六):使用Ribbon实现负载均衡相关推荐
- SpringCloud Hoxton版微服务- Ribbon实现负载均衡
Ribbon实现负载均衡 Ribbon概念 一.Ribbon策略 二.配置使用 1.编写服务提供者 2.编写服务消费者 3.测试负载均衡随机策略 Ribbon概念 Spring Cloud Ribbo ...
- SpringCloud 入门教程(五): Ribbon实现客户端的负载均衡
接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...
- springCloud入门学习(七):通过属性自定义Ribbon配置
很多场景下,可能需要根据自定义的Riboon的配置,例如修改ribbon的负载均衡规则等. 配置前缀是:<clientName>.ribbon. NFLoadBalancerClassNa ...
- Day2:SpringCloud入门学习——传智播客学习笔记【微服务电商】
SpringCloud 0.学习目标 ·了解系统架构的演变 ·了解RPC与Http的区别 ·掌握HttpClient的简单使用 ·知道什么是SpringCloud ·独立搭建Eureka注册中心 ·独 ...
- 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)
跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...
- SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用
什么是SpringCloud 微服务架构 • "微服务"一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到 http://mar ...
- C语言程序设计入门学习六步曲,六步带你入门C语言
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理 ...
- 【微服务架构】SpringCloud使用Ribbon实现负载均衡
说在前面 软负载均衡的实现方式有两种,分别是服务端的负载均衡和客户端的负载均衡 服务端负载均衡:当浏览器向后台发出请求的时候,会首先向反向代理服务器发送请求,反向代理服务器会根据客户端部署的ip:po ...
- springcloud ribbon 配置负载均衡策略以及自定义策略
一.系统内置的策略有以下几种. 这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表.是轮流访问?随机访问?权重?等. Ribbon 的负载均衡策略 策略类 ...
- springcloud ribbon实现负载均衡的时候,提示Request URI does not contain a valid hostname: htt...
qq社区:541122375,群名springClould全家桶 问题描述: org.springframework.web.util.NestedServletException: Request ...
最新文章
- 在某些输入上删除IE10的“清除字段”X按钮?
- 关于for循环与setTimeout的延迟
- 做方差分析需要正态性检验吗_检验工序要做PFMEA吗?检验如何做PFMEA?
- c语言各种变量的优缺点,C语言优缺点
- SpringBoot系列六:SpringBoot整合Tomcat
- 我所想的GIX4的权限
- idea中push到github或gitee过程中的常见错误记录
- videojs暂停时显示大按钮_服务失败时进行故障恢复,Windows 7系统如何打开服务管理程序...
- 44.mysqlbinlog
- 操作系统课程设计报告(文件系统)
- VBA(比较全的api中文帮助文档例如office,excel,outlook,PowerPoint等api文档)
- vue中加载OCX控件(IE浏览器执行)
- 计算机控制液压同步顶升系统,PLC四点多点同步顶升系统,同步液压顶升系统
- android 金山电池医生,金山电池医生3.0(android版).PDF
- mysql创建视图并加注释_在mysql中为视图创建注释
- 关于UML中的Stereotype
- 1.3 guessing game
- python绘制缓和曲线_autocad绘制缓和曲线
- 肝了一个月,整理了一万道2020年最新Java面试题,阿里offer有了
- Eclipse ST-Link设置方法