系统架构

1、基本概念

系统架构 = 业务架构 + 软件架构

业务架构
从业务需求的角度出发,理清物理结构图和逻辑结构图,划分出每一个子模块。肯定为何要这么划分,各个子模块之间如何交互,每一个子模块具备哪些接口。html

软件架构
从解决技术上讨论采用什么样的技术,如何分层,采用哪些好的技术特性,采用这些技术特性会为咱们的工做带来哪些好处,为何要这么作。算法

2、架构目标

1. 可靠性

系统可靠性通常是指在规定的时间内和规定的工况下,系统完成规定功能的能力/几率。

软件差错是软件开发各阶段潜入的人为错误。数据库

  1. 需求错误。 如用户提出的需求不完整,用户需求的变动未及时消化,软件开发者和用户对需求的理解不一致等。
  2. 设计错误。 如处理的结构和算法错误,缺少对特殊状况和错误处理的考虑等。
  3. 编码错误。 如语法错误,变量初始化错误等。
  4. 测试错误。 如数据准备错误,测试用例错误等。
  5. 文档错误。 如文档不齐全,文档相关内容不一致,文档版本不一致,缺少完整性等。

2. 安全性

计算机系统安全性包含两部份内容:一是保证系统正常运行,避免各类非故意的错误与损坏;二是防止系统及数据被非法利用或破坏。

因为应用系统中可能涉及资金、客户信息等重要、敏感的数据,为此需采起有效的手段确保应用系统安全。编程

  • 严禁原则
  • 必须原则
  • 尽量原则

3. 可伸缩性

软件必须可以在用户的使用率、用户的数目增长很快的状况下,保持合理的性能。只有这样,才能适应用户市场扩展的可能性。

4. 可扩展性

在新技术出现的时候,一个软件系统应该当容许导入新技术,从而对现有系统进行功能和性能的扩展。

5. 可定制化

一样的一套软件,能够根据客户群的不一样和市场需求的变化进行调整。

6. 可维护性

软件系统的维护包括两方面:一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统能够有效地下降技术支持的花费。

7. 客户体验

软件系统必须易于使用。

8. 市场时机

软件用户要面临同行竞争,软件提供商也要面临同行竞争。以最快的熟读争夺市场先机很是重要。

3、常见软件架构模式

clipboard.png

1. 分层模式

该模式用于构建可分解为多组子任务的程序,每一个子任务都在某个抽象层,每一个层对上一个更高层提供服务。

通常信息系统中最多见的4层体系以下安全

  • 表示层(也叫 UI 层)
  • 应用层(也叫服务层)
  • 业务逻辑层(也叫领域层)
  • 数据访问层(也叫持久层)

应用场景服务器

  • 通常桌面程序
  • 电子商务网页程序
  • TCP/IP 协议栈

clipboard.png

2. 客户端-服务器模式

该模式也叫C/S模式,由两部分构成:单个服务器和多个客户端。服务器组件对多个客户端组件提供服务。客户端向服务器请求服务,服务端提供对应服务给这些客户端。此外,服务器端继续监听客户端请求。

应用场景网络

  • 在线应用,好比电子邮件、文档分享和银行业务
  • 软件升级系统

clipboard.png

3. 主从模式

该模式由两部分构成:主节点和多个子节点。主节点组件向多个独立的从节点组件分派任务,并根据从节点返回结果计算出最终结果。

应用场景架构

  • 数据库复制,主数据库被视为权威来源并同步到从数据库
  • 链接到计算系统的外围设备(主从驱动)
  • 负载均衡系统(我的理解)

clipboard.png

4. 管道-过滤器模式

该模式用于构建生产和处理数据流的系统。每一个处理步骤封装在一个过滤组件中。待处理的数据被传送到管道之中,这些管道可用于缓冲或者同步。

应用场景负载均衡

  • 编译器,链接的过滤器执行词义分析,语法分析,语义分析和代码生成
  • 生物资料学科的工做流
  • Gstreamer、DirectMusic

clipboard.png

5. 代理模式

该模式用于构建组件解耦的分布式系统。这些组件经过远程调用彼此交互。代理组件负责多个组建的通讯协调,服务器向代理公开他们的功能(服务和特性);客户端从代理中获取服务,而后代理重定向客户端到注册服务库中一个合适的服务。

应用场景框架

  • 消息队列软件,好比 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging

clipboard.png

6. 点对点模式

该模式中各独立组件都叫对等点。对等点既能够做为客户端从其余对等点获取服务,也可做为服务端向其余对等点提供服务。对等点可做为客户端、或者服务端、或者二者,而且在不一样时间切换角色。

应用场景

  • 文件分享网络,好比 Gnutella、G二、电驴、迅雷
  • 多媒体协议,好比 P2PTV 和 PDTP
  • 私媒体程序,好比 Spotify

clipboard.png

7. 事件总线模式

该模式主要处理事件,有4个主要组件:事件源、事件监听器、频道和事件总线。事件源发布消息到事件总线上的某个频道,监听器订阅某个频道,并得知在已订阅频道中发布的消息。

应用场景

  • Android 开发
  • 通知服务
  • DBus

clipboard.png

模型-视图-控制器模式

该模式也叫 MVC 模式,划分交互程序为3个部分:模型-包含核心功能和数据,视图-显示信息给用户(多个视图可被定义),控制器-处理用户输入。它经过分割用户信息的内部陈述和呈现、接受方式来实现,解耦组件并容许高效的代码复用。

应用场景

  • 主流编程语言的万维网程序架构
  • 网页框架,好比 Django 和 Rails
  • 最经典的莫过于 MFC

clipboard.png

9. 黑板模式

该模式对没有肯定性方案策略的问题颇有用。黑板模式由三个主要组件构成:黑板-包含解决空间对象的结构化全局内存,知识源-拥有自表示的专门模块,控制组件-选择、配置和执行模块。全部组件均可访问黑板,可生成新的数据对象并添加到黑板中。在黑板中,可根据已有知识源的匹配规则,寻找某些类型的数据。

应用场景

  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声纳信号解释

clipboard.png

10. 解释器模式

该模式用于设计解释特定语言编写的程序的组件。该组件主要指定怎么去评估程序代码行,也就是所谓的用某种语言写的语句或者表达式,基本点在于给语言符号分类。

应用场景

  • 数据库查询语言,好比 SQL
  • 用于描述通讯协议的语言

clipboard.png

4、中英文对照表

中文 英文
架构 Architecture
架构师 Software architect
可靠性 Reliable
安全性 Secure
可伸缩性 Scalable
可定制化 Customizable
可扩展性 Extensible
可维护性 Maintainable
客户体验 Customer Experience
市场时机 Time to Market

5、参考连接