我们有一个大型的高性能软件系统,它由多个交互的 Java 进程(不是 EJB)组成。每个进程可以在同一台机器上,也可以在不同的机器上。
某些事件在一个进程中生成,然后以不同的方式传播到其他进程以进行进一步处理等等。
出于基准测试的目的,我们需要创建每个事件何时通过“检查点”的日志,最终将这些日志组合起来以获得每个事件如何通过系统传播以及延迟多少的时间线(当然,进程切换和 IPC 添加延迟,没关系)。
当然,问题在于时钟同步。所以这是我的问题:
1)如果所有进程都在同一台机器上,是否保证 currentTimeMilis 在调用时是准确的?ITP的错误有一定的界限吗?
2)如果某些进程可能在不同的机器上,是否有用于时钟同步的现成解决方案(也是免费或开源的)?我最好寻找一种可以绕过操作系统(Windows 或 Linux)并直接从 Java 工作的解决方案。我还理想地寻找可以以微秒精度运行的东西。我考虑过 NTP,但我不确定它是否可以通过 Java 而不是通过操作系统获得,而且我不确定它的复杂性。
3)有没有办法确定在特定配置(或我最终使用的任何解决方案)中使用 NTP 的误差范围,以便我可以在计算延迟时给出误差范围?
谢谢!