gRPC - 截止日期与更改系统时间

Vel*_*ven 0 grpc

我的软件运行在一个由外部服务器任意设置其系统时钟的系统上。没有关于 (a) 发生多少时间变化的规则或保证;(b) 这个时间变化发生的频率。

我的第一个问题:在这种情况下,是否有处理截止日期的最佳实践,因为截止日期(截至目前)是绝对时间而不是持续时间?

我的第二个问题:如果我的软件既不关心交付确认也不关心 rpc 调用的返回值,我是否可以安全地将截止日期设置为“现在”甚至过去的时间,以便尽快返回 rpc 调用尽可能?即如果截止日期已经过去,是否保证发送 rpc 的传出有效载荷?

这并不重要,但我在不同的应用程序中同时使用了 gRPC 的 .NET 和 C++ 实现。

Sha*_*uza 5

根据gRPC 文档,没有确定最佳截止日期的单一直接方法。如果您的服务像Greeter 示例一样简单,那么 100 毫秒的截止日期就可以了。但是,如果您的服务很复杂,例如全局分布或必须在数据库中执行大型复杂查询,那么您必须考虑许多因素,例如,

  • 整个系统的端到端延迟,可以是同步的,也可以是异步的。
  • 应用设计

和许多其他人。有关设置截止日期的推荐方法,请参阅设置截止日期部分。此外,截止时间计数经过的时间而不是取决于系统时钟,因为系统时钟可以更改为向后或向前。

如果您的软件不关心 rpc 调用的返回值,您可以在不同的线程中进行调用并继续您的常规线程。