`

远程调用的语义

阅读更多

    远程调用由于涉及到服务器和客户端等多个节点以及需要通过网络通讯等,会引入更多的故障可能。本地调用的语义都是恰好一次 ,不会多也不会少。而远程调用的语义就比较复杂,依据三个选择将产生不同的语义:
1)重发请求消息:客户端是否重发请求,直到收到应答或者认定服务器故障为止
2)过滤重复消息:当客户端重发请求时候,服务器是否过滤重复的请求
3)重传结果:服务器是否保存结果消息的历史,以便服务器不用重新执行操作就能重传结果。

对这三个选择的不同组合将产生三种可能的远程调用语义:
重发请求消息 过滤重复消息 重传结果            语义

否            不适用       不适用             或许
是            否           重新执行操作       至少一次
是            是           重传结果           至多一次

或许调用语义
:远程方法可能执行一次,或者根本不执行(在消息遗漏或者服务器崩溃的情况下)

至少一次调用语义 :远程方法要嘛至少执行一次并返回结果,要嘛返回一个异常。因为启用了重发请求消息,服务器也重新执 行操作,因此远程调用至少执行一次,除非服务器崩溃;但是,由于服务器重新执行操作,如果调用不是幂等的,那么多次重复执行将产生副作用叠加,可能不符合 预期需求。对于幂等操作,至少一次调用语义是可以接受的。

至多一次调用语义 :在此语义下,服务器会过滤重复的请求,并且缓存执行的结果重传而非重新执行。因此远程调用同样也是 返回调用结果,或者一个异常。在返回结果的情况下,可以确认服务器恰好执行一次,与本地调用语义一样,不会有副作用叠加。如果返回异常,就是通知调用者没 有返回结果,远程调用要嘛执行了一次,要嘛根本没有执行。总之,远程调用至多执行一次。

Java RMI的调用语义是至多一次。

分享到:
评论

相关推荐

    支付宝 远程调用规范

    【支付宝远程调用规范】 在支付宝的分布式系统中,远程调用是不可或缺的一部分,它涉及到服务之间的通信和协作。为了确保系统的稳定性和高效性,有必要制定一套规范来指导远程调用的设计和实施。 1. **服务架构...

    基于Java的远程方法调用及其应用

    - **远程引用(Remote Reference)**:这一层处理低端远程方法调用连接的调用语义,并负责执行专门的远程方法协议。它提供了一个`RemoteRef`对象,代表远程对象的一个句柄。`RemoteRef`使用远程引用执行远程对象的一...

    python 远程调用

    Python 远程调用(RPC,Remote Procedure Call)是一种分布式计算技术,允许程序在不同的网络节点上执行并互相通信,仿佛它们都在同一台计算机上运行。这种技术在大型项目、多服务器架构或分布式系统中非常常见,...

    远程过程调用协议规范 RFC1050

    总的来说,RFC1050为实现跨网络环境的高效、可靠的远程调用提供了基础,促进了分布式计算的发展。这份文档对理解RPC协议的工作原理和实现至关重要,对从事网络编程和系统集成的工程师来说具有很高的参考价值。

    开放网络计算远程进程调用

    ### 开放网络计算远程进程调用(ONC RPC)知识点详解 #### 一、概述 本文档详述了开放网络计算远程过程调用(ONC Remote Procedure Call, 简称 ONC RPC)协议版本2的相关规定。ONC RPC 是一种在互联网社区内使用的...

    在线语义视觉SLAM基础:C++语言程序中调用Python实现的图像分割网络、获取分割结果+源代码+文档说明

    在线语义视觉SLAM基础:C++语言程序中调用Python实现的图像分割网络、获取分割结果+源代码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传...

    语义自动批量生成(java源码)+restAPI

    在这个项目中,REST API允许远程客户端通过HTTP协议调用TTS服务,进行文本转语音操作。API设计遵循REST原则,如使用HTTP动词(GET, POST等)表示操作,通过URL定位资源,以JSON或XML格式传递数据。这样的设计使得...

    dubbo_demo.zip

    需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。 RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。各种开发语言都有自己的RPC框架。Java中的RPC框架比较多,广泛使用的有RMI...

    基于Python+pyQt作为GUI框架的图像语义分割软件,支持mobilenet、resnet50等8个模型+源代码+文档说明

    基于Python+pyQt作为GUI框架的图像语义分割软件,支持mobilenet、resnet50等8个模型+源代码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传...

    python如何通过protobuf实现rpc

    rpc的主要功能是让分布式系统的实现更为简单,为提供强大的远程调用而不损失本地调用语义的简洁性。为了实现这个目标,rpc框架需要提供一种透明调用机制让使用者不必显示区分本地调用还是远程调用。rpc架构涉及的...

    RFC1057_RPC远程步骤呼叫协议说明书版本 2 .doc

    总的来说,RFC1057为开发者提供了一个清晰的框架,以便他们能实现跨网络的、高效且安全的远程调用。通过理解并遵循RPC协议,开发人员可以构建出分布式的、可扩展的应用程序,这些应用程序能够在互联网上无缝协作。

    基于语义分析的Webshell检测技术研究.pdf

    Webshell作为后门程序,通常用于网页服务器,能够让攻击者通过网页浏览器对服务器进行远程控制。其隐蔽性强,一旦植入到网站中,攻击者就可以通过它对网站进行任意篡改,窃取数据,甚至进行更深入的网络攻击。因此,...

    webservice

    这种技术广泛应用于分布式系统中,如银联提供的POS刷卡系统,商场的POS机可以通过远程调用来调用银行服务器上的转账方法,实现资金的转移。WebService还常用于构建服务导向架构(SOA),将服务暴露给第三方应用,如...

    基于springboot框架,集成neo4j、spark-mllib技术构建电影知识图谱实现的智能问答系统.zip

    此外,Mllib还支持自然语言处理任务,可用于问答系统的语义理解和回答生成。 电影知识图谱的构建包括数据采集、预处理、图构建和索引等步骤。数据可能来源于公开的电影数据库API,如IMDb或豆瓣,通过网络爬虫技术...

    基于树莓派的远程app语音控制系统(简例)

    图灵机器人提供语义理解,而讯飞语音则负责将用户的语音转换为文本。 4. 图灵机器人:图灵机器人是一款智能对话引擎,能够理解和生成人类语言,实现自然语言处理。在本例中,它接收来自APP的语音输入,解析出用户的...

    Java RMI Tutorial.pdf

    - **透明性**:RMI提供了本地方法调用的语义,隐藏了远程通信的细节。 - **安全性**:RMI支持安全的身份验证和授权机制。 - **可移植性**:RMI支持跨平台的远程对象调用。 **限制**: - **性能**:由于涉及到网络...

    Linux网络文件系统(NFS)分析.doc

    RPC 是一种远程过程调用机制,允许客户端调用服务器端的函数。SUN RPC 是一种常用的 RPC 协议,定义了 RPC 的概念模型和传输层实现机制。SUN RPC 的传输层实现机制包括通信语义和动态端口映射等。 Linux 的 NFS ...

Global site tag (gtag.js) - Google Analytics