springcloud配置负载均衡 及方式_Springcloud-Ribbon负载均衡NODO_九尾旅人
简介
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。所以,对Spring Cloud Ribbon的理解和使用,对于我们使用Spring Cloud来构建微服务非常重要。
客户端负载均衡
负载均衡的架构图:

而客户端负载均衡和服务端负载均衡最大的不同点在于上面所提到服务清单所存储的位置。在客户端负载均衡中,所有客户端节点都维护着自己要访问的服务端清单,而这些服务端端清单来自于服务注册中心,比如上一章我们介绍的Eureka服务端。同服务端负载均衡的架构类似,在客户端负载均衡中也需要心跳去维护服务端清单的健康性,默认会创建针对各个服务治理框架的Ribbon自动化整合配置,比如Eureka中的org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration,Consul中的org.springframework.cloud.consul.discovery.RibbonConsulAutoConfiguration。在实际使用的时候,我们可以通过查看这两个类的实现,以找到它们的配置详情来帮助我们更好地使用它
。
通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:
??服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。
??服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。
这样,我们就可以将服务提供者的高可用以及服务消费者的负载均衡调用一起实现了。
源码类
CachingSpringLoadBalancerFactory
DefaultFeignLoadBalancedConfiguration
FeignLoadBalancer
FeignRetryPolicy
FeignRibbonClientAutoConfiguration
HttpClientFeignLoadBalancedConfiguration
LoadBalancerFeignClient
OkHttpFeignLoadBalancedConfiguration
RetryableFeignLoadBalancer
RibbonResponseStatusCodeException
参见:https://www.jianshu.com/p/1bd66db5dc46
CSDN-专业IT技术社区-登录?blog.csdn.net 深入理解 Spring Cloud 核心组件与底层原理?mp.weixin.qq.com
相关文章
- docker安装sonarqube_OfficerGoodbody
- centos7升级gitlab_nothing in the world
- mysql与oracle的区别_快乐江小鱼
- oracle数据库导入导出_吉松松_oracle导出数据库
- MySQL CAST函数_假女吖?
- MyBatis中数组套数组的格式_小蚂蚁hjk
- oracle数据库id字段自增长_追寻梦想的蜗牛_oracle自增id
- 学术工具之学科信息门户大全_魅色
- 什么是微服务?_十八岁讨厌编程
- DD-1/50 12.5-50mA【接地继电器】_上海约瑟电器有限公司 综合运营
- 虹科案例 | 解决ASRS系统的痛点问题居然这么简单?(下)_虹科?传感器事业部
- 【PostgreSQL】PG左模糊 右模糊匹配查询,如何走btree索引_锥栗_右模糊sql
- 【菜菜的CV进阶之路 - 深度学习环境搭建】常用软件安装_凤?尘
- PostgreSQL 聚合、分组、排序_通天代._postgresql 分组
- 分布式数据库NoSQL(五)??MongoDB 之滴滴、摩拜都在用的索引_坞吾5雾_mongodb 之滴滴、摩拜都在用的索引
- PostgreSQL 并发控制 -- 锁体系(spinlock,lwlock,regular lock)实现原理_z_stand_postgresql 并发 枷锁