1、构建microservice-consumer-movie-ribbon项目,在pom.xml中引入ribbon依赖

  在引入Eureka依赖的时候,默认里面含有ribbon依赖

2、添加@LoadBalanced注解,实现负载均衡

  ribbon负载均衡策略默认为轮循方式

@SpringBootApplication
@EnableEurekaClientpublic class ConsumeMovieRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumeMovieRibbonApplication.class, args);
}
@Bean
@LoadBalanced //客户端负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
}

3、自定义负载均衡策略

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
/**
* @Configuration注解不能放在@SpringBootApplication所在的包下
* 如果放在此包下,默认全部负载均衡使用此策略
* */
@Configuration
@ExcludeFromComponentScan
public class TestConfiguration { /**
* 设置负载均衡的规则为随机
* */
@Bean
public IRule ribbonRule() {
return new RandomRule();
}
}

4、指定对那个客户端使用自定义负载均衡

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class)
public class ConsumeMovieRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumeMovieRibbonApplication.class, args);
}
@Bean
@LoadBalanced //客户端负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
}

5、如果@Configuration注解放在@SpringBootApplication所在的包下

  a、在@Configuration包下创建ExcludeFromComponentScan注解

package com.wyl.microservicesimpleconsumemovie;
public @interface ExcludeFromComponentScan {
}

  b、在入口类中排除此注解不扫描

package com.wyl.microservicesimpleconsumemovie;

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class)
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})
public class ConsumeMovieRibbonApplication {
  ...
}

  c、在TestConfiguration中使用此注解

/**
* @Configuration注解不能放在@SpringBootApplication所在的包及其子包下
* */
@Configuration
@ExcludeFromComponentScan
public class TestConfiguration {
/**
* 设置负载均衡的规则为随机
* */
@Bean
public IRule ribbonRule() {
return new RandomRule();
}
}

6、开启多个microservice-provider-user微服务,测试结果

负载均衡的结果:

111:microservice-provider-user:192.168.1.39:7900
222:microservice-provider-user2:192.168.1.39:7903
111:microservice-provider-user:192.168.1.39:7900
222:microservice-provider-user2:192.168.1.39:7902
111:microservice-provider-user:192.168.1.39:7901
222:microservice-provider-user2:192.168.1.39:7903
111:microservice-provider-user:192.168.1.39:7900
222:microservice-provider-user2:192.168.1.39:7902
111:microservice-provider-user:192.168.1.39:7901
222:microservice-provider-user2:192.168.1.39:7903
111:microservice-provider-user:192.168.1.39:7901
222:microservice-provider-user2:192.168.1.39:7902
111:microservice-provider-user:192.168.1.39:7900
222:microservice-provider-user2:192.168.1.39:7903
111:microservice-provider-user:192.168.1.39:7900
222:microservice-provider-user2:192.168.1.39:7902
microservice-provider-user采用自定义的随机负载均衡,而microservice-provider-user2采用ribbon默认的轮循方式
6、完整代码参见https://i.cnblogs.com/Files.aspx中microservice-spring-cloud-ribbon文件

