分布式架构网络通信分析

java技术文章

2018-09-20

50

0

一、分布式架构通信原理

     分布式架构间的数据通信,都是通过底层的TCP/IP协议进行数据交换,所以最终的传输形式是通过数据流的方式来进行网络传输。在这个原理基础上,提供了一些应用协议如:rmi、xml-rpc、binanry-rpc、soap、jms。他们的最终形式都是转换成数据流进行网络传输,

二、分布式架构消息通信类别

2.1、消息渠道(message channel)

    当前消息渠道有两种方式:

    一种是普通类型,就是生产者通过消息通道连接到消费者,该类型生产者只负责向消息通道发送消息,不用关心是那些消费者消费消息,同时也可以多个消费者消费一个生产者产生的消息。

   一种是lookup模式,就是消费者查找生产者。

2.2、发布-订阅模式(publish-subcribler)

   拉模式:该模式主要消息生产者发布消息给消费者,通知消费者来读取消息通道消息。

   推模式:该模式主要是消息生产者直接发送消息给订阅的消费者。

2.3、消息路由(message-router)

   该模式是路由将消息通道和生产者和消费者绑定到一起,绑定方式之一是通过关键字来绑定。

三、应用级消息

3.1、RMI

   RMI是通过java object instance对象进行网络传输,基于TCP/IP协议传输。客户端和服务端通过代理类stub和skelten来实现远程通讯。

   特点:TCP/IP协议,只能java调用

   下面是通信的原理图:

   

本人总结了一个小口诀,方便记忆:

      客说说,服说处,说客说调

编成一个简单的故事就是:

      客人找服务员说说,让服务员处理一下,服务员说:客户说要调换位置。

3.2、XML-RPC

   当前协议采用C/S模式,通过HTTP协议传输。传输形式包括一个参数集和文本集。

   优点是:跨平台,C端,S端较强的独立性。

   缺点是:不支持对象,不能在编译期进行校验,只能在运行期间进行校验。

   下面是说明图:

   

当前协议总结了一个口诀:

   客差流,说,流差服。

编一个小故事来方便记忆:

  客人态度差,耍流氓,说店家流氓差的服务。

3.3、bianary-rpc

  当前协议传输方式和xml-rpc差不多,只不过当前协议是将xml转换成二进制来进行传输。

3.4、SOAP协议

  当前协议是XML-RPC协议的高级版,只是XML报文个性不同而已。

  该协议是基于web容器提供的一个WSDL服务,属于分布式架构、轻量级协议,跨平台。

  客户端调用一个webservice WSDL服务,然后在客户端生成一个代理类,当前代理类负责处理或者响应服务端的数据。当一个服务端接受到客户端的请求后,在服务端分配一个进程处理客户端请求,然后将处理结果响应给客户端,客户端代理类解析xml数据,返回给调用者。

下面是调用图:

   

编了一个口诀:

  客代说,我说响说代客

编一个小故事:

 客人代说,我说响说待客。

3.5、JMS

 JMS是实现java领域远程通信的一种手段和方法,基于JMS实现远程通信时和RPC是不同的,虽然可以做到RPC的效果,但因为不是从协议级别定义的,因此我们不认为JMS是个RPC协议,但它确实是个远程通信协议,在其他的语言体系中也存在着类似JMS的东西,可以统一的将这类机制称为消息机制,而消息机制呢,通常是高并发、分布式领域推荐的一种通信机制,这里的主要一个问题是容错。

JMS是Java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型

来看JMS中的一次远程通信的过程:

  1. 客户端将请求转化为符合JMS规定的Message;
  2. 通过JMS API将Message放入JMS Queue或Topic中;
  3. 如为JMS Queue,则发送中相应的目标Queue中,如为Topic,则发送给订阅了此Topic的JMS Queue。
  4. 处理端则通过轮训JMS Queue,来获取消息,接收到消息后根据JMS协议来解析Message并处理。

 

 

发表评论

全部评论:0条

鸿福951

努力打造一个好用的webui

热评文章

推荐文章