grpc - gRPC - 截止日期与更改系统时间
问题描述
我的软件在一个系统上运行,该系统的系统时钟由外部服务器任意设置。没有关于 (a) 发生多少时间变化的规则或保证;(b) 这种时间变化多久发生一次。
我的第一个问题:在这种情况下,是否有关于处理截止日期的最佳实践,因为截止日期(截至目前)是绝对时间而不是持续时间?
我的第二个问题:如果我的软件既不关心交付确认也不关心 rpc 调用的返回值,我是否可以安全地将截止日期设置为“现在”甚至过去的某个时间,以便尽快返回 rpc 调用尽可能?即如果截止日期已经过去,是否保证发送 rpc 的传出有效负载?
这并不重要,但我在不同的应用程序中同时使用 .NET 和 gRPC 的 C++ 实现。
解决方案
根据gRPC 文档,没有单一的直接方法可以确定最佳截止日期。如果您的服务像Greeter 示例一样简单,那么 100 毫秒的截止日期就可以了。但是,如果您的服务很复杂,例如全球分布或必须在数据库中执行大型复杂查询,那么您必须考虑许多因素,例如,
- 整个系统的端到端延迟,可以是同步的或异步的。
- 应用程序设计
和许多其他人。有关设置截止日期的推荐方法,请参阅设置截止日期部分。由于系统时钟可以更改为向后或向前,因此截止日期计数已用时间而不是取决于系统时钟。
如果您的软件不关心 rpc 调用的返回值,您可以在不同的线程中进行调用并继续使用常规线程。
推荐阅读
- visual-studio - 如果可能,定义规则以使成员私有
- heroku - 为什么我无法连接到数据库?
- c# - 如何将每个查询行显示到富文本框中?
- mongodb - 在文本搜索字符串中有一个数字会阻止它被发现
- c++ - C++ constexpr 生成 std::vector
- openmpi - Openmpi 与 CUDA 安装问题
- javascript - json模式验证后如何使joi输出所有带有路径的错误?
- bitbake - 什么是新的 IMAGE_DEPENDS_wic_append_suffix 表示法?
- r - 在具有书面功能的列子集上使用 lapply?
- php - Laravel 控制器显示错误尝试获取非对象的属性“地址”