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 用戶端時,可以設定所有作業相對的基底路徑。
在此實作中:每個接收器部署都有一個節點 /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() |
傳回閘道清單, (定址接收器) 可供用戶端用來連線到「中樞」叢集。 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。 如果作業成功,則會對資料表進行下列變更:
|