我正在使用 gRPC csharp 实现来让两个服务相互通信。
从客户打来电话时,我正在设置截止日期。在服务器上接到电话时,我正在阅读截止日期。令我惊讶的是,截止日期值不一样,相差几分之一秒。
gRPC 文档说 Deadline 是一个固定的时间点。所以我希望在服务器上收到相同的值,但事实并非如此。
我可以看到它提到了100ns的舍入,但在我的情况下它更多。
可以考虑飞行时间吗?我找不到这样的逻辑,这将违反固定时间点的概念。
gRPC 源代码中的gRPC internalTimespec
和 c#之间的转换是否存在错误?DateTime
示例(伪)代码:
// client:
var serviceClient = new ServiceClient(new Channel("address", "port", ChannelCredentials.Insecure));
var deadline = DateTime.UtcNow;
Console.WriteLine(deadline.ToString("O"));
serviceClient.SendAsync(request, new CallOptions(null, deadline));
// server:
public override async Task Send(SendRequest request, ServerCallContext context)
{
Console.WriteLine(context.Deadline.ToString("O"));
}
控制台输出为:
2020-09-22T14:14:20.8359860Z
为客户
2020-09-22T14:14:21.2910442Z
用于服务器