ribbo:是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上。

实际运用案例(基于springcloud入门案例):

一、新建Module:springcloud-consumer-ribbon

  1:添加依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

<!-- eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

</dependencies>

  2:修改配置文件(在src/main/resources下创建application.yml文件):

    ①配置端口号:

       server:

        port: 6001

    ②配置注册中心eureka:

       eureka:
        client:
          service-url:
            defaultZone: http://localhost:7001/eureka
        instance:
          instance-id: consumer6001
        prefer-ip-address: true
       spring:
         application:
          name: consumer1

  3:启动类(App): 

      @SpringBootApplication
      @EnableEurekaClient
      @EnableDiscoveryClient
      @RibbonClients
      @Configuration
      public class App {
        public static void main(String[] args) {
          SpringApplication.run(App.class, args);
        }
      }

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

  3、控制器(UserController):

    @Autowired

    private RestTemplate restTemplate;

    @RequestMapping("/hi")
    public Map<String,Object> hello(){
      return restTemplate.getForObject("http://provider-one/hello", Map.class);
    }

      provider-one:是你提供者配置文件中spring.application.name的值

      hello:是你提供者的提供的方法名字。

提供的负载均衡算法:

RoundRobinRule(轮询算法):对所有服务器轮流访问
RandomRule(随机算法) :随机选择服务器
RetryRule():先按照RoundRobinRule的策略获取服务,如果获取失败则在制定时间内进行重试,获取可用的服务。
AvailabilityFilteringRule():会先过滤由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
WeightedResponseTimeRule():根据平均响应的时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够会切换到WeightedResponseTimeRule
BestAviableRule():会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
ZoneAvoidanceRule():默认规则,符合判断server所在区域的性能和server的可用性选择服务器

修改负载均衡算法(2种):

  添加一个方法:

IRule loadBalanceRule(){

  return new RandomRule();

}

  修改配置文件:

MICRO-SERVICE:服务名字

  ribbon:

    NFLoadBanlanceRuleClassName:

实现负载均衡:

启动多个提供者(端口号不一致)

最新文章

  1. Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题
  2. Yocto开发笔记之《驱动调试-华为3G模块》(QQ交流群:519230208)
  3. CISCO系列交换机如何清空配置
  4. JMeter正则表达式-学习(3)
  5. 【腾讯云】腾讯云服务器搭建ftp服务器
  6. C# Like参数化 小记
  7. Ffmpeg 定位文件(seek file)
  8. 浅谈页面无刷新技术ajax
  9. android 卸载程序、清除数据、停止服务用法
  10. (转)Collections类方法详解
  11. win10 uwp DataContext
  12. PHP开发者必须了解的9个魔术方法
  13. SSH2三大框架SQL查询
  14. 在Github上为项目添加多个用户
  15. 面试题之(vue生命周期)
  16. python---顺序查找,二分查找
  17. css实现圆形头像
  18. SQLAlchemy Table(表)类方式 - Table类和Column类
  19. CCF CSP 201703-4 地铁修建
  20. Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version)【模拟】

热门文章

  1. Docker如何使用nginx搭建tomcat集群
  2. windows系统桌面美化
  3. js读取本地json/txt/xml存在跨越问题,可以用jsonp 读取本地json文件
  4. IntelliJ IDEA Debug模式启动项目
  5. 【快学springboot】11.整合redis实现session共享
  6. android studio升级之后项目报错Could not find com.android.tools.build:aapt2:3.2.1-4818971
  7. C 随机数产生
  8. centos7-django(python3)环境搭建
  9. Hadoop入门概念
  10. Java 推荐读物与源代码阅读