欢迎来到天天文库
浏览记录
ID:30777224
大小:140.00 KB
页数:17页
时间:2019-01-03
《java远程通讯技术及原理分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java远程通讯技术及原理分析在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMKMINA、ESB、Burlap.Hessian、SOAP、EJB和JMS等,这些名词z间到底是些什么关系呢,它们背后到底是棊于什么原理实现的呢,了解这些是实现分布式服务框架的慕础知识,而如果在性能上冇高的要求的话,那深入了解这些技术背后的机制就是必须的了。1基本原理要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基木原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传
2、输到另外一台计算机,基于传输协议和网络10来实现,其屮传输协议比较出名的有tcp、udp等等,tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输协议,网络TO,主要冇bio、nio、aio三种方式,所冇的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。2消息模式归根结底,企业应用系统就是对数据的处理,而对于一个拥有多个子系统的企业应用系统而言,它的基础支撐无疑就是对消息的处理。与对象不同,消息木质上是一种数据结构(当然,对象也可以看做是一种特殊的消
3、息),它包含消费者与服务双方都能识别的数据,这些数据需耍在不同的进程(机器)之间进行传递,并可能会被多个完全不同的客户端消费。消息传递相较文件传递与远程过程调用(RPC)而言,似乎更胜一筹,因为它具有更好的平台无关性,并能够很好地支持并发与异步调用。对于WebService与RESTful而言,则可以看做是消息传递技术的-种衍生或封装。2.1消息通道(MessageChannel)模式我们常常运用的消息模式是MessageChannel(消息通道)模式,如图所示。消息通道作为在客户端(消费者,Consumer)与服务(牛产者,P
4、roducer)之间引入的间接层,可以有效地解除二者之间的耦合。只要实现规定双方需要通信的消息格式,以及处理消息的机制与时机,就可以做到消费者对生产者的“无知”。事实上,该模式可以支持多个生产者为消费者。例如,我们可以让多个生产者向消息通道发送消息,因为消费者对生产者的无知性,它不必考虑究竟是哪个生产者发来的消息。虽然消息通道解除了生产者与消费者之间的耦介,使得我们可以任意地对生产者与消费者进行扩展,但它又同时引入了各自对消息通道的依赖,因为它们必须知道通道资源的位置。要解除这种对通道的依赖,可以考虑引入Lookup服务来查找该
5、通道资源。例如,在JMS中就可以通过JNDT來获取消息通道Queueo若要做到充分的灵活性,町以将与通道相关的信息存储到配置文件中‘Lookup服务首先通过读取配置文件來获得通道。消息通道通常以队列的形式存在,这种先进先出的数据结构无疑最为适合这种处理消息的场景。微软的MSMQ、IBMMQ、JBossMQ以及开源的RabbitMQ>ApacheActiveMQ都通过队列实现了MessageChannel模式。因此,在选择运用MessageChannel模式时,更多地是要从质量属性的层而对各种实现了该模式的产站进行全方位的分析与权
6、衡。例如,消息通道对并发的支持以及在性能上的表现;消息通道是否充分地考虑了错误处理;对消息安全的支持;以及关于消息持久化、灾备(fa订over)与集群等方而的支持。因为通道传递的消息往往是一些重要的业务数据,一旦通道成为故障点或安全性的突破点,对系统就会造成灾难性的影响。此处也顺带的提下jndi的机制,由于JNDI取决于具体的实现,在这里只能是讲解下jboss的jndi的实现了:在将对彖实例绑定到jbossjnpserver后,当远程端采用context,lookup()方式获取远程对彖实例并开始调用时,jbossjndi的实现
7、方法是从jnpserver上获取对彖实例,将其序列化回木地,然后在木地进行反序列化,Z后在本地进行类调用。通过这个机制,就可以知道了,本地其实是必须有绑定到jboss上的对象实例的class的,否则反序列化的时候肯定就失败了,而远程通讯需要做到的是在远程执行某动作,并获取到相应的结果,可见纯粹基于JNDI是无法实现远程通讯的。但JNDT也是实现分布式服务框架一个很关键的技术点,因为可以通过它來实现透明化的远端和本地调用,就像ejb,另外它也是个很好的隐藏实际部署机制(就像datasource)等的方案。发布者-订阅者(Publi
8、sher-Subscriber)模式一旦消息通道需要支持多个消费者时,就町能而临两种模型的选择:拉模型与推模烈。拉模型是由消息的消费者发起的,主动权把握在消费者手中,它会根据口己的情况对生产者发起调用。如图所示:拉模型的另-•种体现则由生产者在状态发生变更吋,通
此文档下载收益归作者所有