面向消息的持久通信与面向流的通信

简介: 一、面向消息的持久通信   消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。 消息队列模型   应用程序可以通过在特定队列中插入消息来进行通信。

一、面向消息的持久通信  

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

消息队列模型

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

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

  

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

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

二、面向流的通信

  1、为连续媒体提供支持

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

  2、数据流

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

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

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

 

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

3、同步机制

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

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

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

  

那么最后总结:

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

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

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

目录
相关文章
|
机器学习/深度学习 数据可视化 PyTorch
【PyTorch】TensorBoard基本使用
【PyTorch】TensorBoard基本使用
1044 0
|
11月前
|
人工智能 数据可视化 数据挖掘
从传统软件到SaaS:为什么更多企业选择订阅制服务?
本文详细介绍了SaaS的概念、优势及其在现代工作中的重要性。SaaS是一种通过互联网提供云计算服务,用户无需安装和维护本地软件,只需通过网络访问软件即可。SaaS通过自动更新和维护、订阅制收费模式等方式降低成本,提供更便捷的服务。
2081 4
从传统软件到SaaS:为什么更多企业选择订阅制服务?
|
5月前
|
并行计算 机器人 网络安全
阿里云服务器上部署ROS2+Isaac-Sim4.5实现LeRobot机械臂操控
本文介绍了如何在阿里云上申请和配置一台GPU云服务器,并通过ROS2与Isaac Sim搭建机械臂仿真平台。内容涵盖服务器申请、系统配置、远程连接、环境搭建、仿真平台使用及ROS2操控程序的编写,帮助开发者快速部署机器人开发环境。
1849 4
|
5月前
|
JSON API PHP
天气预报免费API接口【地址查询版】使用教程
本文介绍了如何使用中国气象局官方数据提供的免费天气预报API接口,通过省份和地点查询指定地区当日天气信息。该接口由接口盒子支持,提供JSON格式数据、GET/POST请求方式,并需注册获取用户ID和KEY进行身份验证。
2586 2
|
Ubuntu Apache
Ubuntu20.04下一键安装Moveit
本文提供了一个一键安装Moveit的脚本工具,旨在帮助中国地区的用户在Ubuntu 20.04系统上安装Moveit并配置相关环境。脚本包括安装必要包、创建catkin工作空间、克隆Moveit源代码和示例代码、使用rosdep安装依赖以及构建工作空间,并提供了详细的使用说明和源码。
754 0
Ubuntu20.04下一键安装Moveit
|
编解码 数据可视化 定位技术
60行代码就可以训练/微调 Segment Anything 2 (SAM 2)
本文演示了如何在仅60行代码内(不包括标注和导入)对SAM2进行微调。
1040 1
60行代码就可以训练/微调 Segment Anything 2 (SAM 2)
|
数据可视化 安全 数据挖掘
streamlit (python构建web)之环境搭建
在微信订阅号中发现了一篇关于Streamlit的文章,激发了我的兴趣。Streamlit是一款专为数据科学家设计的开源Python库,能迅速将数据分析脚本转变为功能完备的Web应用。它简化了开发流程,支持轻松添加交互组件及动态展示图表、图像等,非常适合开发安全扫描工具。Streamlit基于Jupyter Notebook原理,通过Python脚本创建可视化和交互式的Web应用,易于部署分享。安装方法多样,可通过`pip install streamlit`快速安装,或通过Anaconda环境管理依赖。启动示例应用只需运行简单命令,即可体验自带的动画、绘图和数据展示等功能。
1380 1
streamlit (python构建web)之环境搭建
|
JavaScript 前端开发 算法
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
8891 0
|
缓存 关系型数据库 MySQL
MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES)无法打开的解决方法
MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES)无法打开的解决方法
24420 0