软件系统架构
1. 软件系统架构概述
1.1 系统架构的定义
系统架构是计算机系统或软件系统的整体结构和组织方式,它描述了系统中各个组件之间的关系、功能划分、数据流动以及相互之间的交互方式。系统架构旨在实现系统的可靠性、可扩展性、可维护性和性能等方面的要求。
1.2 常见的软件系统架构
1.2.1 C/S(client/server)架构
C/S架构指的是一个系统功能实现分为客户端与服务器,客户端就是我们手机上的APP、电脑下载的各种客户端软件比如各种大型网络游戏软件,服务器指的是实现数据操作功能的计算机。
1.2.2 B/S(browser/server)架构
B/S架构指的是一个系统功能的实现分为浏览器与服务器,浏览器就类似于一个客户端,不过系统的直接用户是通过浏览器的方式与系统进行交互的。
1.2.3 微服务架构
微服务指的是将一个完整的系统功能在程序上拆分为一个个能够独立运行的服务程序,比如MES系统中可以将不同的功能进行拆分,排产、设备数据采集与监控、设备维修可以拆分为三个微服务,微服务与微服务之间可以通过接口调用实现联动。
1.2.4 分布式架构
分布式架构指的是将软件系统部署在多台服务器上,多台服务器可以并行运算、也可以独立运算,能够解决高并发问题使得负载均衡,保证很多人同时使用系统时的稳定性和系统运行速度。
2. 数据传输
2.1 数据传输的场景与意义
2.1.1 应用场景
- 前后端互动:在任何时间点,前端与后端之间都在进行数据的不断互动,这是为了确保信息能够在系统间无缝共享。
- 与第三方平台的集成:例如,当需要使用其他系统数据时,如调用xx系统标题和正文,这就需要跨系统传输数据,从其他平台获取数据。
- 调用公共插件:为了避免“重新发明轮子”,许多开放性功能插件可供调用或集成,如xx系统开放了许多API接口,以便二次开发等。
2.1.2 数据传输的意义
- 资源与功能的有效利用:通过共享和传输数据,可以避免重复创建数据库,从而减少资源和功能的浪费。
- 统一数据源:统一数据的维护和生产源头,可以避免在相同公司的不同系统间数据不一致的问题,确保信息的准确性和一致性。
- 利用外部数据:有些数据是无法由自己产生的,因此需要利用现有的资源,如API或SDK,来共享他人的数据或功能,这不仅节省了时间,还可能因技术限制而无法自行开发的功能。
2.2 数据传输的方式
2.2.1 接口传输
- 常见形式:接口传输是最基础且广泛使用的数据传输方式之一,它支持客户端与服务器之间的交互模式。
- 接口的作用:接口允许系统调用第三方功能插件(例如API接口),或者根据特定需求开发定制化接口解决信息传输问题(例如HTTP接口)。
- 接口创建原则:谁负责创建接口? 数据传输的需求方通常是接口的请求方,而接口则应由提供数据的一方创建。
- 数据获取方式:主动获取 vs. 被动推送。
- 接口传输细节:GET vs. POST。
- 接口的特点总结:优点与缺点。
2.2.2 消息队列MQ
- MQ概念:消息队列(MQ)是分布式系统中用于交换信息的一种技术,允许应用程序异步地发送和接收数据。
- 异步处理示例:考虑用户注册场景,需要发送注册邮件和短信。
- 异常情况处理:首次消费失败、消息积压处理。
- MQ与其他数据传输方式对比。
2.2.3 其他数据传输手段
- 导入导出:适用于系统间无法直接对接但线下可获取数据的场景。
- 爬取:当无法通过官方接口获取数据时,可通过爬虫技术抓取所需信息。
2.3 数据传输的处理机制
2.3.1 操作事件触发
- 例如,用户点击页面按钮即触发数据的最新状态同步。
2.3.2 异步机制
- 适用于时效性要求不那么高的情况,通过定时运行脚本监控数据变化。
2.4 数据的使用方式
2.4.1 直接通过接口调取显示
2.4.2 先保存到本地数据库后再进行调用
3. 数据库基本知识
3.1 关系型数据库(Relational Database Management System, RDBMS)
3.1.1 关系型数据库的定义
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。它使用表、行和列的结构来组织数据,数据之间通过关系进行连接。关系型数据库通常使用SQL(Structured Query Language)作为查询语言。
3.1.2 常见的关系型数据库
- MySQL
- Oracle
- SQL Server
- PostgreSQL
- SQLite
3.1.3 关系数据库的优缺点
3.1.4 关系数据库的案例分析
3.2 非关系型数据库(NoSQL)
3.2.1 非关系型数据库的定义
为了解决关系数据库面临的可扩展性、高并发以及性能方面的问题,各种各样的非关系数据库风起云涌,这类系统成为NoSQL系统,可以理解为“Not Only SQL”系统。
3.2.2 常见的非关系型数据库
- 内存数据库(In-Memory Database)
- 文件数据库(Document Database)
- 图数据库(Graph Database)
- 列式数据库(Column-Oriented Database)
3.2.3 非关系型数据库的优缺点
3.2.4 非关系型数据库的案例分析
3.3 分布式数据库
3.3.1 分布式数据库的定义
分布式数据库一般是从单机关系数据库扩展而来,用于存储结构化数据。分布式数据库采用二维表格组织数据,提供SQL关系查询语言,支持多表关联,嵌套子查询等 复杂操作,并提供数据库事务以及并发控制。
3.3.2 常见的分布式数据库
3.3.3 分布式数据库的优缺点
3.3.4 分布式数据库的案例分析
3.4 数据库设计
3.4.1 数据库设计的基本原则
- 一致性原则
- 完整性原则
- 安全性原则
- 可伸缩性与可扩展性原则
- 规范化原则
3.4.2 数据模型选择
- 维度模型
- 范式模型
3.4.3 表结构设计
- 命名规范
- 规范化




