我有两个服务,服务A和服务B。
我在服务B上调用了一个方法doStuff(),它用当时运行B代码的计算机上的system.CurrentTime()在数据库中创建了一个条目。
我在服务A上调用了一个方法compareThings(),它查询服务B,提取我刚刚添加的条目,并获取时间戳字段,将其称为tsFromB。现在,我想检查一下system.CurrentTime() - tsFromB。
我的问题是,如果计算机时钟差之间的1分钟差很重要,那么运行Service A的计算机上的system.CurrentTime() - tsFromB是不是一个好的选择?这是正确的吗?
发布于 2019-09-14 09:32:49
由于多种原因,您不能信任单个计算机时钟。
为了回答你在评论部分的问题,我将分享Martin Kleppmann的书中的摘录,设计数据密集型应用程序来自他关于不可靠时钟的部分。
当然,如果您决定从另一个分布式组件获取时钟数据,那么您将再次陷入分布式计算的经典问题,例如,如果为您提供时间的服务停机、无法访问或太慢等等,会发生什么情况。这也适用于数据库。如果有人处理这个问题,使用这个全局的、共享的实体将在一定程度上解决问题。
发布于 2019-09-14 03:27:49
在这种情况下,我通常不会使用计算机A或B的时间戳。我将使用数据库中的当前时间。
发布于 2019-09-14 03:35:27
https://stackoverflow.com/questions/57929269
复制相似问题