架构初探丨青训营笔记
这是我参与「第五届青训营」笔记创作活动的第 12 天。
一、本堂课重点内容
本堂课围绕架构的定义和演进两部分内容展开,并详细介绍了企业级后端架构的形态,进一步讲解了企业级架构目前面临着哪些挑战及其解决方案,最后结合所有知识点,结合实践细致讲解如何做结构设计。
二、详细知识点介绍
1. 架构
定义
架构(Architecture)是指任何系统的结构或组织方式,包括软件系统、计算机系统、企业系统等。在计算机科学中,架构通常指软件系统的结构,也就是软件系统各个组成部分之间的关系,以及这些组成部分如何协同工作以实现特定的功能。软件架构设计通常涉及到决策,例如选择编程语言、开发框架、部署环境、数据库和服务器等。
软件架构是软件开发中的一个重要环节,良好的软件架构可以使软件更易于维护和扩展,从而为用户提供更好的体验。
单机架构
单机架构(Single-machine architecture),也称为单体应用程序(Monolithic Application),其特点是将整个应用程序作为一个单独的整体运行在单台计算机上。
优点:
- 简单
缺点:
- 运维需要停服,用户体验较差
- 承载能力有限
单体架构
单体架构(Monolithic Architecture)将整个应用程序作为一个单独的整体打包和部署。在单体架构中,应用程序的所有组件都运行在同一个进程中,共享同一个数据库或文件系统。
优点:
- 具备水平扩容能力
- 运维不需要停服
缺点:
- 后端进程职责太多,越来越臃肿
- 爆炸半径较大,进程中一个很小的模块出现问题,都可能导致整个进程崩溃
垂直应用架构
垂直应用架构(Vertical Application Architecture)将整个应用程序按照业务功能拆分为不同的模块,每个模块都负责处理特定的业务功能。每个模块都是完整的应用程序,可以独立运行和部署,而模块之间通过接口进行通信。
优点:
- 一定程度上减少了后端进程职责
- 一定程度上缩小爆炸半径
缺点:
- 没有根本解决单体架构的问题
SOA (面向服务架构)
SOA,全称为面向服务架构(Service-Oriented Architecture),其核心理念是将应用程序拆分为一系列的服务,每个服务都是一个独立的、自治的组件,可以在不同的系统中被调用和重用。
优点:
- 各服务的职责更清晰
- 运维粒度减小到服务,爆炸半径可控
缺点:
- ESB (企业服务总线) 往往需要一整套解决方案
微服务
微服务(Microservices)将一个大型的应用程序拆分成多个小型的、独立的服务,每个服务都有自己的数据库、业务逻辑和用户界面,可以独立部署和扩展,各个服务之间通过轻量级的通信协议进行交互。
优点:
- 兼具 SOA 解决的问题
- 服务间的通信更敏捷、灵活
缺点:
- 运维成本
2. 企业级后端架构剖析
今日时间紧迫,见下一篇笔记~
三、课后个人总结
在这堂课程中,首先学习了架构的演进,主要包括了计算机系统架构的不同层次,以及各种不同的架构模式,包括单机架构、单体架构、垂直应用架构、SOA架构和微服务架构。
其中,不同的架构模式适用于不同的场景和需求,我们需要根据具体的应用场景和业务需求选择合适的架构模式。同时,架构演进也是一个不断迭代和改进的过程,我们需要根据应用程序的发展和变化不断调整和优化架构。