2012-09-13 2 views
2

저는 최근 새로운 웹 및 작업자 역할을 Azure에 푸시했습니다.이 기능은 캐시 인프라를 사용하여 비즈니스 프로세스 중 하나에서 상태를 공유합니다. 이 경우 웹 역할 A작업자 역할 B이 다양한 내부 비즈니스 프로세스의 기초로 사용할 DateTime 필드를 설정합니다. 대부분의 경우, 작업자 역할 B는 작업자 역할 호스트 시스템 시계를 기반으로하는 UtcNow와의 시간 차이를 측정합니다. 는 측정하기 어려운되어 있지만Azure의 역할 간 시간 동기화

정확하게이 큰 ​​차이를 것으로 보인다 웹 역할의 호스트 클럭과 작업자 역할의 호스트 클럭 사이 (우리의 필요에 대한 ). Azure에서 시계를 동기화하는 메커니즘이 있습니까? 아니면 사용해야 할 다른 방법이 있습니까?

+0

Web \ Worker Role Machine의 각 인스턴스에서 Time Server와 동기화 할 시간을 가정합니다. 그 기본 동작이 아닌가요? –

답변

1

당신은 synchronize the time of your instances with a common time server에 예를 들어 매 5 분을 실행 시작 작업 + 예약 된 작업을 사용할 수 있습니다

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 애저 데이터베이스에서 시간을 얻을 수 있고에 대한 참조로 그 시간을 사용하는 모든 인스턴스 :

select getdate()