SpringCloud概述

简介: Spring Cloud是Spring推出的微服务一站式解决方案,弥补了各技术分散、无统一架构的短板。它具备约定优于配置、组件丰富、开箱即用等特点,支持云原生应用开发。版本以地铁站命名,避免与子项目冲突。随着Netflix组件停更,Spring Cloud Alibaba凭借Nacos、Sentinel、Seata等成熟组件成为主流选择,经阿里多年验证,功能完备、稳定可靠,是当前微服务落地的优选技术栈。

1.SpringCloud诞生
基于前面章节,我们深知微服务已成为当前开发的主流技术栈,但是如dubbo、zookeeper、nacos、rocketmq、rabbitmq、springboot、redis、es这般众多技术都只解决了一个或一类问题,微服务并没有一个统一的解决方案。开发人员或架构师想要做架构设计或系统拆分时,还需要深度调研技术选项。那么有没有一个技术可以一呼百应,做到一个彻底的解决方案呢?于是Spring团队推出了他们的微服务解决方案-Spring Cloud。
2.SpringCloud特点
作为一款优秀的微服务解决方案,其主要特点如下
约定大于配置
组件丰富,功能齐全
灵活,开箱即用,快速启动
完美适配云环境软件架构的云原生应用
3.SpringCloud版本
Spring-Cloud的github仓库:https://github.com/spring-cloud
大多数Spring项目版本号是:主版本号.次版本号.增量版本号.里程碑版本号,如Spring版本:4.3.1.RELEASE,其中主版本号标识重大重构,次版本号标识新特性调整,增量版本号一般标识bug-fix,里程碑则标识某版本号的里程碑,也可以没有。
Spring Cloud通过伦敦地铁站的形式进行命名,如下Hoxton.SR12(Hoxton:主版本号,SR:Service Release,X数字:次版本号)。
因为Spring Cloud是一个大综合性的项目,包含很多子项目,由于子项目也维护着自己的版本号,所以通过这种命名形式定义版本号,避免与子项目版本冲突。
更多Spring Cloud版本演进计划请移步:github里程碑仓库
4.SpringCloud子项目
https://spring.io/projects/spring-cloud#overview
5.SpringCloud/SpringBoot版本兼容关系
6.SpringCloud Alibaba诞生
随着淘系业务的发展,阿里巴巴内部针对Spring Cloud做了自身吸收后,也贡献出优秀的Spring Cloud Alibaba解决方案,应运而生孵化出如Nacos这般优秀的中间件,并被Spring Cloud官方认可。至此Spring Cloud作为微服务解决方案的实际落地场景得到了更为强有力的论证,落地方案也就清晰明了
技术
Spring Cloud官方套件或第三方套件
Alibaba套件
Netflix套件
服务注册与服务发现
Consul、Zookeeper
Nacos
Eureka
配置中心
Spring Cloud Config
Nacos
服务通信
Open Feign
Dubbo
Feign
负载均衡器
Loadbalancer
Ribbon
服务网关
Spring Cloud Gateway
Zuul
断路器
Resilience4j
Sentinel
Hystrix
链路追踪
Spring Cloud Sleuth、Zipkin
分布式事务
Seata
Spring Cloud Alibaba提供的核心组件如下:
Sentinel:阿里开源产品,可作为断路器,也支持流量控制和服务降级。
Nacos:阿里开源产品,服务注册与服务发现,同时也可作为配置中心。
RocketMQ:阿里开源的分布式消息和流计算平台。
Dubbo:阿里开源产品,高性能Java RPC框架,服务通信组件。
Seata:阿里开源产品,一个易使用的高性能微服务分布式事务解决方案。
7.为什么选择SpringCloud Alibaba
基于上述描述,读者应该会发现SpringCloud可以选择Alibaba或Netflix套件整合出一套完整解决方案。然后Netflix由于种种原因退出了维护更新的舞台,后续SpringCloud也逐步将其提供的组件一一剔除。
依附着阿里2015-2020的黄金飞速发展,Alibaba与Spring Cloud社区的强强联合,更多、更为全面的解决方案经过无数次的验证是真实可行的,同时阿里提供的开源产品保证了SpringCloud的功能又得到了进一步的补充。
所以最终我们也将选择SpringCloud Alibaba作为技术栈进行学习和演练。
8.总结
本节笔者介绍了SpringCloud诞生的由来,以及目前国内主要流行的SpringCloud Alibaba与SpringCloud的关系,同时针对SpringCloud自身的特点、版本号、依赖关系做了概要论述,这些都是为了接下来的实战打好基础。
思考问题
SpringCloud特性?
SpringCloud Alibaba与SpringCloud什么关系?
9.推荐阅读资料
浏览Spring Cloud仓库:https://github.com/spring-cloud
浏览Spring Cloud官网:https://spring.io/projects/spring-cloud
截图软件:
xsnip_1.1.0.4.zip
(360 KB)

