面向消息的持久通信与面向流的通信简要总结

Posted 超大的皮卡丘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向消息的持久通信与面向流的通信简要总结相关的知识,希望对你有一定的参考价值。

一、面向消息的持久通信  

消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。

消息队列模型

  应用程序可以通过在特定队列中插入消息来进行通信。消息由一系列通信服务器依次进行转发,最终送达目的地。即使在消息发送过程中接收方的机器未处于运行状态,消息也能送到。

  消息队列系统的重要特征之一是,通常只能确保发送方发出的消息最终能插入到接收方的队列中,并不保证消息到达的时间,甚至不保证消息一定会得到读取,这完全由接收方来决定。

  

  消息转换器可以像一个消息格式重新编排工具一样简单。比如说,假定输入的小细胞含有数据库中的一张表,其中,记录之间通过特殊的代表记录结束的分隔符来分割,而记录中的字段长度已知且固定。如果目的应用程序希望使用另外的分隔符来分割记录,并且希望字段是可变长度,就需要使用消息转换器来讲消息格式转换为目的应用程序所能够接受的格式。

  普通消息队列系统的目标并不仅仅在于为最终用户提供支持,建立这样的系统要解决的重要问题是:要为进程间的持久通信提供支持,无论该进程是在运行用户程序,在处理对数据库的访问,还是在进行计算等,都必须能够支持其通信。 比如说:一个设计若干个数据库查询可能需要切分成为几个子查询,然后将这些子查询转发给相应的数据库。在这个过程中可以利用消息队列系统所提供的基本方法来讲每个子查询打包进消息中去,然后将消息发送给相应的数据库。

二、面向流的通信

  1、为连续媒体提供支持

  媒体是指传送信息的手段,其中包括存储以及传输介质。媒体的重要类型是信息的表示方式,也就是信息在计算机系统中的编码方式。比如文本一般是用ASCII或Unicode来进行编码。图像可以采用GIF或JPEG等格式来表示。而计算机中的音频流可以采用诸如PCM的16位样本来编码。

  2、数据流

  对于连续数据流来说,同步是极为关键的。为了捕捉同步状况,要对不同传输模式做出区分。在异步传输模式下,流中的数据项是逐个传输的,但是对于某一项在何时进行传输并没有进一步的限制。比如:文件可以作为数据流来传输,但是每一数据项传输完成的确于时间通常是无关紧要的。

  在同步传输模式下,数据流中的每一个单元都定义了一个端到端最大延迟时间。比如:传感器以某个特定的采样率对温度值进行采样,然后将采样结果通过网络传送给操作员。

  等待传输模式,在这种模式中数据单元必须按时传输,也就是数据传输的端到端延迟时间必须同时受到上限和下限的约束,端到端延迟时间上限和下限也称为边界延迟抖动。这种传输模式对分布式多媒体系统极为有用。

 

  一个简单的流只包含有单个数据序列,而一个复杂的流由若干相关的简单流----子流构成。一个复杂流的例子是关于影片传输的。这个流由单个视频流,以及两个用于以立体声方式传输电影中声音的音频流。第四个流用来传输自摸或者翻译成其他语言的文字。各子流间的同步依然是重要的。如果无法做到同步,就无法完整地复现影片。

3、同步机制

  那么到底是如何做到同步的呢?包含两方面问题,(1)两个流同步的基本机制 (2)在网络环境下这些机制的分布式版本

  同步是通过显式地对单个流的数据单元进行操控来实现的。在本质上,存在一个专门在少数几个简单流上执行读写操作的进程。

  多媒体中间件系统中,中间件提供了一组接口用于控制视频流和音频流,其中包括诸如显示器、照相机和买客房等设备的接口。每个设备和每个流都有自己的高级接口,其中包括在发生某些事件时通知应用程序接口,后者用来编写用于流同步的处理程序。

  

那么最后总结:

  面向消息的中间件模型一般提供持久异步通信,用在RPC不适用的场合。主要用来协助高度分散的数据库继承进大规模信息系统中。

  流是一种完全不同的通信方式,主要问题是两个连续的消息是否有时间上的练习。在连续数据流中,每个小弟都规定了端到端的最大延迟时间。发送的消息还要受到端到端最小延迟时间的约束

参考文献:《分布式系统原理与泛型》

以上是关于面向消息的持久通信与面向流的通信简要总结的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ实战:消息通信模式和最佳实践

UDP、TCP 协议区别?

传输层协议总结

TCP协议

复习之网络编程

Apache ActiveMQ实战-基本安装配置与消息类型