同步Azure中角色之间的时间

时间:2012-09-13 19:04:57

标签: time azure

我最近将一些新的Web和工作者角色推送到Azure,它使用Cache基础架构在我们的一个业务流程中共享状态。在这种情况下, Web角色A 将设置一个DateTime字段,然后工作者角色B 将用作各种内部业务流程的基础。在大多数情况下,工作者角色B正在测量UtcNow的时间差异,这显然是基于工作者角色主机系统时钟。

虽然很难准确衡量,但Web角色的主机时钟和辅助角色的主机时钟之间似乎存在很大差异(满足我们的需求)。是否存在一种在Azure中同步时钟的机制,或者我应该使用另一种方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用启动任务+每5分钟运行一次的计划任务,例如synchronize the time of your instances with a common time server

function Get-InternetTime { 
  $TcpClient = New-Object System.Net.Sockets.TcpClient 
  [byte[]]$buffer = ,0 * 64 
  $TcpClient.Connect('time.nist.gov', 13) 
  $TcpStream = $TcpClient.GetStream() 
  $length = $TcpStream.Read($buffer, 0, $buffer.Length); 
  [void]$TcpClient.Close() 
  $raw = [Text.Encoding]::ASCII.GetString($buffer) 
  [DateTime]::ParseExact($raw.SubString(7,17), 'yy-MM-dd HH:mm:ss', $null).toLocalTime() 
} 

Set-Date (Get-InternetTime) 

或者您可以从SQL Azure数据库中获取时间并将该时间用作所有实例的参考:

select getdate()