相关文章
|
3月前
|
人工智能 自然语言处理 安全
探索Playwright MCP和Claude的协作:智能网页操作新境界
如今,只需用自然语言对AI说“帮我找近三个月AI代理的最新论文,下载PDF并整理成表格”,它就能自动打开浏览器,访问学术网站,完成搜索、筛选、下载等一系列操作。这背后是 Playwright MCP Server 与 Claude 的深度结合——相当于为 Claude 这颗“智慧大脑”装上了能够精准操控浏览器的“灵巧双手”。本文将一步步教你搭建并优化这两个工具之间的协作桥梁,打造一个真正能自主处理网页任务的智能助手。
|
26天前
|
消息中间件 Shell Linux
RabbitMQ部署指南
本文介绍RabbitMQ在CentOS7下基于Docker的单机与集群部署方案,涵盖镜像安装、DelayExchange插件配置、普通模式与镜像模式集群搭建,并详解仲裁队列使用及集群扩容方法,助力实现高可用消息队列服务。
|
26天前
|
负载均衡 Java Nacos
Gateway服务网关
网关是微服务的统一入口,实现请求路由、权限控制与限流。基于Spring Cloud Gateway可快速搭建高性能网关,支持断言与过滤器灵活配置,并解决跨域问题,提升系统安全性和可维护性。
|
26天前
|
安全 Java 网络架构
4.认识SpringSecurity
SpringSecurity是Java生态中主流的权限框架,核心功能包括认证与鉴权。支持表单、OAuth2、JWT等多种认证方式,具备URL级、方法级授权及RBAC模型,可防御CSRF等攻击。其架构基于过滤器链,通过FilterChainProxy实现多安全过滤链,并结合ExceptionTranslationFilter处理认证异常,灵活且扩展性强。
|
26天前
|
安全 Java 数据安全/隐私保护
2.通用权限管理模型
本文介绍了ACL、RBAC等常见权限模型。ACL通过用户/角色与权限直接绑定实现控制;RBAC则基于角色继承、职责分离等机制,提升权限管理的灵活性与安全性,适用于复杂系统。了解模型结构有助于构建清晰的权限体系。
|
26天前
|
安全 数据安全/隐私保护
1.什么是权限管理
权限管理包含认证与授权两大核心:认证验证用户身份(如登录),授权则根据角色分配资源访问权限。通过角色叠加生成可访问菜单,实现操作安全控制,避免数据泄露等问题,为系统提供全面安全保障。
|
26天前
|
存储 缓存 Java
自动装配机制
本文深入解析SpringBoot自动装配机制,从@SpringBootApplication注解入手,剖析其组合注解原理。重点讲解@AutoConfigurationPackage通过@Import实现包扫描路径注册,以及@AutoConfigurationImportSelector如何借助SpringFactoriesLoader加载spring.factories中配置的自动装配类,结合条件注解实现智能化配置,最终实现“约定优于配置”的核心思想。(238字)
|
26天前
|
JSON 安全 Java
6.鉴权
本文介绍基于Spring Security与JWT实现客户端Token认证方案,涵盖依赖配置、安全设置、JWT生成与验签、自定义认证及过滤器实现,结合RBAC权限控制,保护Spring Boot应用接口安全。
|
26天前
|
Web App开发 安全 JavaScript
5.跨域处理
本文介绍了跨域问题的产生原因及解决方案。当协议、域名或端口不同时,浏览器因同源策略阻止资源访问。通过CORS(跨域资源共享)机制,使用`@CrossOrigin`注解、全局配置`WebMvcConfigurer`或自定义过滤器添加响应头,可实现安全跨域。
|
26天前
|
JSON Java 数据格式
4. 不定参数入参
本文介绍了Spring Boot中Controller层接口的常见参数接收方式,包括非JSON格式入参(如对象、基本类型、@RequestParam、@RequestBody)和JSON格式入参,涵盖单个/多个参数通过JSONObject接收及封装对象接收的方式,并展示了结合@Valid注解进行参数校验的实践示例。