springcloud理解及使用

文章介绍了SpringCloud中Feign和Ribbon的使用,Feign作为HTTP请求的轻量级框架,实现了接口调用的简化,而Ribbon则是实现客户端负载均衡的工具。文中详细阐述了微服务之间的服务发现和负载均衡过程,包括Feign的客户端接口定义、Ribbon的负载均衡策略,并提到了Hystrix熔断器在服务降级中的应用。此外,还涵盖了配置日志级别等相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

SpringCloud总架构图

一、简介

  1.  负载均衡的概念
  2.  Feign概念

二、入门案例

  1. 导入依赖
  2. Feign的客户端
  3. 调用Feign
  4. 开启Feign功能
  5. 启动测试
  6. Feign实现原理简单分析

三、负载均衡(Ribbon)

四、熔断器支持

五、请求压缩和响应压缩

六、配置日志级别


SpringCloud 架构图

        请添加图片描述

 Springcloud 常见的集成方式是使用Feign + Ribbon 来完成服务间远程调用及负载均衡:

在这里插入图片描述

 1.微服务启动时,会向服务注册中心商报四针实例信息,这里ServiceB包含多个实例。每个实例包括:IP地址、端口信息等配置信息

2.微服务会定期从Nacos获取服务实例列表

3.当ServiceA调用ServiceB时,Ribbon组件从本地服务实例列表中查找ServiceB的实例,如获取了多个实例如:Instance1、Instance2.这时Ribbon会通过用户所配置的负载均衡政策从中选择一个实例

4.最终,Feign组件会通过Ribbon选取的实例发送http请求

采用 Feign + Ribbon 的整合方式,是由Feign完成远程调用的整个流程、而Feign集成了Ribbon,Feign使用Ribbon,来完成调用实例的负载均衡


一、简介

1.负载均衡的概念

在SpringCloud服务协议流程中,ServiceA通过负载均衡调用ServiceB,接下来了解下负载均衡:

负载均衡就是将用户请求通过一定的策略,分摊在多个服务实例执行,它是系统处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,它分为

服务端负载均衡和客户端负载均衡

服务端负载均衡:

在这里插入图片描述

客户端负载均衡: 

在这里插入图片描述


2.Feign概念

Feign英文为"伪装、假装"意思,是一个http请求调用的轻量级框架,是以java接口注解的方式调用Http请求,而不用像Java中通过封装Http请求报文的方式直接调用。

Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进行转化成真正的请求,这种请求相对而言比较直观。

Feign被广泛应用在Spring cloud的解决方案中,是学习基于SpringCloud微服务架构不可或缺的重要组件。

 封装了Http调用流程,更符合面向接口化的编程习惯


二、入门案例

使用Feign替代RestTemplate发送Rest请求,使之更符合面向接口化的编程习惯。

实现步骤:

1.导入feign依赖步骤

2.编写Feign客户端接口

3.消费者启动引导类开启Feign功能注解

4.访问接口测试

实现过程:

1.导入依赖

2.Figen的客户端

在项目启动类添加注解@EnableFeignClients,启用feign客户端

在SomsFeign中编写客户端接口端 SomsFeign,即接口将是被调用

esc-finder为其他模块服务名称,contract为其他模块控制层父路径,getServiceProduct为具体接口信息、参数等等

Feign会通过动态代理,帮我们生成实现类。

注解@FeignClient声明Feign的客户端,指明服务名称

接口定义的方法,采用SpringMVC的注解。Feign会根据注解帮我们生成URL地址

3.调用Feign

 4.Feign实现原理简单分析

在这里插入图片描述

Feign帮我们做了哪些事儿:

在 声明Feign客户端 之后,Feign会根据@FeignClient注解使用java的动态代理技术生成代理类,在这里我们指定@FeignClient value为serviceB,则说明这个类的远程目标为spring cloud的服务名称为serviceB的微服务。

serviceB的具体访问地址,Feign会交由ribbon获取,若该服务有多个实例地址,ribbon会采用指定的负载均衡策略选取实例。

Feign兼容spring的web注解(如:@GetMapping),它会分析声明Feign客户端方法中的Spring注解,得出Http请求method、参数信息以及返回信息结构。

当业务调用Feign客户端方法时,会调用代理类,根据以上分析结果,由代理类完成实际的参数封装、远程http请求,返回结果封装等操作。

 三、负载均衡

 

Ribbon核心组件IRule是负载均衡策略接口,它有如下实现,大家仅做了解:

RoundRobinRule(默认):轮询,即按一定的顺序轮换获取实例的地址。

RandomRule:随机,即以随机的方式获取实例的地址。

AvailabilityFilteringRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,以及并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;

WeightedResponseTimeRule: 根据平均响应时间计算所有服务的权重,响应时间越快,服务权重越大,被选中的机率越高; 刚启动时,如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够时,会切换到WeightedResponseTimeRule

RetryRule: 先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务;

BestAvailableRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;

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

可通过在配置文件中修改默认的负载均衡策略:

account‐service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

account-service 是调用的服务的名称,后面的组成部分是固定的

四、熔断器支持

Feign本身也集成Hystrix熔断器,starter内查看

服务降级方法实现步骤:

1.在配置文件application.yml中开启feign熔断器支持

2.编写FalBack处理类,实现FeignClient客户端

3.在@FeignClient注解中,指定FallBack处理类

4,测试服务降级效果

实现过程:

1.配置

 2.定义一个类ConsumerServiceImpl,实现刚才编写的ConsumerService,作为FallBack的处理类

 

3. 在@FeignClient注解中,指定FallBack处理类

 

 4.测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值