Spring Cloud 和 Cloud Native(云原生)是两个紧密相关但又有所区别的技术体系,前者是基于 Spring 生态的微服务框架集合,后者是更广泛的云原生架构方法论及技术栈。以下是两者包含的主要技术框架和组件:
一、Spring Cloud 核心技术框架
Spring Cloud 专注于微服务架构的落地,提供了一系列组件解决服务治理、通信、配置等问题,核心包括:
-
服务注册与发现
- Eureka:Netflix 开源的服务注册中心,支持高可用部署。
- Consul:HashiCorp 开源,兼具服务发现、配置管理和分布式一致性能力。
- Nacos:阿里开源,集服务注册发现、配置管理于一体,支持动态配置和服务治理。
- Zookeeper:基于 ZAB 协议的分布式协调工具,可作为服务注册中心(Curator 框架常配合使用)。
-
配置中心
- Spring Cloud Config:集中式配置管理,支持 Git 仓库存储配置。
- Nacos:同时支持配置管理和服务发现,动态配置能力更强。
- Apollo:携程开源,支持多环境、多集群配置管理,可视化界面丰富。
-
服务熔断与降级
- Hystrix:Netflix 开源,解决服务雪崩问题(已停止维护,推荐替代方案)。
- Resilience4j:轻量级熔断框架,专为 Java 8+ 和函数式编程设计,替代 Hystrix 的主流选择。
- Sentinel:阿里开源,支持流量控制、熔断降级、系统负载保护,适配 Spring Cloud 生态。
-
API 网关
- Spring Cloud Gateway:Spring 官方推出的网关,基于 Netty 异步非阻塞,支持路由、过滤、负载均衡等。
- Zuul:Netflix 开源的网关(Zuul 1 同步阻塞,Zuul 2 异步非阻塞,但应用较少)。
-
负载均衡
- Ribbon:Netflix 开源的客户端负载均衡器(已停止维护)。
- Spring Cloud LoadBalancer:Spring 官方推出的负载均衡组件,替代 Ribbon。
-
服务通信
- OpenFeign:声明式 HTTP 客户端,基于 Ribbon/LoadBalance 实现负载均衡,简化服务间调用。
- Spring Cloud Stream:消息驱动开发框架,适配 Kafka、RabbitMQ 等消息中间件,实现服务解耦。
-
分布式追踪
- Spring Cloud Sleuth + Zipkin:Sleuth 生成追踪日志,Zipkin 收集并可视化分布式调用链路。
- SkyWalking:国产分布式追踪、监控工具,支持 Spring Cloud 全链路追踪。
-
安全与认证
- Spring Cloud Security:基于 Spring Security 的微服务安全框架,支持 OAuth2、JWT 等认证方式。
- Spring Cloud Alibaba Sentinel:除熔断外,也支持接口权限控制。
二、Cloud Native(云原生)技术栈
Cloud Native 是一套构建和运行在云环境中的技术体系,强调容器化、微服务、DevOps 等理念,核心技术包括:
-
容器化技术
- Docker:应用容器引擎,将应用及依赖打包为镜像,实现环境一致性。
- containerd:Docker 剥离出的容器运行时核心组件,更轻量、标准化。
-
容器编排与调度
- Kubernetes(K8s):云原生核心编排平台,负责容器的部署、扩缩容、负载均衡、自愈等。
- K3s:轻量级 Kubernetes,适合边缘计算、物联网场景。
-
服务网格(Service Mesh)
- Istio:最流行的服务网格,通过 Sidecar 代理实现流量管理、熔断、监控、安全(mTLS)等,解耦业务代码与治理逻辑。
- Linkerd:轻量级服务网格,性能更优,配置简单。
-
CI/CD 与 DevOps 工具链
- Jenkins:老牌 CI/CD 工具,插件丰富,支持自动化构建、测试、部署。
- GitLab CI/CD:与 GitLab 代码仓库集成的 CI/CD 工具,配置简单。
- ArgoCD:基于 GitOps 理念的持续部署工具,专注于 Kubernetes 应用部署。
- Tekton:Kubernetes 原生的 CI/CD 框架,可自定义流水线。
-
监控与可观测性
- Prometheus:时序数据库,用于 metrics 数据采集和存储。
- Grafana:配合 Prometheus 实现监控数据可视化(图表、告警)。
- ELK Stack(Elasticsearch + Logstash + Kibana):日志收集、存储、分析与可视化。
- Loki:轻量级日志聚合系统,与 Prometheus、Grafana 无缝集成。
-
消息队列与事件驱动
- Kafka:高吞吐、低延迟的分布式消息系统,适合大数据场景。
- RabbitMQ:支持多种消息模式(点对点、发布订阅等),易用性强。
- Pulsar:多租户支持的云原生消息系统,兼容 Kafka 协议。
-
存储与数据库
- MinIO:兼容 S3 协议的对象存储,适合云原生环境的文件存储。
- Ceph:分布式存储系统,支持块存储、对象存储、文件系统。
- 云原生数据库:Vitess(MySQL 分布式解决方案)、CockroachDB(分布式 SQL 数据库)等。
-
Serverless 与无服务器架构
- Knative:基于 Kubernetes 的 Serverless 框架,简化容器化应用的部署和扩缩容。
- AWS Lambda/Azure Functions:公有云厂商提供的 Serverless 服务(非开源)。
总结
- Spring Cloud 是微服务开发的“应用层”框架,聚焦于服务治理、通信等业务相关能力;
- Cloud Native 是更底层的“基础设施层”技术体系,聚焦于容器化、编排、可观测性等云环境支撑能力。
实际项目中,两者常结合使用:用 Spring Cloud 开发微服务应用,再通过 Docker 容器化,最后部署到 Kubernetes 集群,配合 Istio、Prometheus 等工具实现云原生架构。