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
分布式系统有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 下面配置即为动态刷新时间:
默认为55秒以上,即1分钟左右会更新。
服务调用负载均衡:loadbalancer 和OpenFeign
loadbalancer本地负载均衡客户端VS Nginx服务端负载均衡区别
Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后又nginx实现转发请求,即负载均衡由服务端实现的。
loadbalancer本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。
#====================================================
利用DiscoveryClient获取Consul中的所有服务列表
loadbalancer 默认为轮询算法,还有随机算法
RoundBobinLoadBalancer 轮询算法 通过@LoadBalancerClient注解
RandomLoadBalancer 随机算法
openFeign 也是负载均衡
何为openFeign,一句话,就是openFeign是一个声明式的Web服务客户端,只需要创建一个Rest接口并在该接口上添加注解@FeignClient即可。OpenFeign基本上就是当前微服务之间调用的事实标准。
openFeign能干嘛? 可插拔的注解支持,包括Feign注解和JAX-RS注解 支持可插拔的http编码器和解码器 支持Sentinel和它的Fallback 支持SpringCloudLoadBalancer的负载均衡 支持http请求和响应的压缩
新建项目步骤:
使用openFeign,主启动类上面要配置@EnableFeignClients表示开启OpenFeign功能并激活。
openFeign超时控制 OpenFeign重试机制 OpenFeign默认httpClient修改 OpenFeign请求/响应压缩 OpenFeign日志打印功能
默认OpenFeign客户端等待60秒,但是服务端处理超过规定时间会导致Feign客户端返回报错。为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制,默认60秒太长或者业务时间太短都不好。
yml文件中开启配置: commectTimeout 连接超时时间 readTimeout 请求处理超时时间
默认全局配置
将default换成cloud-payment-service(指定配置)
如果全局默认和指定配置同时共存,指定配置的优先级高
OpenFeign重试机制(默认是关闭的)
开启重试机制
OpenFeign默认httpClient修改
OPenFeign默认使用的事httpClient 性能不是最强,所以要替换,将HttpURLConnection替换成Apache HttpClient 5。
如何替换:先pom添加maven坐标依赖,再添加yml配置
OpenFeign请求/响应压缩
响应压缩直接改成yml格式配置即可:
OpenFeign的日志打印
配置:
circuitBreaker断路器
服务熔断 服务降级 服务限流 服务预热 接近实时的监控 兜底的处理动作(给出对用户友好的提示信息)
Resilience4j轻量级容错框架 断路器有三个普通状态:关闭(CLOSED),开启(OPEN),半开(HALF_OPEN),还有两个特殊状态:禁用(DISABLED),强制开启(FORCED_OPEN)。
总结:2024最新SpringCloud学习教程,Consul/Nacos/Feign/Sentinel/Gateway/Seata一网打尽_尚硅谷2024最新springcloud教程-CSDN博客