ZooKeeperBasedMembershipTable 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Apache Zookeeper 3.4.6을 사용하는 멤버 자격 테이블 구현 https://zookeeper.apache.org/doc/r3.4.6/
public class ZooKeeperBasedMembershipTable : Orleans.IMembershipTable
type ZooKeeperBasedMembershipTable = class
interface IMembershipTable
Public Class ZooKeeperBasedMembershipTable
Implements IMembershipTable
- 상속
-
ZooKeeperBasedMembershipTable
- 구현
설명
사용되는 ZK 기능에 대한 간략한 개요: 데이터는 노드 트리(파일 시스템과 유사)로 표시됩니다. 모든 노드는 경로로 처리되며 데이터를 바이트 배열로 저장할 수 있으며 버전이 있습니다. 노드가 만들어지면 해당 버전은 0입니다. 업데이트 시 버전은 원자 단위로 증가합니다. 업데이트는 예상된 현재 버전에서도 조건부일 수 있습니다. 트랜잭션은 원자성으로 성공하거나 실패하는 여러 작업을 보유할 수 있습니다. Zookeeper 클라이언트를 만들 때 모든 작업이 상대적인 기본 경로를 설정할 수 있습니다.
이 구현에서: 모든 Orleans 배포에는 /UniqueDeploymentId 모든 사일로의 상태가 /UniqueDeploymentId/IP:Port@Gen 저장됩니다. 모든 사일로의 IAmAlive는 /UniqueDeploymentId/IP:Port@Gen/IAmAlive IAmAlive의 업데이트가 무조건이므로 별도의 노드에 저장됩니다.
노드의 ZK 버전은 ETag입니다. 테이블 버전은 /UniqueDeploymentId의 버전입니다. 사일로 항목 버전은 /UniqueDeploymentId/IP:Port@Gen
생성자
메서드
CleanupDefunctSiloEntries(DateTimeOffset) |
Apache Zookeeper 3.4.6을 사용하는 멤버 자격 테이블 구현 https://zookeeper.apache.org/doc/r3.4.6/ |
DeleteMembershipTableEntries(String) |
지정된 clusterId의 모든 테이블 항목을 삭제합니다. |
InitializeMembershipTable(Boolean) |
ZooKeeper 기반 멤버 자격 테이블을 초기화합니다. |
InsertRow(MembershipEntry, TableVersion) |
원자적으로 하나의 사일로에 대해 새 MembershipEntry를 삽입(추가)하고 TableVersion도 업데이트하려고 합니다. 작업이 성공하면 테이블에 다음과 같은 변경 내용이 적용됩니다.
|
ReadAll() |
멤버 자격 테이블의 전체 콘텐츠를 원자성으로 읽습니다. 반환된 MembershipTableData에는 테이블의 모든 사일로에 대한 모든 MembershipEntry 항목과 이 테이블의 TableVersion이 포함됩니다. MembershipEntries 및 TableVersion은 원자성으로 읽어야 합니다. |
ReadRow(SiloAddress) |
지정된 사일로에 대한 멤버 자격 테이블 정보를 원자성으로 읽습니다. 반환된 MembershipTableData에는 지정된 사일로에 대한 MembershipEntry 항목 하나와 이 테이블에 대한 TableVersion이 포함됩니다. MembershipEntry 및 TableVersion은 원자성으로 읽어야 합니다. |
UpdateIAmAlive(MembershipEntry) |
이 사일로에 대한 MembershipEntry의 IAmAlive 부분(열)을 업데이트. 이 작업은 IAmAlive 열만 업데이트하고 다른 열은 변경하지 않아야 합니다. 이 작업은 "더티 쓰기" 또는 "현재 위치 업데이트"이며 etag 유효성 검사 없이 수행됩니다. eTags 업데이트와 관련하여: 이 작업은 지정된 사일로 행과 연결된 eTag를 자동으로 업데이트할 수 있지만 그렇게 할 필요는 없습니다. etag가 변경되지 않도록 할 수도 있습니다("더티 쓰기"). TableVersion과 관련하여 이 작업은 테이블의 TableVersion을 변경하지 않아야 합니다. 그것은 그대로 두어야합니다. 테이블 의미상 이유로 인해 이 작업이 실패할 수 있는 시나리오는 없습니다. 네트워크 문제 또는 테이블 사용 불가로 인해 실패할 수 있습니다. |
UpdateRow(MembershipEntry, String, TableVersion) |
원자적으로 하나의 사일로에 대한 MembershipEntry를 업데이트하고 TableVersion도 업데이트하려고 합니다. 작업이 성공하면 테이블에 다음과 같은 변경 내용이 적용됩니다.
|