架构初探(上)丨青训营笔记

119 阅读4分钟

架构初探丨青训营笔记

这是我参与「第五届青训营」笔记创作活动的第 12 天。

一、本堂课重点内容

本堂课围绕架构的定义和演进两部分内容展开,并详细介绍了企业级后端架构的形态,进一步讲解了企业级架构目前面临着哪些挑战及其解决方案,最后结合所有知识点,结合实践细致讲解如何做结构设计。

二、详细知识点介绍

1. 架构

定义

架构(Architecture)是指任何系统的结构或组织方式,包括软件系统、计算机系统、企业系统等。在计算机科学中,架构通常指软件系统的结构,也就是软件系统各个组成部分之间的关系,以及这些组成部分如何协同工作以实现特定的功能。软件架构设计通常涉及到决策,例如选择编程语言、开发框架、部署环境、数据库和服务器等。

软件架构是软件开发中的一个重要环节,良好的软件架构可以使软件更易于维护和扩展,从而为用户提供更好的体验。

单机架构

单机架构(Single-machine architecture),也称为单体应用程序(Monolithic Application),其特点是将整个应用程序作为一个单独的整体运行在单台计算机上。

优点:

  • 简单

缺点:

  • 运维需要停服,用户体验较差
  • 承载能力有限

单体架构

单体架构(Monolithic Architecture)将整个应用程序作为一个单独的整体打包和部署。在单体架构中,应用程序的所有组件都运行在同一个进程中,共享同一个数据库或文件系统。

优点:

  • 具备水平扩容能力
  • 运维不需要停服

缺点:

  • 后端进程职责太多,越来越臃肿
  • 爆炸半径较大,进程中一个很小的模块出现问题,都可能导致整个进程崩溃

垂直应用架构

垂直应用架构(Vertical Application Architecture)将整个应用程序按照业务功能拆分为不同的模块,每个模块都负责处理特定的业务功能。每个模块都是完整的应用程序,可以独立运行和部署,而模块之间通过接口进行通信。

优点:

  • 一定程度上减少了后端进程职责
  • 一定程度上缩小爆炸半径

缺点:

  • 没有根本解决单体架构的问题

SOA (面向服务架构)

SOA,全称为面向服务架构(Service-Oriented Architecture),其核心理念是将应用程序拆分为一系列的服务,每个服务都是一个独立的、自治的组件,可以在不同的系统中被调用和重用。

优点:

  • 各服务的职责更清晰
  • 运维粒度减小到服务,爆炸半径可控

缺点:

  • ESB (企业服务总线) 往往需要一整套解决方案

微服务

微服务(Microservices)将一个大型的应用程序拆分成多个小型的、独立的服务,每个服务都有自己的数据库、业务逻辑和用户界面,可以独立部署和扩展,各个服务之间通过轻量级的通信协议进行交互。

优点:

  • 兼具 SOA 解决的问题
  • 服务间的通信更敏捷、灵活

缺点:

  • 运维成本

2. 企业级后端架构剖析

今日时间紧迫,见下一篇笔记~

三、课后个人总结

在这堂课程中,首先学习了架构的演进,主要包括了计算机系统架构的不同层次,以及各种不同的架构模式,包括单机架构、单体架构、垂直应用架构、SOA架构和微服务架构。

其中,不同的架构模式适用于不同的场景和需求,我们需要根据具体的应用场景和业务需求选择合适的架构模式。同时,架构演进也是一个不断迭代和改进的过程,我们需要根据应用程序的发展和变化不断调整和优化架构。

四、引用参考