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

相关推荐
AI人工智能+电脑小能手6 分钟前
【大白话说Java面试题 第112题】【并发篇】第12题:AQS 中节点的入队时机有哪些?
java·开发语言·面试
摇滚侠6 分钟前
SpringMVC 入门到实战 处理静态资源的过程 64
java·后端·spring·maven·intellij-idea
影寂ldy7 分钟前
C# 泛型委托
java·算法·c#
摇滚侠8 分钟前
MyBatis 入门到项目实战 MyBatis 核心配置文件 15-19
java·tomcat·mybatis
IT WorryFree8 分钟前
Zabbix 7.4 API 可同步全量参数清单(同步第三方系统专用)
java·开发语言·zabbix
RoboWizard10 分钟前
一块硬盘上架前要闯多少关?
java·服务器·数据库
半夜燃烧的香烟20 分钟前
docker 安装minio nginx,配置nginx根据文根路由minio展示图片
java·nginx·docker
吴阿福|一人公司22 分钟前
深度解析 Python 类变量修改的命名空间隔离
java·服务器·数据结构
zzz_236828 分钟前
【Java基础】链表的七十二变——从LRU缓存到手写浏览器前进后退
java·链表·缓存
番茄去哪了30 分钟前
神领物流面试题(一)
java·大数据·中间件