软件系统的模块类型有哪些:如何正确理解软件应用系统中关于系统通信的那些事
软件系统的模块类型有哪些:如何正确理解软件应用系统中关于系统通信的那些事根据人与人的交流的构成要素,抽象成计算机系统服务中对应的概念(行之有效的概念往往是简单且趋同的),系统间通信主要考虑以下三个方面:通信格式,通信协议,通信模型。具体详情如下:实现系统间通信主要的三个要素:通信格式,通信协议,通信模型。要想理解系统服务间的交流,拿我们人与人的交流来做类比是个不错的选择。我们都知道,人与人之间的实现交流的基本元素主要有以下几个方面:从而得知,系统服务间的交流的主要表现在以下几个方面:组成要素
苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》
写在开头
随着业务需求的发展和用户数量的激增,对于互联网应用系统或者服务应用程序则提出了新的挑战,也对从事系统研发的开发者有了更高的要求。作为一名IT从业研发人员,我们都知道的事,良好的用户体验是我们和应用系统间快速反馈,一直以来都是我们考量一个系统是否稳定和是否高效的设计目标,但是保证这个目标的关键之一,主要在于如何保证系统间的通信稳定和高效。从而映射出,如何正确理解软件应用系统中关于系统通信的那些事?是我们必须了解和理解的一项关键工作,接下来,我们就一起来总结和探讨一下。
基本概述
要想理解系统服务间的交流,拿我们人与人的交流来做类比是个不错的选择。我们都知道,人与人之间的实现交流的基本元素主要有以下几个方面:
- 能够相互听懂和理解的交流语言(即双方要基于相同的"协议"之下)
- 必要的传播介质(实在的物理介质,空气纸张等都行)
- 约定好的处理信息的方式(常见的一问一答 或是先记录后处理等表现形式)
从而得知,系统服务间的交流的主要表现在以下几个方面:
- 相同的通信原语:就像人类互相需要使用相同的语言进行交流,计算机服务也必须使用互相能识别的消息格式进行交互。
- 传播信息的介质:人类交流时往往需要某种介质传播信息,如空气、纸张甚至是眼神等。同样的,网络信息的传递也需要物理介质的帮助,以及工作在其上的一系列相关协议。
- 处理信息的方式:人类交流时可以是面对面直接问答形式的,也可能是邮件、短信等延时应答形式的,对应的是不同的业务场景,在计算机里进行通信处理方式。
- 实现通信方式:根据不同的协议都能实现通信功能的方式,一般基于一种或者至少一种协议实现。
组成要素
实现系统间通信主要的三个要素:通信格式,通信协议,通信模型。
根据人与人的交流的构成要素,抽象成计算机系统服务中对应的概念(行之有效的概念往往是简单且趋同的),系统间通信主要考虑以下三个方面:通信格式,通信协议,通信模型。具体详情如下:
- 通信格式(Communication Format): 主要是指实现通信的消息格式(Message Format),是表达消息内容等基本表现形式。常用的消息格式有xml JSON TLV等。
- 通信协议(Communication Protocol): 主要是指实现通信的网络协议(Network Protocol)。常见的TCP/IP协议,UDP协议等。
- 通信模型(Communication Model): 主要是指实现通信的网络模型(Network Model)。常见的模型主要有阻塞式通信模型,非阻塞式通信模型,同步通信模型,异步通信模型。
接下来,我们来详细解析这些组成要素:
- 对于消息格式来说,是帮助我们识别消息和表达消息内容的基本方式:
- XML:和语言无关,常用于对系统环境进行描述,如常见的maven仓库配置,或者spring配置等。
- JSON:轻量级消息格式,和语言无关。携带同样的信息,占用容量比XML小。
- Protocol Buffer:Google定义的消息格式,只提供了java,c 和python语言的实现。
- TLV:比JSON更轻量级的数据格式,连JSON中的"{}"都没有了。它是通过字节的位运算来实现序列化和反序列化。
- 对于网络协议来说,是帮助我们实现消息传输和传递的表达方式:
- 数据在网络七层模型中传递的时候,在网络层是"数据包",在数据链路层被封装成"帧"(数字信号),在物理层则是"比特"(电信号)。
- 不同的协议都能实现通信功能,最适合本系统的通信协议才是最好的。
- 对于网络模型来说,主要是帮助我们理解和选择适合当前场景的应用框架:
- 在计算机网路层面来说,常见网络模型主要有OSI 参考模型和TCP/IP 模型两种。
- 除此之外,还有linux 网络I/O 模型和Java JDK中的I/O 模型
网络协议