掌握基础的Java信息传送理念

日期: 2014-11-11 作者:Tom Nolle翻译:邹雅玲 来源:TechTarget中国 英文

我们正步入应用程序组件化飞速发展的时代,在这个时代,即使是云也布满组件化。因此,开发人员应该思考如何设计出超越初期Java信息传送的JMS。

Java是世界上最流行的编程语言之一,它几乎适用于任何一款应用程序中,同时,使架构师门可以选择出较为合适的版本和工具。 Java语言会根据不同的工具进行灵活的调整和扩展,但是对那么不知如何进行选择的计划人员和开发人员来说却引起一些问题。随着分布式多组件架构的流行,该问题也变得越来越严重。许多专题报告中将这些应用程序称之为“基于信息的应用程序”,同时提出对其内涵发生质疑的问题,以及是否存在更好的实施方式。分布式应用程序必须在其自身元素之间进行信息传递,并通过技术支持来对紧密耦合和松散耦合进行详细分类。在紧密耦合系统中,应用程序组件之间就可以直接进行信息交流,正如TCP套接字一般,但是,与此同时也会启用一些远程过程调用。将一款应用程序的各个部分连接起来是一件艰巨的集成任务,通过不同的平台组织应用程序时非常困难的一件事情,但是要使其真正发挥作用更非易事。

松散耦合系统是一种以信息为导向的系统,它可以提供一种真实的或者虚拟的信息总线及服务,以此作为连接信息源和组件之间的信息传递器。最基础的Java信息传递理念是,通过另外一个工具将信息从一个组件传递到另一个组件中,该组件还可以继续进行其他工作。当处理组件完成后,该请求信息将会被转换为另外一条信息发送出去。

独立处理过程

因为组件都使用了Java信息传递就不必等待响应,因此,他们也不必记录那些响应信息。这种独立的处理方式与一种叫做无状态行为的事务相连接。HTML服务就是一种无状态行为,这就是为什么在Web应用程序中会频繁使用Java信息传送的原因。当需要时,你可以迅速地替换或者复制这种无状态组件,因为它们没有存储任何信息,这种情况使得信息系统变得更加可靠、更能适应云计算。信息系统也能够非常恰当地描绘事物交易过程,同时该系统也是连接Web前端和现有应用程序的一个重要元素。

所有Java信息系统可以支持两个组件之间的点对点约定,而当信息源需要发布信息和过程要点预定时,它们也可以自动转入发布-订阅模式。从那时起,实施分类处理就变得有些困难;其中包括应用程序架构部分和应用程序性能部分的选择,而在API和过去的使用协议中都会有所不同。

大多数本地Java信息传递要么依靠 Java信息传递系统(JMS) API使用协议,要么依靠高级消息队列协议(AMQP)。AMQP除了支持标准点-点及发布-订阅模式外,还支持其他更为复杂的组件关系。尽管AMQP不像JMS那样普遍,但是在众多不同的资源中其实施效果也十分突出。AMQP的平台独立性远超过基础JMS,因此,即使在应用程序的其他程序语言使用过程中,许多用户也更倾向于选择AMQP。AMQP也会被用于提高交易快速执行速度的优化过程中。而金融产业则是标准化的第一大用户。

JMS是一类信息代理或者服务方法,需要一种独立的组件来接受、存储和传递信息。一些AMQP实施需要一个代理中心(如Rabbit MQ以及Active MQ的一种部署选项),而另外一类AMQP则不需要代理中心,以一种松散、分布式的方法运行(如另外一种Active MQ模型和Zero MQ)。无代理的运行方式不会出现性能瓶颈以及代理系统中所出现的故障问题,但是这种运行方式却有非常复杂的架构,因为,没有代理中心,就没有查询功能模块,其内部的每个组件都必须自行查找到其他组件。

其他组件信息选项

公平地讲,当信息传递系统中应用了Java 语言时,AMQP就慢慢地代替了基础JMS。因为开发人员可以应用这种无代理(也称之为对等或者P2P)架构获得更良好的性能,同时也因为AMQP会提供更多的平台选择。然而,像Microsoft、IBM和Oracle这样顶级供应商都会有自己的组件信息传递功能,只有具备合适的信息库,Java语言将会支持以上所有信息功能的运行。有些功能选项对发行商和客户提供了AMQP兼容支持。使用这些供应商的产品而开发出新应用程序的用户也许会发现,如果在应用程序的开发过程中使用过供应商自己的中间件工具和API的话,那么想要集成Java组件就是一件相对容易的事情了。

对于那些不太了解Java信息的人来说,他们可能起初更倾向使用JMS,但是这并非最好的方法。我们正步入应用程序组件化飞速发展的时代,在这个时代,即使是云计算环境下也布满组件化结果。适应所有可能会应用的程序语言和应用程序平台就变得非常重要,而在JMS中想要做到这一点是一件非常困难的事情。除非所设计的应用程序非常简单,否则架构师们就应该设计出超越Java信息的JMS。Java信息用户一般仅同意以下三种说法。首先,如果开发人员身处Java商店中,想要通过学习IBM、Oracle和Microsoft等供应商的生产运作管理使用AMQP从而实现Java组件集成,那么这些开发人员最好思考下该如何从JMS方法转入AMQP方法。其次,如果开发人员不太确定是否能够使用这种无代理方法,那么他们最好首先选择一种既可以支持代理形式又可以支持无代理形式的Java信息产品(例如ActiveMQ)。另外一种方法则是建立两种信息系统的混合模型,但是这对于刚开始使用信息服务系统的用户来说十分困难。第三,如果没有技术娴熟的软件开发人员和经验丰富的网络专家的支持,那么想要实施和维护这种无代理/ P2P架构就变得非常艰难。除非绝对必要,否则千万不要走这一步。

信息传递对于Java开发人员来说是非常重要的,但是如今“信息”正逐步从Java中分离出来,成为一种普通的应用开发工具。照这样做,开发人员就不太可能在日后的开发过程中遇到此类信息障碍。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 你了解应用集成架构吗?

    业务流程越来越多得要求在很多任务,甚至很多应用之间共享更多的信息。应用集成架构是一种IT流程,确保数据或者某个功能能够从一个应用移动到另一个应用。

  • 开源和企业服务总线(ESB)

    最近几年中,企业服务总线(ESB)已经在许多SOA程序中固化了。你可以说你在做SOA 而不能说已经完成了ESB。但是很可能成功的SOA……

  • VMware/SpringSource收购RabbitMQ

    VMware旗下SpringSource宣布收购Rabbit科技,Rabbit是一家来自英国的开源公司,主要经营企业消息软件。SpringSource表示该公司的旗舰产品RabbitMQ……

  • 解析SOA十大设计原则

    通过跨越定义明确的边界进行显式消息传递,服务得以彼此交互。有时候,跨越服务边界可能要耗费很大的成本,这要视地理、信任或执行因素而定。