🔢前言
当今软件架构中,拥有四代软件架构。这四个都是基于所在时代,技术,需求等多种因素应运而生的。
在未来是否会有第五代软件架构,无人可知。笔者大胆推测,这第五代很可能与人工智能的大语言模型有关🫣。
🔢四代软件架构
1️⃣第1代 单体架构
单体架构顾名思义,就是将所有功能集中在单个应用中。
注意,Linux内核是单体架构,但不妨碍其也是模块化的。
🫡优点
- 技术单一不复杂
- 部署
- 测试容易
- 集成和扩展相对容易
🤔缺点
- 具有极强的耦合度
- 一个功能的崩溃可能导致整个程序的崩溃
- 技术单一,开发效率低下
- 随着开发时间增长,维护难度也增大
2️⃣第2代 面向服务架构(SOA)
Service Oriented Architecture
多个应用垂直分层。系统之间通过 Service API 和中心化管理的企业服务总线进行交互。
🫡优点
- 调用层架划分,模块化
- 接口规范和标准化
- 可跨平台发布
🤔缺点
- 严重依赖总线
- 服务粒度问题
- 垂直分层中的某一层崩溃,可能导致整个应用无法服务
SOA 的支持者提出一份宣言,主要包括下面几点:
- 业务价值高于技术战略
- 战略目标高于特定项目的收益
- 内在互操作性高于定制集成
- 共享的服务高于特定目标的实现
- 灵活性高于优化
- 不断演进的提炼高于在最开始追求完美
3️⃣第3代 微服务架构
水平分层和垂直分层相结合,应用分割成一组松耦合的服务。采用轻量级通信机制。
🫡优点
- 模块化
- 易测试
- 替换系统模块时更灵活
- 可与旧系统集成:不需要迁移整个应用程序,只需要迁移当前开发的部分
- 支持分布式开发:开发团队可以并行地处理多个微服务
- 可伸缩性:一个微服务可以独立于其他微服务进行扩展
- 可快速迭代和持续交付
🤔缺点
- 需要成熟的 DevOps 方法并依赖于 CI/CD 自动化
- 更难调试,并需要更好的监控和分布式追踪机制
- 对较小的应用程序来说,额外的开销可能会超出过带来的好处
- 需要准确的划分服务内容
4️⃣第4代 云原生结构
基础是第三代微服务架构,将容器变为云端。通过资源动态管理,docker容器技术,Service Mesh 服务网站,API 服务化,持续集成/持续部署(CI/CD)等技术,实现实现应用程序的快速迭代、高效开发和高可靠性。
🫡优点
- 云的优势
- 快速迭代和部署
- 高可用性
- 持续交付,高效
🤔缺点
- 云的劣势
- 技术复杂
- 安全性的挑战
- 管理和监控复杂
- 部署麻烦
⭐END
🌟关注我
关注我,学习更多C/C++,算法,计算机知识
B站:
👨💻主页:天赐细莲 bilibili