软件架构

330 阅读4分钟

1.架构的分类

4层分类由TOGAF机构制定

  1. 业务架构:从业务的视角看待整个系统,系统分为哪些具体的模块。业务流,数据流,资金流。如:DDD 领域驱动设计
  2. 应用架构:独立的进程就是一个应用,如微服务。多服务之间相互调用的关系,用什么机制调用,如:同步异步,内存共享,RPC。如:mvc,soa,微服务是一种架构设计的模式。
  3. 数据架构:系统有哪些数据,图片文件数据,关系数据库库表模型,包括大数据,描述数据如何加工和转化。
  4. 技术架构:具体的技术选型,框架,中间件,使用那种数据库,考虑对应的内存,cpu,磁盘空间。 一般业务决定技术,先基于业务再确定技术。如:架构spring,中间件redis ,第三方库 jdk

2.框架和架构的区别

  • 框架:是framework,他实现特定领域的共性的基础部分,并提供可以扩展能力。是领域内特定的语言和技术的架构应用解决方案。目的是为了抽象通用化高效的解决问题。关注的是规范,是软件,是一通用的解决方案。
  • 架构:是architecture,是关于软件如何设计的策略,关注的是真个体结构与组件的抽象描述, 为了解决系统的复杂度带来的问题,目标为了用最小人力成本来满足构建和维护系统的需求。是软件的抽象,便于大局拆解,局部细化。

3.常见的4种系统架构

3.1单体应用/分层架构

  • 三层架构,应用层,业务层,数据层
  • 分层架构模式是 n 层架构模式,其中的组件分布在其中,而且每一层都是独立的。

3.2分布式应用/SOA

  • Service-Oriented Architecture,是一种面向服务的架构
  • 把一个系统划分为不同的业务模块,比如用户模块,订单模块,然后独立部署各个业务模块服务。
  • 是单体应用的并发拓展。业务模块直接通过接口互相调用,有效提高系统的负载能力,解决高并发需求。
  • 注意集群是相同的代码部署多套环境,分布式是指部署不同的应用服务。

3.3微服务架构

  • 把系统拆分成很多个小应用,通过持续交付,部署。来加速软件开发的速度。
  • 服务可以独立的拓展,有更强的容错性,易于维护,单个应用有问题不影响其他系统。
  • 由于是单应用独立部署,所以可以在不同的应用使用不同新技术。降低试错成本。

3.4serverless架构/云架构

开发无需关心应用的服务资源,有平台按需分配。通过SLAV服务等级协议,按次数收费,精准有效的节约应用成本。

4.其他系统架构

微内核模式

  • 微内核架构模式也称为插件架构模式。它通常在创建具有可更换组件的系统时使用。
  • 如:webpack或者vscode的plugin

事件驱动模式

这是用于开发高可伸缩性系统的最常见的分布式异步架构。该架构由单一用途的事件处理组件组成,这些组件监听事件并异步处理它们。事件驱动的架构构建了一个接受所有数据的中央单元,然后将其委托给处理特定类型的单独模块。

基于空间的模式

  • 基于空间的架构模式是专门为解决可伸缩性和并发性问题而设计的。对于并发用户量可变且不可预测的应用程序,它也是一种有用的架构模式。通过去除中央数据库的限制,使用可复制的内存网格,可以实现高可伸缩性。
  • 基于空间的架构旨在通过在多个服务器之间拆分逻辑处理和存储来避免高负载下的功能崩溃。

5.前端技术架构

一般使用单体分层架构

  • 访问层
  • 应用层
  • 接口层
  • 数据层