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 保证跨服务数据事务一致,防止数据错乱。

相关推荐
guchen661 小时前
WPF的启动机制
前端·后端
Java水解1 小时前
如何更好的创建skill
后端
Gopher_HBo2 小时前
阻塞队列之PriorityBlockingQueue
后端
霸道流氓气质2 小时前
Spring AI ChatMemory 对话记忆配置指南:概念、实战与常见问题
java·人工智能·spring
~|Bernard|2 小时前
五,go语言的内存管理
开发语言·后端·golang
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第47题】【JVM篇】第7题:Young GC 和 Full GC 分别采用什么算法?
java·jvm·后端·算法·面试
Devin~Y3 小时前
大厂Java面试实录:Spring Boot微服务 + Redis/Kafka + Prometheus/Jaeger + RAG/Agent(小Y水货版)
java·spring boot·redis·spring cloud·kafka·prometheus·jaeger
user_admin_god3 小时前
Spring Boot 3 + WebFlux 企业级流式SSE接口最佳实践
java·spring boot·后端
怪祝浙3 小时前
spring boot的启动原理以及mvc和ssm的解释
spring boot·后端·mvc