软件架构(一)

软件架构

软件架构和软件设计是同一主题的两个方面。两者都是关于软件如何结构化以执行其任务。“软件架构”一词通常指的是软件系统的一个大体核心骨架,而“软件设计”通常指的是细节的设计和实现。

架构和设计之间的界限是很难定义的,因为系统的体系结构也影响它的设计。较大结构的设计影响较小结构的设计。为了区分它们,我在进程级别设置了边界。因此,软件设计是单个软件过程的内部设计(系统组件交互),而软件架构(多进程协作)涉及多个软件协作。


那么软件架构的定义如何与“分布式系统”相适应?在我看来,软件架构提供了各种分布式算法可以运行的基本结构。是的,这两个术语之间有一定的重叠,但是各种不同的分布式算法可以在相同的底层架构之上运行。

软件架构也受整个系统(软件+硬件)的硬件结构的影响。您可能根据您使用的硬件而需要使用不同的架构。或者,您也可以根据您的架构选择不同的硬件。

通用软件架构

有许多不同类型的体系结构,但是一些架构模式比其他模式更常见。以下是常用软件体系结构模式的列表:

  • 单机软件。
  • 客户机/服务器(2层架构)。
  • 3层架构(3个进程的协作链)。
  • n层架构(n个进程的协作链)。
  • 面向服务的架构(底盘个进程相互作用)。
  • 点对点架构(多个进程在没有中央服务器的情况下相互协作)。
  • 混合架构-以上架构的组合。

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

进程沟通渠道

进程通常有三个相互通信媒体,分别是:

  • 网络
  • 磁盘

进程可以通过网络彼此通信。通过网络,进程可以与运行在同一计算机上的进程通信,或者与在不同计算机上运行的进程通信,前提是运行进程的两台计算机与计算机网络连接。

运行在同一台计算机上的进程也可以通过计算机的硬盘(或像USB盘等的其他磁盘)相互通信。进程A可以将文件写入到进程B所处理的磁盘中。也可以从进程B中写入然后进程A读取文件。

进程还可以通过网络存储进行通信,网络存储本质上是连接到计算机网络的硬盘。这样的过程还可以通过网络和磁盘通信的组合与在不同计算机上运行的进程进行通信。

根据进程运行的操作系统,在同一机器上运行的进程也可以通过管道相互通信。管道是操作系统为进程提供的通信通道。通信方式与网络通信一样,但是交换的消息被保持在计算机的RAM内。管道可以比网络通信更快,因为当通信进程在同一台计算机上运行时,可以消除大量的网络协议开销。

进程还可以通过RAM磁盘进行通信,RAM磁盘是分配在计算机RAM中的虚拟硬盘。RAM磁盘看起来像磁盘,但比磁盘快得多,因为数据只存储在RAM中。

进程通信模式

  • 同步模式。
  • 异步模式。

当进程A与进程B同步通信时,意味着进程A向进程B发送消息,等待B回复。过程A在从过程B得到答复之前不做任何事情。

当两个进程异步通信时,进程互相发送消息,而无需等待对方回复。进程A可以向进程B发送消息,然后继续其他一些工作。在某个时刻,进程B将消息发送回处理A,并在进程A有时间的时候处理该进程的消息。

同步和异步通信具有不同的优点和用例。可以使用异步通信实现同步通信,或者使用同步通信来实现异步通信。

这里说明了同步和异步通信模式:


参考地址:http://tutorials.jenkov.com/software-architecture/index.html

猜你喜欢

转载自blog.csdn.net/lanyage_csdn/article/details/80640547
今日推荐