标签: vector-clock

Java是否有现成的时钟同步解决方案?

我们有一个大型高性能软件系统,它由多个交互式Java进程(而不是EJB)组成.每个进程可以在同一台机器上,也可以在不同的机器上.

某些事件在一个进程中生成,然后以不同的方式传播到其他进程以进行进一步处理,依此类推.

出于基准测试目的,我们需要创建一个日志,记录每个事件何时通过"检查点",最终将这些日志组合起来,以获得每个事件如何通过系统传播的时间线以及延迟(当然,流程切换和IPC添加延迟,没关系).

当然,问题是时钟同步.所以这是我的问题:

1)如果所有进程都在同一台机器上,是否保证currentTimeMilis在通话时是准确的?ITP的错误是否存在一定的约束?

2)如果某些进程可能在不同的机器上,那么是否存在用于时钟同步的现成解决方案(也是免费或开源的)?我最好寻找可以绕过操作系统(Windows或Linux)并直接从Java工作的解决方案.我也非常理想地寻找能够以微秒精度运行的东西.我考虑过NTP,但我不确定它是否可以通过Java而不是通过操作系统获得,而且我不确定它的复杂性.

3)有没有办法确定在特定配置(或我最终使用的任何解决方案)中使用NTP的误差范围,以便我可以在计算延迟时给出误差幅度?

谢谢!

java distributed real-time clock-synchronization vector-clock

8
推荐指数
1
解决办法
3423
查看次数

矢量时钟的实现

对于在不同设备上运行的代码,我需要确定在这些设备之间发送的消息的顺序.因此,我想使用矢量时钟,因为我读取矢量时钟允许事件的排序.

我可以使用任何已建立的框架/公共API吗?或参考实现=或者我是否必须从头开始编码?

感谢您的任何参考和提示

java frameworks reference-implementation vector-clock

8
推荐指数
2
解决办法
1万
查看次数

矩阵时钟解决了什么但矢量时钟不能解决?

我理解在标量逻辑时钟方面对向量时钟的需求未能提供足够的信息来判断密钥值存储更新中是否存在更新冲突.

但是我不确定矢量时钟仍然没有解决什么问题,然后通过更庞大的矩阵时钟解决了?

clock distributed-computing vector-clock

5
推荐指数
1
解决办法
2198
查看次数

MongooseJS“versionKey”(__v 字段)是“矢量时钟”吗?

我已经使用 MongooseJSrevisionKey有一段时间了 -__v默认情况下,它包含在文档中的字段。我明白修订号的目的是什么,通常是什么时候更新。

我最近和一位朋友谈论了“矢量时钟”的想法,我提到了 MongoDB 和 MongooseJS 有这个__v领域。当时,听起来这可能是一个矢量时钟。但是在阅读了一些关于矢量时钟的内容后,现在我不确定。

所以我想知道:versionKeyMongooseJS的属性,以及__v它默认产生的字段,可以被认为是一个向量时钟吗?是或否,为什么?

theory mongoose mongodb vector-clock

5
推荐指数
1
解决办法
1182
查看次数

聊天期间以及用户再次登录时,Messenger 如何保持消息的顺序?

我在采访中被问到这个问题,但无法回答。

\n

当两条消息并发时,FB Messenger 如何对用户端的消息进行排序,以避免聊天期间以及用户再次访问 Messenger 时显示顺序出现差异。我认为我们可以为每条消息存储一个时间戳,这是服务器接收消息的时间。但是,这并不能确保客户端消息的正确排序。

\n

假设服务器时间戳无法确定消息的确切顺序,如下所示:

\n
    \n
  1. User-1 向 User-2 的服务器发送消息 M1。
  2. \n
  3. 服务器在 T1 接收 M1。
  4. \n
  5. 同时,User-2向User-1的服务器发送消息M2。
  6. \n
  7. 服务器在 T2 接收消息 M2,使得 T2 > T1。
  8. \n
  9. 服务器将消息 M1 发送到 User-2,将 M2 发送到 User-1。
  10. \n
  11. 因此,用户 1 将首先看到 M1,然后是 M2,而用户 2 将首先看到 M2,然后是 M1。
  12. \n
\n

我读到解决这个问题,我们可以使用矢量时钟,但无法理解如何在聊天期间以及用户再次登录时为不同用户保留消息顺序

\n

在上述场景中,用户 1 将看到 M1,然后是 M2,而用户 2 将看到 M2,然后是 M1。现在,如果每个用户还为其发送给每个客户端的每条消息(分别)生成序列号或时间戳。然后在上面的场景中,user1 将发送序列 <1 (user1 seq), 0(user2 seq) > 的消息 M1,而 user2 将发送序列 <0 (user1 seq), …

distributed distributed-computing distributed-system sequencing vector-clock

4
推荐指数
1
解决办法
2453
查看次数