微服务(SpringCloud)架构的核心组件

  • 服务注册与发现: Nacos / Eureka

  • 配置中心: Nacos / Spring Cloud Config

  • API网关: Spring Cloud Gateway

  • 远程调用: OpenFeign

  • 负载均衡: Spring Cloud LoadBalancer

  • 容错熔断: Resilience4j / Sentinel

  • 数据持久化: Spring Data JPA (如您所见) / MyBatis-Plus

  • 数据库: MySQL / PostgreSQL

  • 权限控制: Spring Security + JWT / OAuth 2.0

  • 消息队列: RabbitMQ / Kafka (用于模块间异步通信)

  • 缓存: Redis

  • 监控: Spring Boot Actuator + Micrometer + Prometheus + Grafana

核心比喻:将微服务系统比作一个 “购物中心”
一个个独立的店铺(如服装店、餐厅、电影院) = 一个个微服务(user-service, order-service)
顾客 = 外部用户或客户端

1. 服务注册与发现 (Nacos / Eureka) - “商场导览图”
作用:解决“服务在哪里?”的问题。

详解:在分布式系统中,服务实例的网络地址(IP和端口)是动态变化的(例如,一个服务可以启动多个实例来做负载均衡)。服务注册中心就像一个动态的通讯录。

服务注册:每个微服务启动时,都向注册中心“报到”,登记自己的地址信息。

服务发现:当一个服务(如order-service)需要调用另一个服务(如user-service)时,它就去注册中心查询user-service所有可用实例的地址列表,然后再发起调用。

常用产品:Nacos (阿里开源,功能强大)、Eureka (Netflix开源)

2. 配置中心 (Nacos / Spring Cloud Config) - “中央布告栏”
作用:解决“配置如何集中管理?”的问题。

详解:传统的配置文件(如application.yml)打在jar包里,修改配置需要重新打包部署,非常麻烦。配置中心将所有服务的配置(如数据库连接、第三方API密钥、功能开关)集中存储在一个地方(通常是Git仓库)。

微服务启动时,会从配置中心拉取自己的配置。

运行时,如果配置中心的配置发生变化,可以动态推送给微服务,无需重启服务。

常用产品:Nacos (同时具备注册中心和配置中心功能)、Spring Cloud Config (需配合Git等使用)
 

3. API网关 (Spring Cloud Gateway) - “商场总服务台/大门”
作用:解决“外部请求如何接入?”的问题,是所有流量入口的统一大门。

详解:外部客户端(如手机APP、浏览器)不需要知道内部有多少个微服务。它只需要访问网关的一个地址,由网关负责将请求路由到内部正确的微服务上。它还负责:

身份认证与授权:统一校验用户身份和权限(集成Spring Security + JWT)。

流量控制与限流:防止恶意请求冲垮后台服务。

日志记录:记录所有访问日志。

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

4. 远程调用 (OpenFeign) - “内部对讲机”
作用:解决“服务之间如何优雅地互相调用?”的问题。

详解:它让服务间的HTTP调用像调用本地方法一样简单。开发者只需要定义一个Java接口并用注解声明要调用的远程服务名和API路径,OpenFeign就会自动生成实现,处理一切HTTP通信的细节(序列化、发请求、反序列化)。

5. 负载均衡 (Spring Cloud LoadBalancer) - “店员调度员”
作用:解决“请求应该发给多个相同服务实例中的哪一个?”的问题。

详解:当一个服务有多个实例时(例如user-service部署了3台服务器),负载均衡器会根据某种规则(如轮询、随机、根据响应时间加权)将请求平均地分发到各个实例上,从而避免单个实例压力过大,提高系统整体处理能力。OpenFeign默认就集成了负载均衡功能。

6. 容错熔断 (Resilience4j / Sentinel) - “电路保险丝”
作用:解决“某个服务故障了,如何防止故障蔓延导致系统雪崩?”的问题。

详解:在分布式系统中,服务之间依赖复杂,一个服务故障或响应过慢,可能导致调用它的线程全部被阻塞,最终耗尽资源,拖垮整个系统。熔断器就像电路中的保险丝:

关闭:正常状态,请求畅通无阻。

打开:当失败率达到阈值,熔断器“跳闸”,后续所有请求立即失败,不再调用故障服务,给故障服务恢复的时间。

半开:熔断一段时间后,尝试放一个请求过去,如果成功了就关闭熔断器,恢复调用。
 

7. 消息队列 (RabbitMQ / Kafka) - “内部物流配送中心”
作用:解决“服务间如何实现异步通信和解耦?”的问题。

详解:服务A不需要直接调用服务B,而是把一条“消息”(一个任务或事件)发送到消息队列中就可以返回了。服务B根据自己的处理能力,从队列中取出消息进行消费。

优点:异步(提高响应速度)、解耦(服务之间不直接依赖)、削峰填谷(应对突发流量,防止系统被冲垮)。

8. 缓存 (Redis) - “临时储物柜”
作用:解决“如何降低数据库压力、提高读取速度?”的问题。

详解:将频繁读取但很少修改的数据(如用户信息、商品目录、热点新闻)存放在内存数据库Redis中。后续请求可以直接从极快的内存中获取数据,大大减少对慢速磁盘数据库(如MySQL)的访问,显著提升系统性能。

9. 监控 (Actuator + Micrometer + Prometheus + Grafana) - “商场监控室和数据大屏”
作用:解决“系统运行状态是否健康?性能指标如何?”的问题。

详解:

Actuator:为Spring Boot应用提供生产级的监控端点(endpoints),可以暴露健康状态、指标信息(如CPU、内存使用率、HTTP请求计数)。

Micrometer:一个监控指标的度量库,相当于Java版的SLF4J。它提供统一接口,让应用代码可以方便地记录各种指标,并支持输出到多种监控系统(如Prometheus)。

Prometheus:一个开源的系统监控和警报工具包。它会定时抓取(pull)各个微服务暴露的指标数据,并存储在自己的时间序列数据库中。

Grafana:一个强大的数据可视化平台。它从Prometheus等数据源读取数据,生成漂亮的图表和仪表盘,让运维和开发人员可以直观地观察系统状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值