Spring Cloud基础
本文共 2,463 字,预计阅读时间 8 分钟
1.网站架构演变过程
传统架构(单点应用SSM或SSH)→分布式架构(项目拆分)→SOA架构(面向服务架构)→微服务架构
2.微服务概述
2.1SOA架构
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
2.2微服务
强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用(如module)。
2.3微服务架构
是一种架构模式或架构风格,提倡将单一应用程序划分成一组小的服务;从SOA架构演变而来,比SOA架构的细粒度更加精细,目的是为了提高效率。每个服务于与服务之间互不影响,每个服务必须独立部署,拥有指定数据库,每个服务只做一件事(专业的人做专业的事)。它采用restful提供API(即http+json),各个微服务之间的关联通过暴露api来实现,更加轻巧,适合敏捷开发。
2.4微服务的优缺点
优点:微服务只是业务逻辑的代码,不会和css等界面混合;每个微服务有自己的存储能力,有自己的数据库,也有公共的数据库;每个服务足够内聚,足够小,松耦合。
缺点:系统复杂,运维压力大,系统依赖比较多通信成本高。
2.5技术栈
是多种技术的集合体。
3.Spring Cloud
3.1定义
一套比较完善的基于SpringBoot的微服务一站式解决方案框架,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
英文官网:https://spring.io/projects/spring-cloud
中文官网:https://www.springcloud.cc/
3.2Spring Cloud与Sping Boot的区别
1)Spring Boot专注于快速的单个个体开发微服务;Spring Cloud关注全局的微服务协调整理治理框架,将Spring Boot开发的一个个的单体服务整合并管理起来,为各个服务之间服务。
2)Spring Boot可以离开Spring Cloud独立使用开发项目,但Spring Cloud必须依赖Spring Boot进行开发。
3.3Spring Cloud与Dubbo的区别
最大的区别是Spring Cloud抛弃了RPC远程调用,采用http的rest方式。
3.4SpringCloud版本匹配
SpringCloud的版本命名规则是根据伦敦地铁站的名字按字母顺序进行的。SpringCloud是基于SpringBoot的,因此两者的版本匹配很重要,具体的匹配规则如下:
SpringCloud整体版本 | 具体版本 | SpringBoot整体版本 | 具体版本 |
Hoxton | Hoxton.SR1 | 2.2.x | 2.2.2.RELEASE |
Hoxton.SR6 | 2.2.5.RELEASE |
除此之外其他的技术版本匹配如下:
技术 | 版本 |
jdk | 1.8+ |
maven | 3.5+ |
mysql | 5.7+ |
3.5环境的搭建
为了使得SpringCloud和SpringBoot版本的匹配,需要对它们进行版本锁定。这里SpringCloud使用Hoxton.SR1版本:
3.5.1使用maven版本锁定
1)创建一个maven的项目,删除src目录,在pom.xml中进行版本锁定:
<properties> <spring.boot.version>2.2.2.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR1</spring.cloud.version> </properties> <!-- 依赖管理,父工程锁定版本--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2)其他的子模块都在此模块的基础上开发即可。
3.5.2使用SpringBoot版本锁定
创建一个SpringBoot的项目,锁定方式和上述小节类似。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!