系统架构

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、参考连接

相关文章
相关标签/搜索