1. 什么是负载均衡?

  负载均衡,就是分发请求流量到不同的服务器。

  负载均衡一般分为两种

  1. 服务器端负载均衡(nginx)

  2. 客户端负载均衡(Ribbon)

  

2. 服务提供者(spring-cloud-provider)

  实体类User:

package com.wangx.cloud.model;import java.util.Date;
public class User { private Integer id; private String name; private Date date; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", date=" + date + '}'; } }

  Controller接口:

package com.wangx.cloud.controller;import com.wangx.cloud.model.User;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @RestController @RequestMapping("/api/user") public class UserController { @RequestMapping(value = "/{id}", method = RequestMethod.GET) public User view(@PathVariable int id) { User user = new User(); user.setId(id); user.setName("小张"); user.setDate(new Date()); System.out.println(user); return user; } }

3. 服务消费者(spring-cloud-consumer)

  

package com.wangx.cloud.controller;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.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping(value = "/user", method = RequestMethod.POST) public class UserController { private static final String URL = "http://localhost:7777/api/user/{id}"; @Autowired private RestTemplate restTemplate; @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String get(@PathVariable(value = "id") int id) { return restTemplate.getForObject(URL, String.class, id); } }

分别查看两个服务是否能正常调用。

4. 如何通过Ribbon进行调用

  1. 在创建RestTemplate bean的方法上添加注解@LoadBalanced

  

  @Bean@LoadBalanced //默认的负载策略是轮询算法public RestTemplate restTemplate() {return new RestTemplate(); }

  2. 修改调用的URL为URL=http://spring-cloud-provider/api/user/{id}

  注意:控制台的应用名为大写,我们统一为小写,更不能大小写都存在

5. 如何实现负载均衡

  启动多个提供者,进行测试

  为了区分,可以修改实体类User的name属性,

  注意:修改应用的时候,端口也要修改

6. 结论

  1. Ribbon通过@LoadBalanced进行负载均衡

  2.  默认的负载策略是轮询算法

原文 SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用

转载于:https://www.cnblogs.com/xiaoshen666/p/10844165.html

SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用相关推荐

  1. Spring Cloud学习笔记—网关Spring Cloud Gateway官网教程实操练习

    Spring Cloud学习笔记-网关Spring Cloud Gateway官网教程实操练习 1.Spring Cloud Gateway介绍 2.在Spring Tool Suite4或者IDEA ...

  2. 微服务(三) 【手摸手带你搭建Spring Cloud】 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡?ribbon负载均衡有几种策略?Ribbon是什么?

    在上一章,我介绍了springcloud的eureka搭建.我们做了服务注册.最后我们还介绍了一些续约,失效剔除等参数配置.已经不需要再通过手动输入ip去访问服务,而是通过中心只需要通过服务名就可以获 ...

  3. Spring Cloud Gateway之负载均衡

    ​ 本人最近在学习Spring Cloud Gateway但是发现网上的相关文章都没有介绍其如何使用负载均衡策略,那么本篇文章就给大家带来如何使用Spring Cloud Gateway负载均衡策略. ...

  4. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

  5. Kali学习笔记15:防火墙识别、负载均衡识别、WAF识别

    防火墙简单的识别方式: 如图: 可以简单明了看出:发送SYN不回应,发送ACK回RST可以说明开启过滤等等 基于这个原理,我们可以写一个脚本来对防火墙来探测和识别: #!/usr/bin/python ...

  6. 【微服务~原始真解】Spring Cloud —— 什么是负载均衡?

  7. 网关 Spring Cloud Gateway 实战负载均衡(Spring Cloud Loadbalancer)

  8. SpringCloud学习笔记(1)- Spring Cloud Netflix

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Netflix 单体应用存在的问题 Spring Cloud Eureka Eureka Server代码实现 Eureka ...

  9. SpringCloud学习笔记3:Spring Cloud Netflix 组件(五大神兽)

    一.Spring Cloud Netflix有哪些组件? eureka (提供服务注册与发现功能) ribbon(提供负载均衡功能) Feign(整合了ribbon和Hystrix,具有负载均衡和熔断 ...

最新文章

  1. adnroid 打包问题 :compileReleaseJavaWithJavac
  2. 常考的 21 条 Linux 命令
  3. 文件上传下载-准备上传页面
  4. poj 1208 Web Navigation(堆栈操作)
  5. tkinter中text属性_python tkinter基本属性详解
  6. while循环random结合_Python程序控制结构 | 循环结构
  7. C++虚函数及虚函数表解析
  8. PyCharm 专题
  9. 如何使得窗口最大化?
  10. Android自定义View【实战教程】5⃣️---Canvas详解及代码绘制安卓机器人
  11. redis与mysql一致性方案解析
  12. python手册中文版-python学习手册下载|
  13. pmp 第六版 模拟卷5错题整理
  14. matlab代码实现四阶龙格库塔求解微分方程
  15. win10引导安卓x86_手把手教你在电脑上安装安卓x86版+win10的双系统(只能在能用微软电脑系统的平板上安装)...
  16. 《古代汉语》王力笔记整理版
  17. 【Excel2019(十七):数学函数】【Round函数+Roundup函数+Rounddown函数+Int函数+Mod函数】
  18. 文本对比,文本差异并排对比显示实现
  19. Python使用PyAudio制作录音工具
  20. arcmap制作地闪密度专题图

热门文章

  1. LeetCode:位运算实现加法
  2. 关于JS中的 NEW 和VAR
  3. Linux基础练习题(二)
  4. 一周学会HTML----Day03常用标签(下)
  5. 开发者最容易犯的13个JavaScript错误
  6. android网络重试机制,okhttp源码解析(四):重试机制
  7. 打印容器_3D打印:增材点阵结构在压力容器优化设计中的应用
  8. timespan怎么比较大小_钻石吊坠回收怎么选择大小?
  9. MATLAB double、str、cell间的类型转换
  10. flink sql设置并行度_《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