您的位置:首页 > 其它

消息中间件在分布式系统中的作用

2017-09-04 21:04 225 查看
一、消息中间件是在分布式系统中完成消息的发送和接收的基础软件。

二、消息中间件的作用

消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递

和消息排队模型,可以在分布式环境下扩展进程间的通信。

通过消息中间件,应用程序或组件之间可以进行可靠的异步通讯,从而降低系统之间的耦合度,提高系统的可扩展性和可用性。



三、应用场景(一个简单的支付)

通过使用消息中间件对Dubbo服务间的调用进行解耦




   VS  


图二:会造成服务间耦合度会非常的高,一个出现异常,会造成数据的一致性问题。这种设计会非常的不合理。

图三:通过消息中间件,耦合度降低。每个服务各自独立,同步执行,效率高。可以处理并发

四、一些规范???

JMS (Java Message Service)

JMS是JavaEE中的一个关于消息的规范,是一套与具体平台无关的API。

JMS元素

JMS提供者 ---- 连接面向消息中间件的,JMS接口的一个实现。

JMS客户 ------ 生产或消费消息的基于Java的应用程序或对象。

JMS生产者 ---- 创建并发送消息的JMS客户。

JMS消费者 ---- 接收消息的JMS客户。

JMS消息 ------ 可以在JMS客户之间传递的数据的对象

JMS队列 ------ 一个容纳那些被发送的等待阅读的消息的区域

JMS主题 ------ 一种支持发送消息给多个订阅者的机制。

JMS应用程序接口

ConnectionFactory(连接工厂)------ 用户用来创建到JMS提供者的连接的被管对象。

Connection(连接)------------------- 连接代表了应用程序和消息服务器之间的通信链路。

Destination(目标)------------------- 消息发布和接收的地点,或者是队列,或者是主题。

MessageProducer(消息生产者)----- 由会话创建的对象,用于发送消息到目标。

MessageConsumer(消息消费者)---- 由会话创建的对象,用于接收发送到目标的消息

Message(消息)---------------------- 是在消费者和生产者之间传送的对象。

Session(会话)------------------------ 表示一个单线程的上下文,用于发送和接收消息。

五、JMS消息模型

(1)、点对点或队列模型



JMS 点对点队列模型特点:

1、消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

2、消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。

3、Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

(2)发布者/订阅者模型



JMS 发布/订阅模型特点:

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。

发布到topic的消息会被所有订阅者消费。

实现了JMS规范的消息中间件产品

ActiveMQ、RocketMQ、RabbitMQ、HornetQ ……

六、关于ActiveMQ的一些使用

ActiveMQ 需要用到两个端口一个是消息通讯的端口(默认为 61616)

一个是管理控制台端口(默认为 8161)可在 conf/jetty.xml 中修改

默认用户名和密码为:admin/admin

比如访问:http://192.168.1.100:8161/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: