1.架构分类
1.单体架构
用大白话来说:就是一个项目里包含了这个项目的所有代码。
而专业性地来说:就是将业务的所有功能都集中在一个项目中进行开发,并打包部署。
而单体架构只需要将开发好地项目打包成war包,然后发布到Tomcat服务器中运行即可。
在单体架构项目中,通过Package来区分多个模块:
优点:
- 架构简单,易于开发
- 易于部署,生产成本低
缺点:
- 耦合度高
- 可靠性差:一个问题可能会引起整个项目地崩溃。
- 复杂性差:项目难以修改和重构。
- 伸缩性差:整体只能横向扩展,无法分模块垂直扩展。
- 维护成本高:一个功能出现问题,可能会引起另一个功能不可用。
- 吞吐量小:tomcat处理的请求的并发量受限
可见,单体架构虽然架构简单,易于部署,但是存在的问题还是很多的。也就是为了解决单体架构存在的问题,才会有分布式架构的横空出世!!!
2.分布式架构
根据业务功能对系统进行拆分,每个业务模块都作为一个独立的工程,称为一个服务。
优点:
- 与单体架相比,降低了耦合度: 一个功能出现问题,不会影响到其他功能的使用
- 服务升级扩展强:只需要添加新的模块到项目中即可
- 吞吐量大:每个服务都有单独的Tomcat和数据库
缺点:
- 技术要求高
- 架构更加复杂
- 生产成本高
2.微服务
微服务是一种经过良好架构设计的分布式架构方案,提倡将单一的应用程序拆分成各个独立的小的服务,服务之间相互协调,相互配合,互不影响
微服务架构的特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复开发
- 面向服务:微服务对外暴露接口
- 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
优点:
- 拆分粒度更小,服务更独立,耦合度低
缺点:
- 架构非常复杂,运维、监控、部署难度提高
1.微服务结构
在国内最知名的就是Springcloud和阿里巴巴的Dubbo,以及后来的SpringCloudAlibaba
微服务技术对比
2.SpringCloud
-
SpringCloud是目前国内使用最广泛的微服务框架。官方地址:SpringCloud官网
-
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
SpringCloud和SpringBoot的版本兼容(更新于2022):