美文网首页
分布式-2-远程通信

分布式-2-远程通信

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-10-02 09:25 被阅读0次

远程通信方式

  • RPC(Remote Procedure Call Protocol)
    • C/S方式
    • tcp协议,发送请求,等待响应
    • 请求包括一个参数集和一个文本值,常形成“classname.methodname”形式
    • 优点
      • 跨语言跨平台,C端和S端有更大的独立性
    • 缺点
      • 不支持对象,无法在编译期检查错误,只能在运行期检查
  • RMI(Remote Method Invocation)
    • 采用stubs和skeletons进行远程对象通讯
    • stub充当远程对象的客户端代理,和远程对象有相同接口
    • 远程对象的调用实际是调用stub来完成的,RMI就好比是本地工作
    • tcp/ip协议,客户端直接调用服务端上的一些方法
    • 优点
      • 强类型,编译期可检查错误
    • 缺点
      • 只基于JAVA语言,客户端与服务器紧耦合
  • JMS(Java Messaging Service)
    • Java的消息服务
    • JMS客户端之间可以通过JMS服务进行异步消息传输
    • 消息模型
      • Point-to-Point,点对点
      • Publish/Subscribe,发布订阅
  • Web Service
    • 基于web容器
    • 底层使用http协议
    • 类似一个远程服务提供者
    • 通过一个servlet,提供服务
    • 机制
      • 客户端从服务器得到WSDL,生成代理类
      • 代理类负责与WebService服务器的Request和Response
      • 数据(XML)被封装成SOAP(Simple Oject Access Protocol)格式发送到服务器
      • 服务器生成一个进程解析Request中的SOAP包
      • 业务处理
      • 对计算结果进行SOAP包装
      • 将包作为Response发送给客户端代理类
      • 客户端代理类对SOAP包进行解析
      • 后续操作
    • 5个层次
      • http传输信道
      • XML数据格式
      • SOAP封装格式
      • WSDL描述方式
      • UDDI
        • 目录服务,可以用它对Webservices进行注册和搜索

对比

  • RPC与RMI
    • RPC跨语言,RMI只支持Java
    • 可以说RMI是面向对象方式的Java RPC
    • RMI调用远程对象方法,允许返回Java对象及基本数据类型;RPC不支持对象,消息由外部数据表示语言(External Data Representation,XDR)表示,这种语言抽象了字节序类和数据类型结构之间的差异
    • RMI中,远程接口使每个远程方法都具有方法签名;如果一个方法在服务器上执行,但是没有相匹配的签名被添加到远程接口,就不能被RMI客户方调用
    • RPC中,到达RPC服务器的请求包含一个参数集和一个文本值,通常形成“classname.methodname”的形式
  • JMS与RMI
    • JMS是消息通知机制;RMI对象绑定在本地JVM中,只有函数参数和返回值是通过网络传送的(请求应答机制)
    • RMI一般都是同步的;JMS一般只是发出Message到Server,发出之后一般不关心谁用了message
    • 所以,一般RMI应用是紧耦合,JMS应用相对来说是松耦合
  • Web Service与RMI
    • RMI在tcp协议上传递可序列化java对象,语言仅java;Web Service是在http协议上传递xml数据,语言平台无关
  • Web Service与JMS
    • Web Service专注于远程调用,JMS专注于消息交换
    • 多数情况下Web Service是两系统间直接交互(consumer < - > producer),而JMS是三方系统交互(consumer <- broker -> producer)为主
    • 当然,JMS也可以实现request-response模式的通信,只要consumer或producer其中一方兼任broker即可
    • JMS的异步调用可以抵御流量洪峰
    • Web Service通常为同步调用,有复杂的对象转换,相比SOAP,JSON和REST都是很好的http架构方案
    • 举个例子:电子商务分布式系统中,有支付系统和业务系统,支付系统负责用户付款,付款成功后需通知各业务系统,这个时候,既可以用同步也可以用异步,使用异步的好处是能抵御流量高峰
    • JMS是java平台消息规范;JMS消息一般不是xml,而是java对象;很明显,JMS没考虑异构系统,说白了,JMS就没考虑非java的东西;但是好在现在大多数的JMS Provider都解决了异构问题;相比Web Service的跨平台各有千秋吧

相关文章

  • 分布式-2-远程通信

    远程通信方式 RPC(Remote Procedure Call Protocol)C/S方式tcp协议,发送请求...

  • Git快速入门(05)Git的四种通信协议

    Git是一个分布式的版本管理工具,分布式肯定会涉及到远程通信,下面我们来了解一下Git的远程通信协议。分布式通信需...

  • 发布订阅模式成就分布式通信技术,干货满满

    前面我们一起学习了分布式通信中的远程调用(分布式通信技术之远程调用:RPC)。远程调用的核心是在网络服务层封装了通...

  • 《分布式技术原理与算法解析》学习笔记Day17

    分布式通信:远程调用 分布式的本质是多进程协作,共同完成任务,我们需要关注进程之间如何通信。 什么是本地调用和远程...

  • RPC、SOAP、HTTP REST

    分布式系统离不开多进程之间的通信问题,包括本机进程之间的IPC通信和基于网络的进程间远程通信。各种通用的远程通信技...

  • Hadoop RPC 工作机制

    网络通信模块是分布式系统的底层基础,支撑上层分布式环境下复杂的进程间通信。远程过程调用(RPC,Remote Pr...

  • 分布式实现: dubbo+zookeeper

    分布式 Dubbo + Zookeeper + SpringBoot RPC: 指远程过程调用, 是一种进程间通信...

  • gRPC——Rust应用实例

    gRPC RPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法,已...

  • 移动计算【临时,考完删】

    移动计算三要素 信息交互、无线通讯、移动终端 网络要解决的问题 将集中计算变为分布式计算 远程通信:远程过程调用、...

  • RPC深入

    1.RPC简介 RPC(Remote Process Call), 即远程过程调用, 是一个分布式系统间通信的必备...

网友评论

      本文标题:分布式-2-远程通信

      本文链接:https://www.haomeiwen.com/subject/rrilpctx.html