系统架构 | 青训营笔记

123 阅读3分钟

软件架构

定义:

  1. 软件整体结构与组件的流程描述
  2. 指导软件各个方面的设计
  3. 主要是在方法选择上进行指导 (WPF中的MVVM架构)

常见架构

从宽角度来看,系统架构可以分为:

  1. 单机架构:整个系统运行在单个服务器上,所有模块和存储都在同一物理节点。
  2. 分布式架构:系统运行在多台服务器上,通过网络互联。包括集群架构、SOA架构、微服务架构等。
  3. 服务架构:将系统按业务域拆分为多个服务,每个服务对应一个子系统,服务之间通过消息或API相互调用。代表有SOA架构和微服务架构。
  4. 事件驱动架构:通过事件触发服务调用,实现各个服务的解耦。代表有EDA架构。
  5. 数据中心架构:处理大规模数据的架构,包括 lambda 架构 、kappa 架构 等。
  6. 面向流的架构:处理流式数据的架构,代表有SMACK架构(Spark、Mesos、Akka、Cassandra、Kafka)。
  7. 除此之外,还有P2P架构、Grid架构、云计算架构等。单机架构属于最基本的架构类型,其特点是系统部署在单个物理机器上。随着需求规模变大和可靠性要求提高,系统会向分布式架构、服务架构等演进。

单机:把所有功能都在一个进程中实现,并部署在一台机器上(分布式部署,完全单线程,运维需要停服)

特点如下:

  1. 简单:单机架构非常简单,没有网络通信的复杂性,部署和维护简单。
  2. 易测试:因为系统的边界清晰,所有的功能都在一个进程内,所以很容易做集成测试和系统测试。
  3. 性能好:因为没有网络通信的开销,性能较高。所有模块都是本地调用,延迟低。
  4. 可靠性差:单点故障,一旦服务器 down 掉,整个系统都不可用。无法做到高可用。
  5. 扩展性差:硬件的性能有限,不易水平扩展。一旦需求超过单机处理能力,就需要重构为分布式系统。
  6. 容灾能力差:单机架构无法做到异地容灾,无法做到高可靠。一旦机房发生灾难,服务会完全中断。
  7. 安全性差:所有模块都在同一个进程内,一旦遭受入侵,整个系统都受到威胁。权限管理也相对困难。

垂直应用架构:按应用垂直切分的单体

  1. 水平扩容
  2. 且运维不用停服
  3. 开发效率不够高
  4. 爆炸半径大(出问题还是单线崩溃)

SOA:(Service-Oriented Architecture)

  1. 将应用的不同单元称为服务
  2. 定义服务之间的关系为通信标准
  3. 微服务架构:SOA去中心化的演进方向
  4. 在不同的服务中找到相同的步骤,由同样的线程去运行