文章目录 一、前言 二、@LoadBalanced注解原理 1、找找@LoadBalanced注解在哪 1)@LoadBalanced流程图总述 2)LoadBalancerAutoConfiguration自动装配类 1>RestTemplateCustomizer从哪里来的? 2>LoadBalancerInterceptor拦截器 2、RestTemplate执行请求时的入口 1)LoadBalancerClient何时注入到Spring容器 2)LoadBalancerInt...
一、原理 以集群消费为例,集群消息在同一个消费组中只能有一个消费者可以消费到这条消息;假如最开始我们有一个叫TopicA的主体,TopicA中有8个MessageQueue;有个消费组ConsumerGroupA;在最开始的时候我们只启动一个consumer1消费者实例,即consumer1这一个消费实例将消费这8个queue,如下图: 然后我们在启动一个consumer2消费者实例,其会向Broker注册;这时broker发现ConsumerGroupA中新增了一个消费者实例,其会通知consumer1:嗨,哥们,你们这个消费组的实例发生了变化,你重新负载均衡一下吧。 这时consum...
一、Feign概述 Feign是一个声明式的客户端负载均衡器;采用的是基于接口的注解;整合了ribbon,具有负载均衡的能力;整合了Hystrix,具有熔断的能力; 1、为什么会使用Feign代替Ribbon 使用RestTemplate+ribbon的方式来进行服务间的调用,会导致我们每次去调用其他服务的一个接口,都要单独写一些代码。 而Feign是声明式调用,可以让我们不用写代码,直接用一些接口和注解就可以完成对其他服务的调用。 2、Feign和OpenFeign的区别? 依赖不同:一个是spring-cloud-starter-feign,一个是spring-cloud-start...
文章目录 一、前言 二、WeightedResponseTimeRule 1、计算权重? 1)如何更新权重? 2)如何计算权重? 3)例证权重的计算 2、权重的使用 1)权重区间问题? 一、前言 前置Ribbon相关文章: 【云原生&微服务一】SpringCloud之Ribbon实现负载均衡详细案例(集成Eureka、Ribbon) 【云原生&微服务二】SpringCloud之Ribbon自定义负载均衡策略(含Ribbon核心API) 【云原生&微服务三】Spr...
文章目录 一、前言 二、调试程序信息 三、Gateway对请求做负载均衡分析 请求负载均衡<-ReactiveLoadBalancerClientFilter 总结 一、前言 至此微服务网关系列文章已出: 【云原生&微服务>SCG网关篇一】为什么要有网关、生产环境如何选择网关 云原生&微服务>SCG网关篇二】生产上那些灰度发布方式 【云原生&微服务>SCG网关篇三】SpringCloudGateway是什么、详细使用案例 云原生&微服务>SCG网关篇四】SpringClo...
文章目录 一、前置知识 二、Ribbon核心API 三、自定义负载均衡策略IRule 1、编写IRule实现类 2、编写Ribbon配置类 3、应用到全部服务上(Ribbon全局配置) 1)Spring的自动扫描 2)@RibbonClients注解 3、应用到指定服务上(Ribbon局部配置) 1)代码配置-@RibbonClient 2)属性配置-application.yml 3)两种方式对比: 4)细粒度配置-最佳实践: 4、使用浏览器进行调用服务消费者...
一、负载均衡概述 在分布式或微服务架构中,服务的提供者往往有多个实例会注册到服务注册中心中,服务消费者需要使用服务时,需要决定使用哪个服务提供者,这正是负载均衡的体现。负载均衡也可以理解为:将用户的请求平摊分配到每个服务器上,尽可能的压榨每台服务器的带宽、性能。 负载均衡的方式有两种: 服务端负载均衡 像以前的老架构,通过nginx对请求做负载均衡,然后下发到指定的tomcat。 客户端负载均衡 client获取到所有的service实例,然后做负载均衡规则。例如:Ribbon、Feign 本文我们针对SpringCloud如何集成Ribbon实现负载均衡做一个讨论。 注:(...
文章目录 一、前言 二、轮询算法-->RoundRobinRule 三、重试算法-->RetryRule 一、前言 前置Ribbon相关文章: 【云原生&微服务一】SpringCloud之Ribbon实现负载均衡详细案例(集成Eureka、Ribbon) 【云原生&微服务二】SpringCloud之Ribbon自定义负载均衡策略(含Ribbon核心API) 【云原生&微服务三】SpringCloud之Ribbon是这样实现负载均衡的(源码剖析@LoadBalanced原理) 【云原生&微服...
文章目录 一、前言 二、Ribbon和Eureka 1、Ribbon如何与eureka整合,通过eurekaclient获取到对应的注册表? 1)为什么是DynamicServerListLoadBalancer的restOfInit()方法? 2)DynamicServerListLoadBalancerrestOfInit() 0>初始化服务实例列表流程图 1>初始化服务实例列表 ServerList从哪来的? 2、动态更新服务实例列表 1)流程图 2)流程解析 ...
文章目录 一、前言 二、Ribbon内置了哪些负载均衡算法? 三、随机算法-->RandomRule 1、ThreadLocalRandom详解 1)为什么不用Random? 2)ThreadLocalRandom的诞生? 3)ThreadLocalRandom的错误使用场景 1>代码示例: 2>运行结果: 3>运行结果分析: 4)ThreadLocalRandom的正确使用方式 5)ThreadLocalRandom源码解析 1>nextI...
文章目录 一、前言 二、BestAvailableRule 1、负载规则 2、如何判断服务实例被tripped? 3、如何获取服务实例的并发数? 4、实例并发数的维护: 1)增加实例的并发数 2)减少实例的并发数 三、后续文章 一、前言 前置Ribbon相关文章: 【云原生&微服务一】SpringCloud之Ribbon实现负载均衡详细案例(集成Eureka、Ribbon) 【云原生&微服务二】SpringCloud之Ribbon自定义负载均衡策略(含Ribbon核心API...