知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如有侵权请私信我。
1 单体架构
单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:
- 架构简单;
- 部署成本低;
适合面向于一些企业内部使用的简单项目。
缺点:
- 耦合度高。
开发过程中,模块之间你中有我我中有你,它们之间的边界也会变得很模糊。耦合度高,不利于大型项目开发。
2 分布式架构
分布式架构: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
优点:
- 降低服务耦合;
- 有利于服务升级拓展;
缺点:
- 服务调用关系错综复杂。
服务拆分的越多,将来部署也会越复杂。拆分的过程中也会面临一些问题。
做了拆分之后,不同服务部署在不同的机器上。这个时候要调用对方,从一个服务向另一个服务发请求:我来调用你。这样的调用叫做远程调用 。跨越了机器,服务的调用。
2.1 服务治理
分布式架构要考虑的问题:
- 服务拆分粒度如何?
哪些服务作独立模块呢?哪些业务在一起?需要把握粒度。 - 服务集群地址如何维护?
- 服务之间如何实现远程调用?
- 服务健康状态如何感知?
在解决这些问题的过程中,出现了各种各样的技术:如WebService,Hession,ESB,SpringCloud,Dubbo等。
近年来最火的就是微服务方案。
3 微服务
微服务: 是一种经过良好架构设计的分布式架构方案。
3.1 微服务架构特征
-
单一职责: 微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
-
面向服务: 服务提供统一标准的接口,与语言和技术无关。
-
自治: 团队独立、技术独立、数据独立,独立部署和交付。
团队独立:按微服务划分;
技术独立:独立团队各自开发,用擅长的技术。或者基于业务选择,互不影响。
数据独立:每个微服务有自己独立的数据库。
部署独立:独立部署;用户在访问微服务时,可以基于需求访问任意的业务服务。 -
隔离性强: 服务调用做好隔离、容错、降级,避免出现级联问题。
微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。
因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。
但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。
其中在Java领域最引人注目的就是SpringCloud提供的方案了。
4 小结
单体架构特点?
- 简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统。
分布式架构特点?
- 松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东,淘宝。
微服务:一种良好的分布式架构方案
- 优点:拆分粒度更小,服务更独立,耦合度更低。
- 缺点:架构非常复杂,运维,监控,部署难度提高。
By–Suki 2022/12/29