pring cloud Ribbon 是基于Netfilix Ribbon 实现一套 客户端 负载均衡工具。

简单的说, Ribbon 是 Netflix 发布开源项目。 主要是提供客户端软件负载均衡算法和服务调用。

Ribbon客户端提供一系列完善的配置项如连接超时。 重连等。 简单的来说。

就是在配置文件中加入一个LoadBalanced(简称LB),后面所有的机器ribbon自动会帮我们基于某种规则(轮询 随机连接)进行连接机器

  • 负载均衡

  • 容错能力

  • 异步和响应模型中的多种协议(HTTP,TCP,UDP)支持

  • 缓存和批处理

LB负载均衡

  1. 集中式LB : 服务的消费和提供方之间使用独立的lb设施 (可是硬件, nginx ),由该设施负责把访问的请求通过某种策略转发至服务提供方

  2. 进程内LB: 将Lb逻辑集成到消费方, 消费方从服务注册中心获得由哪些地址可以用,然后自己在从这些地址中选择一个合适的服务器。

Ribbon 就是属于进程内LB, 他是一个类库。 集成与消费方进程。 通过消费方获取服务方的地址。

在实例化RestTemplate时使用@LoadBalanced,服务地址直接可以使用服务名。

负载均衡几种策略:

RoundRobinRule - 轮询

RandomRule - 随机

RetryRule - 先按照轮询 的策略获取服务, 如果获取失败则在指定的时间内进行充实获取可用的服务

WeightedResponseTimeRule - 对轮询的拓展,响应速度越快的实列选择权重越大。 越容易被选择

BestAvailableRule - 会先过滤用于多次访问失败故障处于断路器跳闸的服务。 然后选择 一个并发最小的服务

AvailabilityFilteringRule - 先过滤掉故障实例,在选择并发较小的实例

ZoneAvoidanceRule - 默认规则。 复合判断server所在区域性能和server的可用性选择服务器

自定义一个负载均衡的规则类 并且这个类不能和ComponentScan同包或者子类。

/**
* @Author kalista
* @Description 自定义负载均衡路由规则类
* @Date 2020/8/21 14:20
**/
@Configuration
public class MySelfRule {
@Bean
public IRule myRule(){
return new RandomRule();
}
}

主启动类添加@RibbonClient

@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
@SpringBootApplication
@Slf4j
@EnableEurekaClient
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class, args);
log.info("*************** OrderMain8000 启动成功 **************");
}
}

这样,一个随机负载均衡就实现了,在eureka上注册的服务可以随机调用

最新文章

  1. 正则表达式在iOS中的运用
  2. 微信支付开发(12) 认清微信支付v2和v3
  3. ANSI
  4. Linux C编程--main函数参数解析
  5. STM32移植UCGUI3.90笔记
  6. loadrunner throughput(吞吐量)理解
  7. 使用strut2要注意的问题
  8. G - MPI Maelstrom
  9. centos7 部署ssserver
  10. 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)
  11. 文件系统:ext4,zfs测评结果
  12. 使用requests模块爬虫
  13. 小白的Python之路 day5 logging模块
  14. 删除所有已经停止的容器 docker rm $(docker ps -a -q)
  15. JAVA 8.20 游戏:四子连(Java&C++)
  16. linux查看文件被哪个进程占用?
  17. 初学者在Mysql8.0连接时的几个常见基本问题
  18. LPC1800 and LPC4300 MCUs
  19. 【Linux 进程】之关于父子进程之间的数据共享分析
  20. Leetcode题库——19.删除链表的倒数第 n 个节点【##】

热门文章

  1. shell中算术运算加减
  2. React Navite环境搭建
  3. Appium+RobotFrameWork测试环境搭建
  4. CSS实现开门效果
  5. git 删除本地分支以及远程分支
  6. python 通过win32com操作vcf到outlook中,同时解决乱码问题
  7. maven :Cannot start maven service
  8. Java面向对象编程导论
  9. vue+vant打包,vue+vant-ui小程序,微信支付
  10. docker 安装mongodb