SpringCloud学习笔记(7)----Spring Cloud Netflix之负载均衡-Ribbon的深入理解

1. 注解@LoadBalanced
作用:识别应用名称,并进行负载均衡。
2. 入口类:LoadBalancerAutoConfiguration

说明:类头上的注解可以知道Ribbon 实现的负载均衡自动化配置需要满足两个条件
1、 RestTemplate 类必须存在于当前工程的环境中
2、 在Spring 的Bean工程中有必须有LoadBalancerClient 的实现Bean
3. LoadBalancerClient 类


说明:从接口中,可以通过定义的方法了解到负载均衡器具备下面几个功能
1. 根据服务 ID ,从负载均衡器里面挑选一个服务实例
2. 使用从负载均衡器中挑选出的服务实例来执行指定的内容 。
3. 为系统构建一个合适的“host:port” 形式的URI。
4. LoadBalancerInterceptor 类


说明 :当一个被@LoadBalanced注解修饰的 RestTemplate对象向外发起HTTP请求时,会被 LoadBalancerInterceptor类的 intercept函数所拦截,这个时候就会使用负载均衡器进行调执执行。

说明 :
1、 利用IloadBalancer接口 ,调用其 调用其 chooseServer("default")方法获取一个Server。
2、 包装一个 RibbonServer对象 ,之后执行 execute方法
RibbonClientConfiguration类

这里是IloadBalancer的实现类
ZoneAwareLoadBalancer类

说明 :
1、 当 Zone个数大于 个数大于 1时,才会向下执行 时,才会向下执行
2、 当小于 1时,使用父类的 chooseServer方法 获取 Server
3、 当大于 1是,随机选择一个 Zone使用 zoneLoadBalancer的chooseServer方法 获取 Server
4、 最终都是调用 BaseLoadBalancer类的 chooseServer方法
BaseLoadBalancer类

说明 :
1、 这里使用 rule的 choose方法进行调用 方法进行调用 ,返回 server
2、 rule的默认是使用 RoundRobinRule
RibbonLoadBalancerClient类

说明 :apply使用的是 LoadBalancerRequestFactory类里面的方法 类里面的方法 ,从 LoadBalancerInterceptor类可 以知道 。RibbonStatsRecorder是对服务的请求进行跟踪记录

说明:封装了 ServiceRequestWrapper,重写了getURI函数,重写后的 getURI会通过调用 LoadBalancerClient接口的 reconstructURI函数来重新构建一个 函数来重新构建一个 URI进行访问


SpringCloud学习笔记(7)----Spring Cloud Netflix之负载均衡-Ribbon的深入理解的更多相关文章
- SpringCloud学习笔记(8)----Spring Cloud Netflix之负载均衡-Ribbon的负载均衡的策略
一. 内置 负载均衡策略的介绍的 IRule的实现类 2. 通过代码实现负载均衡 在第六节Riddom的使用的工程中,随机策略配置类 package com.wangx.cloud.springclo ...
- SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用
1. 什么是负责均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...
- 三、Spring Cloud之软负载均衡 Ribbon
前言 上一节我们已经学习了Eureka 注册中心,其实我们也使用到了Ribbon ,只是当时我们没有细讲,所以我们现在一起来学习一下Ribbon. 什么是Ribbon 之前接触到的负载均衡都是硬负载均 ...
- spring cloud 之 客户端负载均衡 Ribbon
一.负载均衡 负载均衡(Load Balance): 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性.其意 ...
- springCloud学习-消息总线(Spring Cloud Bus)
1.简介 Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现 ...
- Spring-Cloud-Ribbon学习笔记(二):自定义负载均衡规则
Ribbon自定义负载均衡策略有两种方式,一是JavaConfig,一是通过配置文件(yml或properties文件). 需求 假设我有包含A和B服务在内的多个微服务,它们均注册在一个Eureka上 ...
- 【Spring Cloud】客户端负载均衡组件——Ribbon(三)
一.负载均衡 负载均衡技术是提高系统可用性.缓解网络压力和处理能力扩容的重要手段之一. 负载均衡可以分为服务器负载均衡和客户端负载均衡,服务器负载均衡由服务器实现,客户端只需正常访问:客户端负载均衡技 ...
- API网关spring cloud gateway和负载均衡框架ribbon实战
通常我们如果有一个服务,会部署到多台服务器上,这些微服务如果都暴露给客户,是非常难以管理的,我们系统需要有一个唯一的出口,API网关是一个服务,是系统的唯一出口.API网关封装了系统内部的微服务,为客 ...
- Spring Cloud中的负载均衡策略
在上篇博客(Spring Cloud中负载均衡器概览)中,我们大致的了解了一下Spring Cloud中有哪些负载均衡器,但是对于负载均衡策略我们并没有去详细了解,我们只是知道在BaseLoadBal ...
随机推荐
- 函数与装饰器Python学习(三)
1.1 文件处理 1.1.1 打开文件过程 在Python中,打开文件,得到文件句柄并赋值给一个变量,默认打开模式就为r f=open(r'a.txt','w',encoding='utf-8') p ...
- 微信小程序 input使用letter-spacing失效问题
根据ui设计稿, 本来思路是一个input搞定,下面的线使用背景图 background:url('/images/line.png')no-repeat bottom center; 然后使用let ...
- firstChild与firstElementChild
相同点: 都是获取父元素下的第一个节点对象 不同点: firstChild: IE6.7.8 第一个元素节点; 非IE6.7.8:返回第一个元素节点或文本节点 firstElementChild: I ...
- depth peeling实现半透明
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aH
- NYOJ 71 独木舟上的旅行【贪心】
解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...
- Constants and Variables
1.定义 Constants :程序编译的时候就已经存在且在程序生命周期内不会改变的值. Variables:变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值.每个变量都有一 ...
- spring的JdbcTemplate
一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象. 第一种方式:我们可以在自己定 ...
- Web API Filter
在Web Api中,有三种Filter Filter类型 实现的接口 描述 Authorization IAuthorizationFilter 最先运行的Filter,被用作请求权限校验 Actio ...
- 《Exception》第八次团队作业:Alpha冲刺(第三天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增 ...
- 【codeforces 190C】STL
[题目链接]:http://codeforces.com/problemset/problem/190/C [题意] 让你根据去掉标点符号的; pair 以及 int这两种类型; 确定出一种类型; 使 ...