ZooKeeperBasedMembershipTable 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Apache Zookeeper 3.4.6을 사용하는 멤버 자격 테이블 구현 https://zookeeper.apache.org/doc/r3.4.6/
public class ZooKeeperBasedMembershipTable : Orleans.IMembershipTable, Orleans.Messaging.IGatewayListProvider
type ZooKeeperBasedMembershipTable = class
interface IMembershipTable
interface IGatewayListProvider
Public Class ZooKeeperBasedMembershipTable
Implements IGatewayListProvider, 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
생성자
ZooKeeperBasedMembershipTable() |
Apache Zookeeper 3.4.6을 사용하는 멤버 자격 테이블 구현 https://zookeeper.apache.org/doc/r3.4.6/ |
속성
IsUpdatable |
이 IGatewayListProvider가 반환된 정보를 새로 고칠지 또는 항상 동일한 gw 목록을 반환할지를 지정합니다. (현재 정적 구성 기반 StaticGatewayListProvider만 업디바이스할 수 없습니다. 다른 모든 항목입니다.) |
MaxStaleness |
반환된 정보의 최대 부실에 바인딩되도록 이 IGatewayListProvider를 새로 고치는 빈도를 지정합니다. |
메서드
DeleteMembershipTableEntries(String) |
지정된 deploymentId의 모든 테이블 항목을 삭제합니다. |
GetGateways() |
클라이언트가 Orleans 클러스터에 연결하는 데 사용할 수 있는 게이트웨이(사일로) 목록을 반환합니다. Uri는 "gwy.tcp://IP:port/Generation" 형식입니다. Uri 형식에 대한 자세한 내용은 Utils.ToGatewayUri 및 Utils.ToSiloAddress를 참조하세요. |
InitializeGatewayListProvider(ClientConfiguration, Logger) |
ZooKeeper 기반 게이트웨이 공급자 초기화 |
InitializeMembershipTable(GlobalConfiguration, Boolean, Logger) |
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도 업데이트하려고 합니다. 작업이 성공하면 테이블에 다음과 같은 변경 내용이 적용됩니다.
|