springCloud中各个主要组件的构成

128 阅读4分钟

1.用于服务注册与发现的使用Consul 还有大名鼎鼎的Alibaba Nacos
2.服务调用和负载均衡使用 LoadBalancer OpenFeign 3.分布式事务 Alibaba Seata 4.服务熔断和降级 Circuit Breaker Alibaba Sentinel 5.服务链路追踪 Micrometer Tracing 6.服务网关 GateWay 7.分布式配置管理 Consul Alibaba Nacos

注意:一旦用微服务的名称去注入consul中进行服务间的调用,那么默认是有负载均衡的,默认服务名称之后有多个微服务的,解决该问题需要修改配置RestTemplateConfig,添加一个注解标签:@LoadBalanced

image.png

分布式系统有cap 分别为,一致性,可用性,分区容错性

Eureka java语言编写,AP 可配支持健康检查,对外暴露的接口http,springCloud已集成

Consul Go CP 支持健康检查,对外暴露接口http/DNS springCloud已集成

Zookeeper java CP 支持健康检查,对外暴露接口 客户端 springCloud已集成

动态及时刷新:首先主启动类上添加@RefreshScope主启动类添加 bootstrap.yml修改下(只是演示,实际别修改)

spring.cloud.consul.config.watch.wait-time 下面配置即为动态刷新时间:

image.png 默认为55秒以上,即1分钟左右会更新。

服务调用负载均衡:loadbalancer 和OpenFeign

loadbalancer本地负载均衡客户端VS Nginx服务端负载均衡区别

Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后又nginx实现转发请求,即负载均衡由服务端实现的。

loadbalancer本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

#====================================================

利用DiscoveryClient获取Consul中的所有服务列表

loadbalancer 默认为轮询算法,还有随机算法

RoundBobinLoadBalancer 轮询算法 通过@LoadBalancerClient注解

RandomLoadBalancer 随机算法

image.png

openFeign 也是负载均衡

何为openFeign,一句话,就是openFeign是一个声明式的Web服务客户端,只需要创建一个Rest接口并在该接口上添加注解@FeignClient即可。OpenFeign基本上就是当前微服务之间调用的事实标准。

openFeign能干嘛? 可插拔的注解支持,包括Feign注解和JAX-RS注解 支持可插拔的http编码器和解码器 支持Sentinel和它的Fallback 支持SpringCloudLoadBalancer的负载均衡 支持http请求和响应的压缩

新建项目步骤: image.png 使用openFeign,主启动类上面要配置@EnableFeignClients表示开启OpenFeign功能并激活。

image.png

image.png

openFeign超时控制 OpenFeign重试机制 OpenFeign默认httpClient修改 OpenFeign请求/响应压缩 OpenFeign日志打印功能

默认OpenFeign客户端等待60秒,但是服务端处理超过规定时间会导致Feign客户端返回报错。为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制,默认60秒太长或者业务时间太短都不好。

yml文件中开启配置: commectTimeout 连接超时时间 readTimeout 请求处理超时时间

默认全局配置 image.png

将default换成cloud-payment-service(指定配置)

image.png

如果全局默认和指定配置同时共存,指定配置的优先级高

OpenFeign重试机制(默认是关闭的)

image.png

开启重试机制

image.png

OpenFeign默认httpClient修改

OPenFeign默认使用的事httpClient 性能不是最强,所以要替换,将HttpURLConnection替换成Apache HttpClient 5。

如何替换:先pom添加maven坐标依赖,再添加yml配置

image.png

image.png

OpenFeign请求/响应压缩

image.png

image.png

响应压缩直接改成yml格式配置即可:

image.png

OpenFeign的日志打印

image.png

image.png

配置:

image.png

image.png

circuitBreaker断路器

服务熔断 服务降级 服务限流 服务预热 接近实时的监控 兜底的处理动作(给出对用户友好的提示信息)

1720598788273.png

Resilience4j轻量级容错框架 断路器有三个普通状态:关闭(CLOSED),开启(OPEN),半开(HALF_OPEN),还有两个特殊状态:禁用(DISABLED),强制开启(FORCED_OPEN)。

image.png

image.png

总结:2024最新SpringCloud学习教程,Consul/Nacos/Feign/Sentinel/Gateway/Seata一网打尽_尚硅谷2024最新springcloud教程-CSDN博客