介绍
与其封闭源代码相反,开源应用程序是免费的,相对较快的,并且具有强大的开发周期以及随时可用的社区支持。 这使得它们成为许多开发人员,产品经理和一般用户在做长期选择时非常强大的选择。
一个社区开发的应用程序提供了成功的关键要素(即有很多人对一个或多个互通项目的工作)持续发展-是什么让应用程序可以使用的过程中,在理由是共同商定的主要是他们与说话能力彼此和一起工作。
在这种DigitalOcean文章中,我们要尝试新的东西,并帮助开发人员(以及其他任何人有兴趣)得到彻底熟悉高级消息队列协议 。 它的设计允许它们被精心设计为不同的流程,应用程序,甚至无关的需要互相沟通和传递信息系统之间的信息中介中间件工作的应用程序开发开放【技术面】标准( 公共接地 ) 。
什么是技术标准和开放标准?
技术标准
技术标准包括用于开发和使用应用程序及其他技术系统的规则,规范,定义等。 它们由明确定义的方法和过程构成,作为理论框架。
开放标准
在技术系统的领域,开放标准是可以进行调整和使用的指令- 免版税 -对应用程序的实施和发展。 根据开发它们的机构,可以通过“开放机构”通过“开放程序”创建和维护开放标准。
什么是开放系统互连?
开放系统互连(OSI)是在20世纪70年代开发的ISO(国际标准化组织)标准,用于“统一”不同网络以及通过它们进行通信的计算机系统的工作方式。
该标准构成了用于在七个连续层中实现通信协议的框架(即开发的基础):
物理层 -形成物理(即硬件)基地OSI工作。
数据链路层 -网络传输[节点]之间的数据。
网络层 -指导地方之间的通信(即转发)。
传输层 -致力于确保可靠性,数据流(即利率),控制和数据流。
会话层 -负责管理应用程序之间的会话。
演示(语法)层 -工作塑造和呈现数据进行处理。
应用层 -设置,确保共同点-到达应用-进行通信。 (这是AMQP生活的地方!)
什么是应用层?
应用层 - 这是AMQP所在的地方 - 是形成开放系统互连标准的上述部分之一。 如果我们要详细说明,应用层可以被认为是[唯一]用户与之交互的,以及定义如何进行进程到进程(或应用到应用)通信的应用层。
应用层 - 除AMQP之外的一些[常见]示例是:
- IRC
- DNS
- FTP
- IMAP
- SSH
- 和更多。
什么是通信协议?
每个通信协议由明确定义的规则和规则组成,以形成在不同应用之间说出的共享语言,其最终结果是能够进行通信,而不管它们最初如何被设置工作。
这些协议具有诸如数据格式,使用协议的各方的定义,路由和流(速率)控制的元素。
什么是高级消息队列协议?
高级消息队列协议(AMQP)创建客户端和代理(即消息中间件)之间的互操作性。 其创建的目标是使各种不同的应用程序和系统能够协同工作,无论其内部设计如何,使工业规模的企业消息传送标准化。
AMQP包括用于网络发生的方式和消息代理应用程序工作方式的定义。 这意味着以下规格:
使用消息代理和一组规则来路由和存储消息的操作,以定义组件如何工作
以及用于实现客户端和执行上述操作的代理之间的通信如何工作的有线协议
AMQP创建和使用的原因
在AMQP之前,过去有不同的消息代理和传输由不同供应商创建和设置使用的应用程序。 然而,他们有一个大问题,那就是他们缺乏互操作性。 根本没有办法与另一个人合作。 这可以用不同的协议来工作被用来获得不同的系统的唯一方法是通过引入用于转换称为消息传递桥消息的附加层。 这些系统使用单个适配器能够接收常规客户端的消息,将用于连接多个和不同的消息传递系统(例如WebSphere MQ和另一个)。
AMQP通过提供如上所述的清晰定义的规则和指令,创建了一个共同点,可用于所有消息队列和代理应用程序的工作和互操作。
什么是AMQP用例?
每当需要在应用程序和进程之间进行高质量和安全的消息传递时,可以考虑使用实现消息代理解决方案的AMQP。
AMQP确保
消息传递的可靠性
快速和确保信息的传递
消息确认
这些功能使其成为理想选择
监控和全局共享更新
连接不同的系统来相互谈话
允许服务器快速响应即时请求,并委派耗时的任务以供以后处理
将消息分发给多个收件人以供消费
启用离线客户端以稍后提取数据
为系统引入完全异步的功能
提高应用程序部署的可靠性和正常运行时间
AMQP装配和术语
了解和使用AMQP涉及熟悉几个不同的术语和术语。 在本节中,我们将讨论这些关键部分:
代理(服务器):应用程序-实现AMQP模型-接受连接,从客户的邮件路由,排队等。
消息:传输的数据内容/路由包括信息,如有效载荷和消息属性。
消费者:接收消息(S)的应用程序-从队列中-由生产者投入。
制片人:它通过交换把消息队列的应用程序。
注意:消息的有效载荷没有被AMQP限定; 各种和不同类型的数据,因此,可以使用协议传送。
主要AMQP组件
AMQP模型定义如何接收,路由,存储,排队消息以及如何处理这些任务的应用程序部件依赖于以下组件的清除集定义:
交易所:券商(如服务器)的一部分接收消息,它们路由到队列
队列(消息队列):该消息与又从哪里获得消费者与之相关的命名实体
绑定:规则从交易所发布消息队列
AMQP消息代理如何工作?
在AMQP中,“消息代理”转换为接收实际消息并将其路由(即转移)给相关方的应用。
APPLICATION EXCHANGE TASK LIST WORKER
[DATA] -------> [DATA] ---> [D]+[D][D][D] ---> [DATA]
Publisher EXCHANGE Queue Consumer
AMQP交换如何工作?
在从发布者(即客户端)接收消息之后,交换处理它们并将它们路由到一个或多个队列。 执行的路由类型取决于交换的类型,目前有四个。
直接交换
直接交换类型涉及基于路由密钥将消息递送到队列。 路由密钥可以被认为是定义为设置消息将去往的附加数据。
直接交换的典型用例是工作线程之间的循环方式的负载平衡任务。
扇出交换
扇出交换完全忽略路由密钥,并向绑定到它的所有队列发送任何消息。
用于扇出交换的用例通常涉及将消息分发给多个客户端以用于类似于通知的目的:
共享消息(例如聊天服务器)和更新(例如新闻)
应用程序状态(例如配置)
主题交流
主题交换主要用于pub / sub(发布 - 订阅)模式。 使用这种类型的传输,路由键和队列绑定到交换机用于匹配和发送消息。
每当需要消费者的专门参与(例如,执行某种类型的动作的单个工作集)时,主题交换有助于基于键和模式相应地分发消息。
标题交换
报头交换包括使用与消息耦合的附加报头(即消息属性),而不是依赖于用于路由到队列的路由密钥。
能够使用除字符串之外的数据类型(其是什么路由密钥),报头交换允许具有更多可能性的不同路由机制,但类似于通过键的直接交换。
AMQP消息代理如何与电子邮件不同?
假定邮件包括发送消息(即,发布),由邮件服务器接收和处理(即代理)到相关邮箱(即队列),最终随后请求和获得所述消息(即消费),过程和传输由AMQP定义的消息的任务可以被看作是类似的。
除了基本面实际上有很大不同之外,将AMQP与电子邮件分开的主要方面是目标服务质量(QoS)。 AMQP本质上致力于可靠性,安全性,标准合规性和安全性。
诸如持久性,向多个消费者传递消息,确保和防止多个消费的可能性以及在高速下操作的协议的特征是将两者分开的主要因素。
对于业务级使用和适配,对向交换(和队列)发送消息(即发布)的认证的要求意味着防止不需要的(例如垃圾邮件),对于建立QoS发挥关键作用。