跳到主要内容

架构导论

什么是架构?

架构是软件系统的形状。就好像是一个物理世界的建筑的全景:

  • 范式是砖块。
  • 设计原则是房间。
  • 组件是一幢建筑。

它们共同服务于特定的目的,例如医院是为治愈病人而设,学校是为教育学生而设。

我们为什么需要架构?

行为与结构

每个软件系统为利益相关者提供两种不同的价值:行为和结构。软件开发人员负责确保这两种价值都保持高水平。

==软件架构师由于其工作描述,更加关注系统的结构,而不是其特性和功能。==

终极目标 - ==每个功能节省人力资源成本==

架构为软件系统的整个生命周期提供服务,使其易于理解、开发、测试、部署和操作。目标是最小化每个业务用例的人力资源成本。

O’Reilly的书《软件架构模式》由Mark Richards撰写,是对这五种基本架构的简单而有效的介绍。

1. 分层架构

分层架构是最常见的架构,开发人员广泛熟知,因此是应用程序的事实标准。如果您不知道使用什么架构,请使用它。

示例

  • TCP / IP模型:应用层 > 传输层 > 网络层 > 网络接入层
  • Facebook TAO:网页层 > 缓存层(跟随者 + 领导者) > 数据库层

优缺点

  • 优点
    • 易于使用
    • 职责分离
    • 可测试性
  • 缺点
    • 单体
      • 难以调整、扩展或更新。您必须对所有层进行更改。

2. 事件驱动架构

状态变化将向系统发出事件。所有组件通过事件相互通信。

一个简单的项目可以结合中介、事件队列和通道。然后我们得到一个简化的架构:

示例

  • QT:信号和插槽
  • 支付基础设施:银行网关通常具有非常高的延迟,因此在其架构设计中采用异步技术。

3. 微内核架构(即插件架构)

软件的职责被划分为一个“核心”和多个“插件”。核心包含最基本的功能。插件彼此独立,并实现共享接口以实现不同的目标。

示例

  • Visual Studio Code,Eclipse
  • MINIX操作系统

4. 微服务架构

一个庞大的系统被解耦为多个微服务,每个微服务都是一个单独部署的单元,它们通过RPCs相互通信。

uber architecture

示例

5. 基于空间的架构

该模式得名于“元组空间”,意为“分布式共享内存”。没有数据库或同步数据库访问,因此没有数据库瓶颈。所有处理单元在内存中共享复制的应用数据。这些处理单元可以弹性启动和关闭。

示例:见维基百科

  • 主要在Java用户中采用:例如,JavaSpaces
References:Want to keep learning more?