Spring Cloud Ribbon实现客户端负载均衡的更多相关文章

  1. 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)

    在使用RestTemplate来消费spring boot的Restful服务示例中,我们提到,调用spring boot服务的时候,需要将服务的URL写死或者是写在配置文件中,但这两种方式,无论哪一 ...

  2. 撸一撸Spring Cloud Ribbon的原理-负载均衡策略

    在前两篇<撸一撸Spring Cloud Ribbon的原理>,<撸一撸Spring Cloud Ribbon的原理-负载均衡器>中,整理了Ribbon如何通过负载均衡拦截器植 ...

  3. Ribbon实现客户端负载均衡

    什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...

  4. Spring Cloud入门教程-Ribbon实现客户端负载均衡

    简介 我们继续以之前博客的代码为基础,增加Ribbon组件来提供客户端负载均衡.负载均衡是实现高并发.高性能.可伸缩服务的重要组成部分,它可以把请求分散到一个集群中不同的服务器中,以减轻每个服务器的负 ...

  5. spring cloud学习(三)使用Ribbon实现客户端负载均衡

    使用Ribbon实现客户端的负载均衡 * 个人博客空间 : https://zggdczfr.cn/ * Ribbon Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组 ...

  6. Spring Cloud(十四):Ribbon实现客户端负载均衡及其实现原理介绍

    年后到现在一直很忙,都没什么时间记录东西了,其实之前工作中积累了很多知识点,一直都堆在备忘录里,只是因为近几个月经历了一些事情,没有太多的经历来写了,但是一些重要的东西,我还是希望能坚持记录下来.正好 ...

  7. Spring Cloud 客服端负载均衡 Ribbon

    一.简介   Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署, ...

  8. 2.【Spring Cloud Alibaba】实现负载均衡-Ribbon

    负载均衡的两种方式 如何实现负载均衡 目前已经实现让A总能找到B,如何实现负载均衡 负载均衡的两种方式 服务器端负载均衡 客户端负载均衡 使用Ribbo实现负载均衡 Ribbon是什么 ==Netfl ...

  9. 4.Spring Cloud初相识--------Feign负载均衡

    前言: 在上一节里,我们学习了ribbon的使用. 我们了解到ribbon是一个客户端负载均衡机制. 而我们今天要讲的Feign呢,也是一款客户端负载均衡机制. 或者这样说,Feign封装了ribbo ...

随机推荐

  1. 20160916-3:mysql主从复制

    一.什么是主从复制 将一个数据库节点的数据拷贝到一个或多个数据库节点(主节点—>从节点) 二.主从复制的原理 [简述]:将主节点上的变更操作存储到binlog,从节点建立了到主节点的复制关系后, ...

  2. Redis 单机版本安装

    亲装! 1.linux 系统镜像 redis 版本  使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版) 在安装之前先安装下redis 需要的环境 wget http://do ...

  3. 洛谷 P3393 逃离僵尸岛

    洛谷 这道题目其实是最短路裸题. 首先看到题目,要求的到"被占点"距离不大于S的点,自然想到了以"被占点"为源点,求一遍最短路,处理出"危险点&quo ...

  4. Efficiency in Shell

    最近在写一个shell脚本, 由于该脚本对效率有较高的要求, 所以查阅了一些文章. 感觉这篇文章写得确实不错, 文章中的例子,确实很棒! 所 以我把他们提取出来: @1:实例: 需求:计算1到1000 ...

  5. SDWebImage浅析

    第一部分 SDWebImage库的作用: 通过对UIImageView的类别扩展来实现异步加载替换图片的工作. 主要用到的对象: 1)UIImageView(WebCache)类别,入口封装,实现读取 ...

  6. 极速Node.js:来自LinkedIn的10个性能提升秘籍

    from:http://faylai.iteye.com/blog/1293194 1.避免使用同步的方法 nodejs 是基于单线程.为了让单线程能够处理高并发的请求,我们尽量要避免让线程等待,阻塞 ...

  7. Android:日常学习笔记(8)———探究UI开发(3)

    Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...

  8. iOS UIScrollView 滚动到当前展示的视图居中展示

    需求展示: 测试效果1 first uiscrollView  宽度 为屏幕宽度   滚动步长 为 scroll 宽度的1/3   分析: 这个是最普通版 无法使每一次滚动的结果子视图居中展示, WA ...

  9. C# 学习黑马.Net视频教程,大文件拷贝

    设计器代码: namespace 大文件拷贝 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> ...

  10. flex 实现图片播放 方案一 图片全部预加载放内存

    这种方案,对于web的应用有局限性,在图片量比较多,比较大的时候,就会爆浏览器异常.一般建议轻量级的采用这种方案. <?xml version="1.0" encoding= ...