Ribbon负载均衡调用
pring cloud Ribbon 是基于Netfilix Ribbon 实现一套 客户端 负载均衡工具。
简单的说, Ribbon 是 Netflix 发布开源项目。 主要是提供客户端软件负载均衡算法和服务调用。
Ribbon客户端提供一系列完善的配置项如连接超时。 重连等。 简单的来说。
就是在配置文件中加入一个LoadBalanced(简称LB),后面所有的机器ribbon自动会帮我们基于某种规则(轮询 随机连接)进行连接机器
负载均衡
容错能力
异步和响应模型中的多种协议(HTTP,TCP,UDP)支持
缓存和批处理
LB负载均衡
集中式LB
: 服务的消费和提供方之间使用独立的lb设施 (可是硬件, nginx ),由该设施负责把访问的请求通过某种策略转发至服务提供方进程内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上注册的服务可以随机调用
Ribbon负载均衡调用的更多相关文章
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册的目的是希望所有的服务都统一归属到 Eureka 之中进 行处理,但是现 ...
- Ribbon负载均衡及Feign消费者调用服务
微服务调用Ribbon 简介 前面讲了eureka服务注册与发现,但是结合eureka集群的服务调用没讲. 这里的话 就要用到Ribbon,结合eureka,来实现服务的调用: Ribbon是Netf ...
- SpringCloud之Ribbon负载均衡及Feign消费者调用服务
目的: 微服务调用Ribbon Ribbon负载均衡 Feign简介及应用 微服务调用Ribbon Ribbon简介 1. 负载均衡框架,支持可插拔式的负载均衡规则 2. 支持多种协议,如HTTP.U ...
- 四. Ribbon负载均衡服务调用
1. 概述 1.1 Ribbon是什么 SpringCloud Ribbon是基于Netflix Ribbon实现的一套客户端,是负载均衡的工具. Ribbon是Netflix发布的开源项目,主要功能 ...
- SpringCloud系列——Ribbon 负载均衡
前言 Ribbon是一个客户端负载均衡器,它提供了对HTTP和TCP客户端的行为的大量控制.我们在上篇(猛戳:SpringCloud系列——Feign 服务调用)已经实现了多个服务之间的Feign调用 ...
- Spring Cloud微服务Ribbon负载均衡/Zuul网关使用
客户端负载均衡,当服务节点出现问题时进行调节或是在正常情况下进行 服务调度.所谓的负载均衡,就是当服务提供的数量和调用方对服务进行 取舍的调节问题,在spring cloud中是通过Ribbon来解决 ...
- spring-cloud: eureka之:ribbon负载均衡自定义配置(二)
spring-cloud: eureka之:ribbon负载均衡自定义配置(二) 有默认配置的话基本上就是轮询接口,现在我们改用自定义配置,同时支持:轮询,随机接口读取 准备工作: 1.eureka服 ...
- spring-cloud: eureka之:ribbon负载均衡配置(一)
spring-cloud: eureka之:ribbon负载均衡配置(一) 比如我有: 一个eureka服务:8761 两个user用户服务: 7900/7901端口 一个movie服务:8010 1 ...
- Ribbon负载均衡策略与自定义配置new
Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 hello: ribbon: NFLoadBalancerRuleClassName:com.netflix.l ...
- Ribbon负载均衡策略与自定义配置
Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 hello: ribbon: NFLoadBalancerRuleClassName:com.netflix.l ...
随机推荐
- 手算推导BP神经网络
一.神经元 下图的蓝色区域被称为一个"感知机"(Perceptron), 感知机是对信息进行编码.压缩.集成.融合的计算机智能接口系统. 说白了,就是在输入端输入X1~X7这7个输 ...
- Windows 设置当前路径 临时环境变量 查看、修改、删除与添加
需求 有些程序依赖的Python版本不同,安装了Python2.7和Python3.10(3.x没有向下兼容),需要设置当前路径的 python 版本(指定使用2或3). 也不止Python,类似的情 ...
- CentOS 7 yum安装MongoDB
1.配置MongoDB的yum源 cd /etc/yum.repos.d vim mongodb-org-6.0.repo 2.添加下载配置文件(这里使用阿里云的源),保存退出 [mngodb-org ...
- Software--C#--grammer_Delegate--Event
2018-05-01 10:49:47 委托是一种类型,而事件是一个类或结构的成员,如同字段,属性.必须在类或结构中声明. 引申 - Observe 观察者模式 Publish/Subscribe ...
- Centos7忘记root密码,修改root密码及其他用户密码
具体步骤: 1.重启系统,在开机过程中,快速按下方向键↑和↓.在引导程序页面暂停. 2.选择第一行(背景高亮即为选中),按下键盘上的e,进入编辑模式 3.将光标一直移动到 LANG=en_US.UTF ...
- 记录将Base64字符串转化为图片遇到的问题
今天通过与别人写的api交互,获取到了一个原为图片的base64字符串,在网上找到了相互转换的方法,但是在转化时,报出了"输入不是有效的 Base64 字符串,因为它包含非 base 64 ...
- 组建LAN
推荐 cisco packet tracer 软件,可以画拓扑图,组件局域网等. ---------------------------------- 物联网:世界上很多物体的连接.物联网与现有的互联 ...
- maven项目pom.xml报未找到指定路径文件
解决方法: 错误环境:Tomcat7 + Eclipse + Maven + Spring + SpringMvc + Mybatis 错误描述: 错误解决步骤: 1.找到eclipse的projec ...
- Pytest 固件
一.固件使用背景 在执行测试用例时,我们常常需要在测试用例执行的前后去完成一些额外的操作.例如针对于 Web 测试,在用例执行前需要打开浏览器,完成用户登录等一系列前置操作:在用例执行完成后,要清除浏 ...
- idea 使用JRebel 报1099错误
idea 使用JRebel 报1099错误 以为是端口占用 后面搜了一下 发现是编码问题 windows用户名是中文名 添加以下代码即可 -Dfile.encoding=UTF-8 -Djava.aw ...