MQ消息队列系列(2)什么时候使用MQ

转载 2016年06月01日 10:34:14

转自:http://jfires.iteye.com/blog/1187887

1.跨语言应用集成

MQ使用java编写,并且提供一个java客户端API。但MQ也为C/C++,.NET,Perl,PHP,Python,Ruby等提供客户端。当你考虑在不同平台不同语言下的各个应用进行集成时,这将是一个巨大的优势。不同语言的客户端API使各种不同的语言能够通过MQ发送和接收消息。对于MQ提供的多语言兼容,还有一个好处是相对于RPC调用,它能帮助系统各应用间的解耦。

2.RPC替代者

应用广泛的使用RPC模式的同步调用。想一下,现在大量使用RPC调用的客户端服务器模式的应用,它们包括ATMs,大多数web应用,信用卡系统,销售点(point-of-sale)系统等。尽管它们大多数是成功的,但是转换到异步消息模式能够在保证正确响应的情况下带来一些好处。使用同步请求的系统在规模上有较大的限制,因为请求会被阻塞,从而导致整个系统变慢。如果使用异步消息替代,可以很容易增加额外的消息接收者,使得消息能被并发消耗,从而加快请求处理。当然,必须你系统应用间是解耦的。

3.应用间解耦

紧耦合系统能带来很多问题,特别是在应用是分布式的情况下。松耦合系统,也就是依赖性小的系统,可以更好地适应未知变化。不只是系统某部分的改变不会影响整个系统,而且部件间的交互也更简单。相比使用同步的系统(调用者必须等待被调用者返回信息),异步系统(调用方发送消息后就不管,即fire-and-forget)能够给我们带来事件驱动架构(event-driven architecture EDA)。

4.作为事件驱动架构的骨架--解耦

异步架构的系统允许通过代理器自己配置更多的客户端,内存等(即vertical scalability)来扩大系统,而不是增加更多的代理器(即horizontal scalability)。考虑如亚马逊这样繁忙的电子商务系统。当用户购买物品,事实上系统需要很多步骤去处理,包括下单,创建发票,付款,执行订单,运输等。但是用户下单后,会立即返回“谢谢你下单”的界面。不只是没有延迟,而且用户还会受到一封邮件表明订单已经收到。在亚马逊下单的例子就是一个多步处理的例子。每一步都由单独的服务去处理。当用户下单时,有一个同步的提交表单动作,但整个处理流程并不通过浏览器同步处理。相反地,订单马上被接受和反馈。而剩下的步骤就通过异步处理。如果在处理过程中出错,用户会通过邮件收到通知。这样的异步处理能提供高负载和高可用性。

5.提高系统扩展性

很多使用事件驱动设计的系统是为了获得高可扩展性,例如电子商务,政府,制造业,线上游戏等。通过异步消息分开商业处理步骤给各个应用,能够带来很多可能性。考虑设计一个应用来完成一项特殊的任务。这就是面向服务的架构(service-oriented architecture SOA)。每一个服务完成一个功能并且只有一个功能。应用就通过服务组合起来,服务间使用异步消息和最终一致性。这样的设计便可以引入一个复杂事件处理概念(complex event processing CEP)。使用CEP,部件间的交互可以被记录追踪。在异步消息系统中,可以很容易在部件间增加一层处理。

消息队列使用的四种场景介绍

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ...
  • cws1214
  • cws1214
  • 2016年10月25日 14:50
  • 26337

ActiveMQ的应用场景

MQ的学习 目前流行的就是:activemq、ZeroMQ、RabbitMQ、kafka、rocketmq,学习RabbitMQ就可以了,这个就很强大。 activeMQ在项目中,将一些无需即时返回...
  • dly1580854879
  • dly1580854879
  • 2017年03月30日 14:15
  • 2784

到底什么时候该使用MQ?

一、缘起 一切脱离业务的架构设计与新技术引入都是耍流氓。引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题...
  • u014332200
  • u014332200
  • 2018年01月03日 16:28
  • 65

为什么,何时使用ActiveMQ

http://jfires.iteye.com/blog/1187887 1.2使用ActiveMQ:为什么,何时     时间回到2003年,一群开源开发者集合在一起形成了A...
  • blade2001
  • blade2001
  • 2016年02月04日 15:50
  • 1376

到底什么时候该使用MQ?

原文地址:http://mp.weixin.qq.com/s/Brd-j3IcljcY7BV01r712Q 一、缘起 一切脱离业务的架构设计与新技术引入都是耍流氓。   引入一个技术之前,首...
  • xybelieve1990
  • xybelieve1990
  • 2017年04月21日 11:48
  • 4388

几种MQ消息队列对比与消息队列之间的通信问题

几种MQ消息队列对比与消息队列之间的通信问题
  • Dreamcode
  • Dreamcode
  • 2015年05月07日 11:19
  • 13923

【消息队列MQ】各类MQ比较

目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常...
  • sunxinhere
  • sunxinhere
  • 2012年09月11日 21:22
  • 281908

MQ消息队列系列(2)什么时候使用MQ

1.跨语言应用集成 MQ使用java编写,并且提供一个java客户端API。但MQ也为C/C++,.NET,Perl,PHP,Python,Ruby等提供客户端。当你考虑在不同平台不同语言下的各个应用...
  • DADADIE
  • DADADIE
  • 2016年06月01日 10:34
  • 2711

IBM WebSphere MQ安装使用教程详细图解

  • 2009年09月08日 08:47
  • 389KB
  • 下载

MQ消息队列系列(1)为什么使用MQ

1.在高并发分布式环境下,由于来不及同步处理,请求往往发生堵塞,比如说,大量的insert、update之类的请求同时到达mysql,直接导致无所的行锁和表锁,甚至最后请求会堆积过多,从而触发too ...
  • DADADIE
  • DADADIE
  • 2016年06月01日 10:04
  • 6627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MQ消息队列系列(2)什么时候使用MQ
举报原因:
原因补充:

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