分布式之消息中间件

分布式之消息中间件

目录
* 1.消息中间件概述
* 2.消息中间件使用场景
* 3.消息中间件原理
* 4.消息中间件传递模式
  * 4.1点对点模式(PTP)
  * 4.2发布-订阅模型(Pub/Sub)

1.消息中间件概述

  消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。消息中间件就是用在消息队列服务器中用于过滤、区分和根据规则进行转发的程序。
  目前在生产环境,使用较多的消息中间件有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等
  

2.消息中间件使用场景

  消息中间件适用于需要可靠的数据传送的分布式环境。
  采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。
  
  消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。

3.消息中间件原理

  要了解消息中间件的原理,先了解MOM(面向消息的中间件)。
  面向消息的中间件(MOM),提供了以松散耦合的灵活方式集成应用程序的一种机制。它们提供了基于存储和转发的应用程序之间的异步数据发送,即应用程序彼此不直接通信,而是与作为中介的MOM通信。MOM提供了有保证的消息发送(至少是在尽可能地做到这一点),应用程序开发人员无需了解远程过程调用(PRC)和网络/通信协议的细节。
  消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
  

4.消息中间件传递模式

4.1点对点模式(PTP)

  PTP模式包含消息队列(Queue),发送者(Sender)。接收者(Receiver),每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,而且队列可以是持久的,以保证在消息服务出现故障时仍然能够传递消息,直到他们被消费或超时。
  
PTP的特点:
- 每个消息只有一个消费者(cunsumes)(即一旦被消费,消息就不再在消息队列中)
- 发送者和接收者之间在时间上没有依赖性,也就是发送者发送消息后,不管接收者是否接收消息或者接收者服务是否在运行,都不会影响到消息被发送到队列
- 接收者在成功接收消息之后需向队列应答成功

4.2发布-订阅模型(Pub/Sub)

  发布-订阅模型(Pub/Sub)包含三个角色:主题(Topic),发布者(Publisher),订阅者(Subscriber) 。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
  
Pub/Sub的特点
- 每个消息可以有多个消费者
- 发送者和接收者之间在时间上存在依赖性,针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
- 为了消费消息,订阅者必须保持运行的状态。

  为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
  如果希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章