spring微服务宏观概念

本片从宏观的角度,说明微服务的重要概念,后续会有实际操作,怎么集成开发、原理等。

网关
注册中心
负载均衡

常见的负载均衡解决方案:

集中式:客户端和服务器之间,通过独立的设施分发请求,如:nginx;

进程式:单个服务器内部,将请求分配给预先启动好的工作进程,如:ribbon。

想必大家都知道spring中是那种方案,但ribbon官方不在更新,目前官方推荐:Spring Cloud LoadBalancer。

使用场景:

1、当 gateway 识别出需要负载均衡请求资源时,由 gateway 调用 LoadBalancer 按策略选择出一个资源调用。

2、当服务内通过 feign(或者restTemplate等)调用集群时,也会触发负载均衡。

LoadBalancer 内置 随机策略 和 轮询策略;扩展策略有:不过需我们自己实现!

策略类型 描述
加权轮询/随机 根据实例的配置(CPU、内存)或性能为其分配权重,按权重分配流量。
最少连接数 跟踪每个服务实例的当前活跃请求数,将新请求转发到连接数最少的实例。
基于标签/元数据的路由 根据实例的元数据(如版本、区域)进行路由,实现灰度发布或同区域优先。
一致性哈希 对于缓存等场景,能将同一用户的请求总是转发到同一个后端实例。
最佳响应时间 根据实例的历史平均响应时间动态调整流量分配。

nacos中已经帮我们实现了:加权。

限流

配置中心

断路器

是一种容错机制,用于防止故障的扩散。在服务调用失败、超时、异常等情况下,能够快速失败并阻止进一步的失败请求发送到问题服务,从而防止整个系统因单个服务的故障而崩溃。

拟人化解释:

比如:你们家,你大舅开鞋厂,二舅开包厂,三舅开裤带厂,你们家给他们三家供货,提供皮革。这几天赶上皮革节,他们三家搞活动,大舅说我要3万张皮革,二舅说要1万张,三舅说给点边角料就行。你们开始24小时不停的生产,最终3口人全部累到,你这3个舅活动也没办完,提前结束。

这就是一个资源不可用,导致全面崩溃!

记住,断路器是加在调用方的;

当断路器感知,被调用方(资源方)不可用时,直接告诉自己不可用。

如果放在资源方,断路器无法感知自己不好用,就算感知了,怎么通知调用方,难道发送http请求?

有人会问:让调用方直接失败不就行吗?

也行,但这是限流。其实断路器可以理解为逆向限流!

采用断路器还是限流,看你们公司怎么考虑。

两个重要概念

降级:当发生错误时返回兜底数据。

熔断:当错误发生的结果达到设定的阈值时,直接返回兜底数据。

断路器应该加在那些服务上面?没必要每个都加吧

原则:就是你觉得,这个服务一定不能奔溃,那就在调用方加上断路器。

支付、靠近数据库的服务、就是越靠近资源的服务。

应具备那些功能

官网能持续维护;轻量化;资源占用低;可与spring feign天然集成;可兼容大众化的监控平台。

边外扩展

一般断路器都是在系统内部使用的,对外一般都是通过http框架去调用,容错方式和断路器类似,有的框架可以说就是,比如:Resilience4j

相关推荐
键来大师19 小时前
Android15 RK3588 修改默认不锁屏不休眠
android·java·framework·rk3588
合作小小程序员小小店20 小时前
web网页开发,在线%考试管理%系统,基于Idea,vscode,html,css,vue,java,maven,springboot,mysql
java·前端·系统架构·vue·intellij-idea·springboot
小坏讲微服务21 小时前
Spring Boot整合Redis注解,实战Redis注解使用
spring boot·redis·分布式·后端·spring cloud·微服务·mybatis
多多*21 小时前
maven常用的命令
java·log4j·maven
xie_pin_an21 小时前
MyBatis-Plus 实战:MPJLambdaWrapper 多表联查用法全解析
java·spring boot·spring·mybatis
ᐇ95921 小时前
Java LinkedList集合全面解析:双向链表的艺术与实战
java·开发语言·链表
luyun02020221 小时前
Windows 11操作更丝滑,绝了
java·运维·figma
码银21 小时前
【数据结构】顺序表
java·开发语言·数据结构
Boop_wu21 小时前
[Java EE] 计算机基础
java·服务器·前端
橘子海全栈攻城狮21 小时前
【源码+文档+调试讲解】基于Spring Boot的考务管理系统设计与实现 085
java·spring boot·后端·spring