最适合分布式环境的Rust时间类型是什么?

时间:2018-06-21 18:30:12

标签: rust

我阅读了std::time的文档,发现有3种可用时间:

我需要最接近RTC且几乎没有时钟漂移的实现。我需要在分布式系统中的机器之间使用时间。

我考虑过与Instant一起使用,但后来我也read this

  

但是请注意,不能保证瞬间稳定。其他   话说,底层时钟的每个刻度可能不一样长   (例如,几秒钟可能比其他时间更长)。

哪一种最适合分布式环境?

2 个答案:

答案 0 :(得分:2)

时间点的分布式通信本质上有两种方法:

  1. 使用PTP在您的各种计算机上同步时间,并假定精度足以满足您的应用;您应该能够达到通常足够好的微秒精度。
  2. 请勿使用全球时间,而是:
    • 将每台不同的机器标记为不同的时间源(甚至是每一个不同的 core ),
    • 标记每个事件的时间来源和时间,
    • 从不尝试比较来自不同时间源的时刻。

在任何一种情况下,Instant(单调)都比SystemTime好。 SystemTime很奇怪,因为时间可以倒带,通常这是意外的。

答案 1 :(得分:1)

在这三者中,Instant似乎至少在系统范围内会为您提供RTC的最近似值。

从分布式的角度来看,您可能只希望在一台计算机上只有一个实例,然后在另一台计算机上查询该实例以获得相对时间,这样就可以确保至少在事件时间方面保持一致。

粗略地看了一眼,如果您想要准确的时间,我无法找到一个开箱即用的解决方案。