最近在读一个存储系统的代码的时候,产生了一些疑惑。背景是,这个存储系统对于一些重试的请求处理的比较敏感,(应该是写数据的系统都会敏感一些,因为要避免数据写错了),所以就涉及到一些RPC重试的语意的问题。 一个最基本的问题是,当我们发出一个RPC的时候,预期对端作出的行为是什么: * 如果RPC超时了,对端可能执行了rpc,也可能没有执行rpc * 如果我们不做重试的话,对端是否只会执行一次rpc呢 * 如果我们做了重试的话,对端的行为预期是什么样的,会过滤掉重试的请求吗 * 如果重试的response和之前的res…