Dubbo高级篇_01_消息中间件在分布式架构的作用和介绍

原创 2016年03月28日 21:23:45

消息中间件的定义
Message-oriented middleware (MOM) is software infrastructure focused on sending and receiving messages between distributed systems.
消息中间件是在分布式系统中完成消息的发送和接收的基础软件。


消息中间件的作用

消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式环境下扩展进程间的通信。

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

应用程序A与应用程序B通信使用消息通信,可以异步通讯,即应用程序A不管应用B是否正常,只要消息中间件是正常的就OK了,如果应用程序B不正常,消息中间件会把应用程序A发给应用程序B的消息先缓存起来,等应用程序B正常,再交给应用程序B处理,此也可以解决分布式事务问题。




不使用消息中间件的分布式中得同时调用好多个服务,也依赖多个服务,耦合度高,同样,串联下的业务,可能存在等待时间,出现异常,数据的一致性很难保证


消息中间件在分布式系统中的作用介绍
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(消息)---------------------- 是在消费者和生产者之间传送的对象。

JMS消息模型

1.点对点或队列模型


JMS点对点队列模型特点:

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

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

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


JMS消息模型

发布者/订阅者模型


JMS 发布/订阅模型特点

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

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

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

ActiveMQ、RocketMQ、RabbitMQ、HornetQ.....

MQ对比与选择


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

基于Dubbo的分布式系统架构(二)-消息中间件在分布式系统中的作用及介绍

一、消息中间件的定义        Message-orientedmiddleware (MOM) is software infrastructure focused on sending and...

跟我学习dubbo-消息中间件在分布式系统中的作用介绍(8)

JMS提供者 ---- 连接面向消息中间件的,JMS接口的一个实现。 JMS客户 ------ 生产或消费消息的基于Java的应用程序或对象。 JMS生产者 ---- 创建并发送消息的JMS客户。 J...

分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践

说到分布式事务,就会谈到那个经典的”账号转账”问题:2个账号,分布处于2个不同的DB,或者说2个不同的子系统里面,A要扣钱,B要加钱,如何保证原子性?一般的思路都是通过消息中间件来实现“最终一致性”:...

消息中间件(一)分布式系统事务一致性解决方案大对比,谁最好使?

在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣?在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面...

服务中间件Dubbo的来历

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,需要一个治理系统确保架构有条不紊的演进。 单一应用架构   当网站流量很小时,只需...

Dubbo高级篇_07_Dubbo服务接口的设计原则

1 、设计方式 action->facade->biz->dao 好的Dubbo服务接品设计,并非只是纯粹的接口服务化 2.接口类型 简单的数据查询接口:action.facade、dao 带业务逻辑...

Dubbox RestEasy 文件上传乱码解决

背景最近开发Dubbox服务,使用了Http协议对PHP系统暴露了一些Service服务,但是在上传时出现了乱码,google没有发现好的解决方案,只能自己debug,发现是配置中缺少一项。解决方案直...

Dubbo高级篇_03_Redis的安装与使用

redis安装与Jedis使用

Dubbo限制大数据传输的解决方案

当service层向web层传输大数据容量的对象时,会受到Dubbo的限制,报类似如下异常: com.alibaba.dubbo.remoting.transport.AbstractCodec.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)