应用系统定制开发Ribbon的基本使用

一、概述

​ Ribbon是Netflix应用系统定制开发公司提供的一个基于HTTP和TCP应用系统定制开发的客户端负载均衡工具

​ 中自带Ribbon了!

​ Ribbon主要应用系统定制开发有两个功能

  1. 应用系统定制开发简化远程调用

  2. 客户端负载均衡:

    • 负载均衡算法在服务端
    • 由负载均衡器维护服务地址列表

服务端负载均衡:

  • 负载均衡算法在客户端
  • 客户端维护服务地址列表

二、入门案例:

简化远程调用:

步骤:

使用 Ribbon 简化restTemplate调用1. 在声明restTemplate的Bean时候,添加一个注解:@LoadBalanced2. 在使用restTemplate发起请求时,需要定义url时,host:port可以替换为 服务提供方的 应用名称
  • 1
  • 2
  • 3
  1. 在config类中的@Bean上再加一个注解@LoadBalanced

  2. 在调用的时候直接使用服务名

    String url="http://EUREKA-PROVIDE/goods/findOne/"+id;Goods goods = restTemplate.getForObject(url, Goods.class);
    • 1
    • 2
  3. 重启,访问下就能看到效果了!

负载均衡:

在provider中加上几行代码,显示调用的端口号

@Autowiredprivate GoodsService goodsService;@Value("${server.port}")private Integer port;@RequestMapping("/findOne/{id}")public Goods findOne(@PathVariable Integer id){    Goods goods = goodsService.findOne(id);    goods.setTitle(goods.getTitle()+":"+port);//将端口号,设置到了 商品标题上    return goods;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

结果显示8001和8002交替显示,显然是轮询!

Ribbon负载均衡策略:

  • 随机 :RandomRule
  • 轮询 :RoundRobinRule(默认的负载均衡策略)
  • 最小并发:BestAvailableRule(服务A-1,服务A-2,服务A-3,这三个服务中谁最闲一般认为是性能高)
  • 过滤:AvailabilityFilteringRule(坏的服务过滤掉)
  • 响应时间:WeightedResponseTimeRule(发送一个数据包到三个服务中,看谁最先响应,谁快就调用谁)
    • 轮询重试:RetryRule(默认轮询10次,如果节点出现问题,会去找第二个,如果轮询到10次都挂了那就响应失败)
  • 性能可用性:ZoneAvoidanceRule(综合考虑性能和可用性,看谁分数高就用谁)

负载均衡配置:

Ribbon默认的负载均衡策略是轮询,如果机器性能差不多,用轮询比较合适。

设置负载均衡策略:两种方法:

  1. JAVA编码的方式

    • 创建一个配置类

      @Configurationpublic class MyRule {    @Bean    public IRule rule(){        return new RandomRule();    }}
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      注意:这个new RandomRule()可以改成其他IRule接口的实现类

  • 在项目启动类上加上这个注解,指定服务名和规则配置类

    /*    配置Ribbon的负载均衡策略 name    * name:设置 服务提供方的 应用名称    * configuration:设置负载均衡Bean */@RibbonClient(name = "EUREKA-PROVIDE",configuration = MyRule.class)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  1. 配置文件的方式

    在application.yml中指定服务的负载均衡策略:

    # 配置的方式设置Ribbon的负载均衡策略EUREKA-PROVIDER: # 设置的服务提供方的 应用名称  ribbon:    NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 策略类(全路径名)
    • 1
    • 2
    • 3
    • 4

置的服务提供方的 应用名称

ribbon:       NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 策略类(全路径名)
  • 1
  • 2

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发