《软件架构》总览

原文连接 译者:xiaohua 校对:方腾飞html

注意:本教程仍在更新,它将被一点点完善,可是如今你仍能够从中学到一些东西。java

软件架构和软件设计是一个话题的两个不一样方面,它们都是关于如何构造软件来完成任务的,一般软件架构是指软件系统中较大的结构,而软件设计指较小的结构。算法

由于系统架构影响着软件设计,因此很难准肯定义软件架构和软件设计的边界。较大结构的设计影响着较小结构的设计。为了使本教程更有意义(即包含哪些内容),我经过进程来作区分,软件设计考虑单个软件进程的内部设计,而软件架构考虑如何设计多个软件进程合做完成它们的任务。sql

图1

我对软件架构的定义是如何适用于分布式系统,依我来看,软件架构提供了能够运行各类分布式算法的基本结构。虽然软件架构和分布式系统之间存在必定的重叠,可是各类不一样的分布式算法均可以在相同的基础架构之上运行。编程

整个系统(软件+硬件)的硬件架构也影响着软件架构。你可能须要根据不一样的硬件设计不一样的软件架构。或者根据不一样的软件架构选择不一样的硬件。服务器

经常使用软件架构网络

软件架构有不少种,有些比较经常使用,下面列举一些经常使用的软件架构模型: 架构

  • 单进程
  • 客户端/服务器(2个进程交互)
  • 3层系统(3个进程串行交互)
  • N层系统(N个进程串行交互)
  • 面向服务的系统(大量进程交互)
  • 混合架构(上面这些架构的组合)
  • 对等架构(有中央服务器的状况下,大量进程交互)

下面是这些架构的简单说明。并发

图2

进程通信渠道异步

进程一般有三种通讯媒体。他们是:

  • 网络
  • 磁盘
  • 管道

进程间能够经过电脑网络进行通讯。经过网络,只要运行着进程的两台电脑经过网络链接,那么一个进程能够和运行在同一台电脑上的进程通讯,也能够和运行在不一样电脑上的进程通讯。

运行在同一台电脑上的进程也能够经过电脑硬盘进行通讯(或其余磁盘,例如USB磁盘等。)进程A能够将由进程B处理的文件写入磁盘。进程B也能够发送一个磁盘中的文件做为回复,以后线程A读取该答复。

进程也能够经过网络存储进行通讯,网络存储本质上是链接到计算机网络的硬盘。这样,进程也能够经过网络和磁盘通讯的组合与运行在不一样计算机上的进程进行通讯。

依靠运行着进程的操做系统,运行在相同机器上的进程能够经过管道通讯。管道是操做系统为进程提供的通讯渠道。经过管道的通讯就像网络通讯同样,可是交换的消息保留在计算机内部的RAM中。管道比网络通讯更快,由于当通讯进程在同一台计算机上运行时,能够避免许多网络协议开销。

进程也能够经过RAM磁盘进行通讯,RAM磁盘是分配在计算机RAM中的虚拟硬盘。对于进程来讲,RAM磁盘就像磁盘同样,但它比磁盘快得多,由于数据仅存储在RAM中。

进程通讯模式

进程通讯有两种模式:

  • 同步模式
  • 异步模式

当进程A与进程B同步通讯时,表示进程A向进程B发送消息并等待B答复。进程A在收到进程B的答复以前不会作任何事情。

当两个进程异步通讯时,这两个进程相互发送消息,而无需等待答复。进程A能够给进程B发送一条消息后继续去作其余工做。在某个时候,进程B回复进程A一条消息,当进程A有时间时,再来处理这条消息。

同步和异步通讯各有优势和用处。你可使用异步通讯来实现同步通讯,也可使用同步通讯来实现异步通讯。

同步和异步通讯模式以下图所示:

图3

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文连接地址:  《软件架构》总览

FavoriteLoading添加本文到个人收藏
相关文章
相关标签/搜索