SpringCloud快速入门(2)---- SpringCloud简介

1. 什么是SpringCloud

简单来说:SpringCloud是基于SpringBoot的微服务治理框架,它整合了市面上优质的微服务组件,帮我们快速搭建稳定、可靠、高可用的分布式系统。

如果把微服务比作一栋写字楼,每个微服务就是一间办公室,而SpringCloud的各类组件就是写字楼的水电、安保、导航、调度系统,保障整栋大楼正常运转。

2. SpringCloud常用核心组件详解

我按照微服务开发流程,给大家分类整理组件,逻辑清晰,方便记忆。

2.1服务注册与发现:Nacos(注册中心)

核心作用:微服务的通讯录

在微服务架构中,会有很多服务(订单服务、用户服务、支付服务),服务之间需要互相调用。Nacos就是注册中心,所有服务启动后,都会主动把自己的IP、端口注册到Nacos中。

当A服务需要调用B服务时,直接去Nacos查询B服务的地址即可,无需硬编码写死地址。

补充知识点 :早期旧版本使用Eureka,目前已停止维护,企业开发首选Nacos,同时兼容注册中心+配置中心双重功能。

2.2 负载均衡:LoadBalancer

核心作用:请求分发器,避免服务拥堵

为了保证服务高可用,生产环境中一个服务通常会部署多台服务器。当大量请求访问服务时,LoadBalancer负责将请求均匀分发到不同服务实例上。

常见策略:轮询、随机、加权轮询,有效避免单台服务器压力过大、服务宕机的问题。

补充知识点:旧版使用Ribbon,现已淘汰,SpringCloud官方推荐LoadBalancer作为新一代负载均衡组件。

2.3 声明式服务调用:OpenFeign

✅核心作用:简化服务之间的HTTP调用

没有Feign之前,服务之间调用需要写复杂的HTTP请求代码,繁琐且冗余。OpenFeign采用声明式调用,只需要定义接口、添加注解,就能像调用本地方法一样调用远程服务,代码简洁优雅。

并且Feign内置集成了LoadBalancer,自动实现负载均衡,是日常开发使用率最高的组件之一。

2.4 熔断降级:Sentinel

核心作用:系统的保险丝,防止服务雪崩

微服务最大痛点:服务连环宕机。比如订单服务调用支付服务,若支付服务卡顿、宕机,大量请求堆积,会拖垮订单服务,进而影响整个系统,这就是服务雪崩。

Sentinel专门解决这个问题,提供熔断、降级、限流、热点监控功能:

  • 熔断:下游服务异常,直接断开调用,避免请求堆积;

  • 降级:流量高峰期,关闭非核心接口,保证核心业务可用;

  • 限流:限制接口每秒请求次数,防止服务器被压垮。

补充知识点:早期组件Hystrix现已停更,目前企业主流使用轻量级、可视化更强的Sentinel。

2.5 API网关:Spring Cloud Gateway

核心作用:系统的统一大门、门卫

所有客户端(APP、小程序、网页)的请求,不会直接访问后端微服务,而是先经过Gateway网关。它是整个系统的唯一入口,承担以下职责:

  • 路由转发:将不同请求分发到对应的服务;

  • 权限校验:统一登录鉴权、拦截非法请求;

  • 限流过滤:拦截恶意请求、高频请求;

  • 跨域处理:统一解决后端跨域问题。

相比于老旧的Zuul网关,Gateway基于Netty实现,异步非阻塞,性能更强,是目前行业标配。

2.6 统一配置中心:Nacos / Config

核心作用:远程配置管理器

传统开发中,配置文件写在本地,修改配置需要重启服务,十分麻烦。配置中心可以将所有服务的配置(数据库地址、密钥、开关参数)统一放到云端管理。

修改配置无需重启服务,实时动态刷新,方便运维管控。目前优先使用Nacos(简单易用),Spring Cloud Config适合复杂定制化场景。

2.7 分布式事务:Seata

核心作用:保证跨服务数据一致性,解决分布式事务问题

这是微服务开发最头疼、面试必考的组件。单体项目中,数据库事务可以保证数据要么全部成功、要么全部回滚;但微服务中,一次业务要调用多个服务(例如下单:扣库存+扣余额+生成订单),不同服务连接不同数据库。

如果其中某一个服务报错,就会出现:有的数据入库、有的数据回滚,产生数据不一致的严重问题。

Seata 是阿里开源的分布式事务解决方案,专门用来搞定跨服务事务一致性,常用三种模式:

  • AT模式(常用):无侵入、自动回滚,绝大多数企业项目首选;

  • TCC模式:手动编码、补偿回滚,适合高并发复杂业务;

  • SAGA模式:长事务流程,适合超长链路业务。

补充知识点 :旧方案有LCN、GTS,现在全部淘汰,目前行业统一标准就是Seata。金融、支付、电商必须使用,保证资金、订单数据绝对一致。

3. 组件关系总结

这里给大家做一个直白的串联,快速理清组件协作流程:

  1. 用户请求先经过Gateway网关,做鉴权、过滤;

  2. 网关根据路由转发至对应服务;

  3. 所有服务注册在Nacos,统一管理配置;

  4. 服务之间通过OpenFeign 调用,LoadBalancer实现负载分发;

  5. Sentinel实时监控服务状态,熔断降级保护系统;

  6. Seata 保证跨服务数据事务一致,防止数据错乱。

相关推荐
云烟成雨TD3 小时前
Spring AI Alibaba 1.x 系列【69】Token 用量统计
java·人工智能·spring
JustHappy4 小时前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本4 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
IT_陈寒8 小时前
Python闭包里藏的这个坑,差点让我加班到凌晨
前端·人工智能·后端
IT_陈寒8 小时前
Java注解空指针?这个坑我踩得莫名其妙
前端·人工智能·后端
土狗TuGou9 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
ZengLiangYi9 小时前
React Query + REST API 最佳实践
javascript·后端·react.js
星浩AI9 小时前
项目实战:合同智能审批 · LangGraph + HITL 人机协同方案 [有源码]
后端·langchain·agent
JavaGuide9 小时前
Codex 接入第三方模型 DeepSeek、GLM、Kimi 教程:CC-Switch 和 Codex++ 两种方案对比
后端·ai编程
ZengLiangYi9 小时前
Fastify 加 Electron:把 Web 服务嵌进桌面应用
前端·javascript·后端