`
holdbelief
  • 浏览: 696126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActiveMQ实践:松耦合和ActiveMQ

    博客分类:
  • JMS
阅读更多

2010-10-28    作者:Bruce Snyder, Dejan Bosanac, Rob Davies     译者:张培颖   来源:TechTarget中国

导读:本文介绍了为什么要使用ActiveMQ以及松耦合、通信和ActiveMQ的关系和作用,笔者给出了具体实例,下面我们来具体看一下。

关键词:ActiveMQ 松耦合 紧耦合 消息中间件 MOM

 

【TechTarget中国原创】回到2003年,一群开源开发者聚在一起组成了Apache Geronimo。在这种情况下,他们发现没有一个很好的使用BSD风格许可证的消息中间件可用。因为Geronimo需要一个JMS实现J2EE兼容性,所以一些开发者开始探讨这种可能性。他们拥有大量的商业MOM经验,而且他们甚至之前已经创建了一些MOM,这些开发者打算创建下一代伟大的开源消息中间件。

  ActiveMQ其他的一些灵感来源于市场上的大多数MOM是商业化的这个事实,封闭源码,而且购买和支持的成本高昂。商业MOM的确在业务上很流行,但是很多业务并不能负担的起不合理的成本。这也进一步增加了创建一个开源替代物的积极性。使用Apache许可证的开源MOM确实有着市场潜力。Apache ActiveMQ随着时间进步。ActiveMQ打算作为JMS的标准,以供分布式应用之间的远程通信。为了更好地理解这个意思,最佳的做法就是回顾一下分布式应用设计,尤其是通信。

  松耦合和ActiveMQ

  ActiveMQ为应用架构提供了松耦合的好处。松耦合通常被引入到一个架构迁移到一个古典的紧耦合的远程过程调用(RPC)中。这样一个松耦合设计被认为是异步的,调用两个应用中的任何一个应用对另一个都没有影响;不相互依赖或者有时间要求。应用可以信任ActiveMQ有能力保障消息交付。因此,通常表述为应用发送消息是发送后自寻的。也就是他们把消息发给ActiveMQ,并不关心消息如何交付和什么时候交付。同样的,消费应用也不用关心消息来自哪里何以如何发送到ActiveMQ的。这对于在非均匀环境中来说尤其有用,这种环境中允许客户端使用不同的语言编写,甚至可能是不同的网格协议。ActiveMQ充当中间人,允许以异步的方式进行非均匀集成和交互。

  在考虑分布式应用设计的时候,应用耦合很重要。耦合引用两个或者多个应用或系统的依赖性。简单的理解耦合就是考虑从系统中任何应用改变对其他应用产生的影响,这种含义穿过架构中的其他应用作为性能被添加。改变一个应用会迫使所涉及的其他应用改变呢?如果回答是肯定的,这些应用就是紧耦合。然而,如果一个应用可以在不影响其他应用的情况下改变,这些应用就是松耦合的。对比松耦合,紧耦合应用很难维护。

  像COM、CORBA、DCE和EJB这样的技术使用的技术称之为远程过程调用(RPC),RPC被认为是紧耦合的。使用RPC,当一个应用调用另一个应用的时候,调用者是锁定的,直到被调用者返还会控制权。图一描述了这个概念。


图片

图一

  通信

  图一中的调用者是锁定的,直到被调用者返还会控制权。许多系统架构使用RPC,而且很成功。然而,是有这种紧耦合设计也有很多缺点,最显著的就是很高的维护费用需求,可谓一石激起千层浪。在另个应用见正确的时间是必要的。对于应用都必须在同时可用的这种需求从应用一到应用二,响应从应用二到应用一。这样的时间需求很难处理。对比这样设计中的紧耦合和松耦合,两个应用彼此完全不知道对方,如图二所示。


图片

图二

  图二中的应用一给MOM 发送了一个消息,可能过了一段时间,应用二从MOM收到一条消息。另个应用都不知道对方的存在,在两个应用之间也没有时间需求。这种单一风格的交互结果维护成本很低,因为一个应用改变对另一个没有影响。因此,松耦合应用在分布式应用设计中更具优势。

  试想在应用必须转移到另一个地点的这种改变。这种情况可能发生在新的硬件需求或简单的机器转移的时候。紧耦合的系统设计,这样的环境很难转移,因为所有应用片段必须经历断电。松耦合设计的应用,不同的系统片段可以独立的转移。假如应用一和应用二都有多个实例,每个实例都属于不同的机器中。ActiveMQ安装在另外完全独立于这两个应用的机器上。在这种场景中,这些实例都可以移动,而不影响彼此。实际上,ActiveMQ的多个实例被认为是中间件配置网络。它允许ActiveMQ实例不影响其他实例的情况下自由转移。这意味着这个架构中的任何片段可以在任何时间被维护,而无需影响这个系统。

  因此ActiveMQ为应用架构提供了一种不可思议的灵活性,松耦合的概念也成为现实。但是ActiveMQ应该在何时使用呢?欢迎继续关注。

分享到:
评论

相关推荐

    apache-activemq-5.15.9

    ActiveMQ 优点:  (1) 跨平台(JAVA编写与平台无关有... (3) 降低系统间模块的耦合度,解耦(消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和) (4) 对Spring的,软件扩展性好 (5) 自动重连功能

    apache-activemq-5.16.5-bin.tar.gz 下载(5积分)

    Apache ActiveMQ是Apache软件基金会的一个开源项目,是一个基于消息的通信中间件。ActiveMQ是JMS的一个具体实现,支持...ActiviMq消息队列,可解决服务解耦合的动作,缓解了服务并发量很大而造成服务器无法处理的状况。

    springboot整合activemq实例

    ActiveMQ提供了支持任何消息传递用例的功能和灵活性。 降低服务之间代码耦合,按功能将一个整体的项目进行分割成多个系统,比如将报告系统、短信系统分割出来。 使用消息队列,增加系统并发处理量,这样并发量就可以...

    apache-activemq-5.16.0-bin.tar.gz 下载(5积分)

    ActiviMq消息队列,可解决服务解耦合的动作,缓解了服务并发量很大而造成服务器无法处理的状况。 (文件全称:apache-activemq-5.16.0-bin.tar.gz)

    ActiveMQ入门教程

    摘要:本文主要讲述ActiveMQ的基本知识和使用方法,并简单结合spring使用ActiveMQ。 企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。...它使应用间能以异步,松耦合方式交流。

    apache-activemq

    activeMQ紧耦合应用系统存在许多问题,但是,要将紧耦合系统重构成松耦合系统是一件值得但比较繁琐的事情。使用松耦合的主要优势体现在将同步改为异步。使用异步通信,应用程序将从接收者反馈的等待中解放出来,其他...

    ActiveMQ入门

    企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。因此,消息传递可以满足应用间的通知和互相操作。...它使应用间能以异步,松耦合方式交流。本章将向您介绍ActiveMQ。

    activemq-demo.zip

    SpringBoot整合ActiveMQ。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。消息形式支持点...

    基于ActiveMQ的消息中间件系统逻辑与物理架构设计具体解释

    多种业务应用相互关联,easy造成底层数据分散,应用系统间的耦合度高。针对该问题应从总体上调整眼下系统架构。面向不同业务应用提供统一的数据訪问服务,使用消息中间件对不同系统间的交互进行解耦,消息中间件技术...

    ActiveMQ从入门到精通(一)

    本文来自于jianshu,本篇文章介绍了JMS、ActiveMQ的基础知识,并且讲解了一个HelloWorld...通信的同步性client端发起调用后,必须等待server处理完成并返回结果后才能继续执行2.client和server的生命周期耦合太高cli

    ApacheActiveMQ介绍

    它使应用间能以异步,松耦合方式交流。本章将向您介绍ActiveMQ。ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(JavaMessageService),是消息驱动中间件软件(MOM)。它为企业消息传递提供高可用,...

    Docker学习之搭建ActiveMQ消息服务的方法步骤

    ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 在生产项目中,很多时候需要消息中间件来进行分布式...

    基于ActiveMQ的消息中间件系统OneMM逻辑与物理架构设计详解

    摘要:互联网开发无小事,一个小小的问题也能被无限放大。比如一个应用遇到的问题可能与系统、网络、应用、...随着企业信息化建设的不断深入,多种业务应用相互关联,容易造成底层数据分散,应用系统间的耦合度高。针

    消息中间件简介及ActiveMQ下载、安装

    通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信消息中间件引出产生背景一、系统之间接口耦合比较严重系统之间直接调用实际工程落地和存在问题微服务架构后,链式调用是我们在写程序时候的...

    基于SSM+mysql的分布式电商项目源码+数据库+项目说明(课程设计).zip

    5.ActiveMQ:使用Activemq发送接收消息,通过消息队列实现商品同步。 6.FreeMarker:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道...

    大型分布式网站架构与实践

     如何使用分布式消息系统ActiveMQ来降低系统之间的耦合度,以及进行应用间的通信。  垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具...

    springCloud

    系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 微服务的概念源于2014年3月Martin Fowler所写的...

Global site tag (gtag.js) - Google Analytics