网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

分布式系统——RPC中的调用语义

更新时间:2026年03月27日   作者:spoto   标签(Tag):

本文将详细阐述调用语义、其各种类型,以及分布式系统中RPC所面临的各种问题。 RPC的语义与本地过程调用相同。调用进程会调用该过程,向它提供输入参数,然后等待该过程的执行结果。 当该过程完成后,它会将结果返回给调用该过程的进程。 如果分布式系统要实现透明性,那么在设计RPC系统时,必须考虑与远程过程调用相关的以下问题:

  • 装订方式:绑定操作实际上是在调用进程的名称与远程过程的地址之间建立了一个链接。
  • 沟通透明度:用户应该不知道,他们正在调用的这个过程实际上是远程进行的。
  • 并发性:通信技术不应与并发机制相混淆。当单线程的客户端和服务器在等待RPC结果时陷入阻塞状态,可能会导致严重的延迟。而轻量级进程则允许服务器同时处理来自多个客户端的请求。
  • 异质性:不同的机器可能具有不同的数据表示方式,运行于不同的操作系统上,或者其远程操作程序所使用的语言也各不相同。

RPC失败的原因:

RPC Runtime包含了处理故障的代码。需要确定在发生故障时,远程操作可以运行的频率。

  • 调用方/被调用方的节点出现了故障。
  • 响应消息/通话信息缺失。

呼叫语义的类型:

  • 也许,或者有可能被称为“调用语义学”:这是最弱的一种实现方式。在这种情况下,调用方需要等待一个预先设定的超时时间,之后才会继续执行任务。这种实现方式适用于那些需要定期更新数据的服务场景。
  • “最后呼号语义学”:根据超时时间,会重新发送调用消息。在超时时间过后,系统会使用最后一次执行过程中得到的结果。此时,系统会处理那些已经失效的调用请求。这种机制在设计简单的RPC协议时非常有用。
  • “最后一批通话的语义”:它类似于“Last-one-Call”语义模型,不过这里的区别在于,该模型会忽略那些没有对应呼叫标识符的呼叫。每当某个呼叫被重复时,系统会为该呼叫分配一个新的呼叫标识符。只有当呼叫者的身份与最近一次重复的呼叫相匹配时,该呼叫才会被接受。
  • 至少一次调用语义:该调用的执行会进行一次或多次,但传递给调用者的结果并未被明确指定。同样,重传操作也是基于超时时间来进行的,而孤儿呼叫则被完全忽略了。在嵌套调用的情况下,如果存在孤儿呼叫,那么结果将从第一个响应消息中获取;否则,无论接收到的是来自孤儿呼叫还是其他呼叫的响应,其他响应都会被忽略。
  • 精确呼叫语义:无论通话被传输多少次,这种重复进行的操作的可能性都会被消除。只有当服务器从客户端收到确认消息后,才会从回复缓存中删除相关信息。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料