웹 역할이 1 개 있습니다. 시작할 때 초기화 코드를 실행합니다. 이제 N 개의 인스턴스를 갖고 싶지만 그 중 하나만 초기화 코드를 실행하고 나머지는 기다려야합니다.다중 인스턴스 Azure Cloud Service Classic에서 인스턴스를 하나만 초기화하는 방법은 무엇입니까?
마스터 노드 - 슬레이브 노드처럼 보입니다.
어떻게하면됩니까? 이것에 대한 알려진 패턴이 있습니까?
웹 역할이 1 개 있습니다. 시작할 때 초기화 코드를 실행합니다. 이제 N 개의 인스턴스를 갖고 싶지만 그 중 하나만 초기화 코드를 실행하고 나머지는 기다려야합니다.다중 인스턴스 Azure Cloud Service Classic에서 인스턴스를 하나만 초기화하는 방법은 무엇입니까?
마스터 노드 - 슬레이브 노드처럼 보입니다.
어떻게하면됩니까? 이것에 대한 알려진 패턴이 있습니까?
나는이 문제가 오래 전에 Alexandre Brisebois에 의해 해결 된 것으로 생각했습니다. 자신의 클래스 Blob lease manager 및 Job Reservation Service 두 가지를 결합하여
그는이 블로그 게시물에 모든 것을 설명 : 링크의 답변은 SO 만에 바람직하지 않다
내가 아는 필요한 모든 코드를 붙여 넣고 여기서 설명하면 좋은 생각이 아닙니다.
일부 작업을 수행하는 동안 모든 인스턴스가 대기하는 쉬운 방법은 마스터 인스턴스에 lease on a blob in Azure storage을 배치하는 것입니다. 시작시 마스터 인스턴스의 WorkerRole.cs가 일부 Azure 컨테이너에 blob 파일을 만듭니다. 초기화가 완료되면리스를 해제합니다. 슬레이브 인스턴스는 시작하는 동안 동일한 파일을 읽고 임대가 해제 될 때까지 대기합니다. 그것이 풀렸다면 BLOB 파일은 초기화가 완료되었다는 표시를 포함해야합니다.
마스터가되고 싶은 클라우드 역할의 인스턴스를 알고 계십니까? 부팅 한 첫 번째 알파벳 또는 첫 번째 알파벳순입니까? 처음 부팅하는 경우 문제가 더 간단합니다. 각 인스턴스가 파일을 만들거나 임대하려고 시도해야하므로 하나만 제외하고 모두 실패합니다. 인스턴스 임의로 재부팅 할 수 있습니다 만
이후로는 "RoleName_IN_1"하는 경우는, 첫번째 알파벳 한 경우
, 다음 RoleEnvironment.Instance.Id을 (메모리에서가는) 검토하고 있습니다 그것은 수행시 초기화 코드를 회전 다시 초기화하지 않도록하십시오. 일종의 타임 스탬프를 blob 파일에 넣는 방법으로 생각해 볼 필요가 있습니다.
"인스턴스는 파일을 만들거나 임대하려고 시도해야하며 하나만 제외하고 모두 실패합니다."라는 문제가 발생합니다. 초기화가 이미 완료되었거나 초기화가 처음 완료되면 초기화 파일이 거기에 있고 잠겨 있지 않은 경우 인스턴스 N이 초기화가 완료된 후 생성 될 수 있기 때문에 사실이 아닙니다. 앞으로 올 첫 번째 인스턴스가 작업을 완료하고 파일을 릴리스했기 때문입니다. 첫 번째 요청 이후에 인스턴스가 생성되기 때문에 가능합니다. 서비스 자체의 재시작을 식별하는 것이 필요합니다. –
공통 서비스 저장소 또는 "신뢰할 수있는 사전"이 있거나 환경 외부에서 모든 서비스를 다시 시작할 때 지워지거나 다시 인스턴스화되는 RoleEntryPoints 사이에 공통점이있는 경우 작업을 수행합니다. –