Spring Cloud 微服务架构

Spring Cloud 微服务架构

一个典型的 Spring Cloud 微服务架构部署图:

Spring Cloud 微服务架构常用组件:

  • 服务发现与注册中心
    • Eureka:Netflix 开源的服务发现组件。
    • Consul:HashiCorp 提供的服务网络解决方案,支持服务发现、配置等。
    • Zookeeper:Apache 的一个分布式协调服务,也可用于服务注册与发现。
  • 客户端负载均衡
    • Ribbon:Netflix 提供的负载均衡客户端,目前已停止维护。
    • Spring Cloud LoadBalancer:Ribbon 的替代品。
  • 声明式 REST 客户端
    • Feign / OpenFeign:简化了 HTTP 客户端的编写。
  • API 网关
    • Zuul:Netflix 提供的一个网关解决方案。
    • Spring Cloud Gateway:Spring 官方提供的新一代网关,是 Zuul 的替代品。
  • 断路器(熔断器)
    • Spring Cloud Circuit Breaker:一个抽象层,旨在为不同的断路器实现提供统一的编程模型,使得开发者可以在不改变代码逻辑的情况下切换不同的断路器实现(比如 Resilience4j、Hystrix 等)。
    • Hystrix:防止故障传播,实现服务降级。
    • Resilience4j:现代轻量级容错库,还提供了限流、重试等功能,是 Hystrix 的替代品。
  • 配置管理
    • Spring Cloud Config:提供配置中心化管理。
  • 消息总线
    • Spring Cloud Bus:用于广播状态更改或事件,通常与配置管理一起使用。
  • 分布式追踪
    • Spring Cloud Sleuth:提供链路跟踪的功能。
    • Zipkin 或 Jaeger:分布式追踪系统,通常与 Sleuth 结合使用。

Spring Cloud 框架组件对比

  • Spring Cloud 社区:提供了一套用于构建微服务架构的工具和库的标准集合,支持多种不同的实现方案,旨在为开发者提供灵活的选择。
  • Spring Cloud Netflix:曾经是 Spring Cloud 最主要的组件集之一,提供了诸如 Eureka(服务发现)、Hystrix(断路器)、Zuul(API网关)等经典组件,但部分组件现已进入维护模式,不再积极开发新特性。
  • Spring Cloud Alibaba:作为 Spring Cloud 的另一实现,它带来了包括 Nacos(服务发现与配置管理)、Sentinel(流量控制与熔断)、RocketMQ(消息队列)等在内的组件,专注于提供更符合云原生趋势以及满足国内市场需求的解决方案。
功能模块 Spring Cloud 社区 Spring Cloud Netflix Spring Cloud Alibaba 其他
配置中心 Spring Cloud Config Archaius(停止维护) Nacos Zookeeper / Apollo / Disconf / Consul
服务注册与发现 Spring Cloud Netflix Eureka Eureka 1.x, Eureka 2.x(停止维护) Nacos Zookeeper / Consul
客户端负载均衡 Spring Cloud LoadBalancer Ribbon(停止维护) Dubbo / Spring Cloud LoadBalancer
服务调用 Spring Cloud OpenFeign Feign Dubbo
API 网关 Spring Cloud Gateway Zuul(停止维护) Spring Cloud Gateway Nginx + Lua
熔断器 Spring Cloud Circuit Breaker + Resilience4j Hystrix(停止维护) Sentinel Resilience4j
消息队列 Spring Cloud Stream + RabbitMQ / Kafka RocketMQ RabbitMQ / Kafka
链路追踪 Spring Cloud Sleuth + Zipkin Zipkin / SkyWalking
分布式事务 不直接支持 不直接支持 Seata
事件总线 Spring Cloud Bus + RabbitMQ / Kafka RocketMQ

(本文首发于公众号:JavaArchJourney)

相关推荐
Tsuki_tl5 分钟前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
后台模板学习7 分钟前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
系统集成-鹰翔11 分钟前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
IT_陈寒11 分钟前
深入理解SpringBoot:核心原理与最佳实践
前端·人工智能·后端
学长毕设13 分钟前
基于SpringBoot的校园礼服租赁系统的设计与实现
java·spring boot·后端
Best_Liu~31 分钟前
SpringBoot全局日期格式化
java·spring boot·后端
小蒜学长35 分钟前
基于Django+Vue喵汪联盟宠物领养系统的设计与实现(代码+数据库+LW)
后端·python·django·宠物领养系统·流程规范化
Dwzun1 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
小码哥_常7 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
学长毕设10 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端