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 を更新する頻度を指定します。この 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) |
アトミックに、1 つのサイロに対して新しい MembershipEntry を挿入 (追加) し、TableVersion も更新しようとします。 操作が成功すると、テーブルに次の変更が加えられます。
|
ReadAll() |
メンバーシップ テーブルの完全なコンテンツをアトミックに読み取ります。 返された MembershipTableData には、テーブル内のすべてのサイロのすべての MembershipEntry エントリと、このテーブルの TableVersion が含まれます。 MembershipEntries と TableVersion はアトミックに読み取る必要があります。 |
ReadRow(SiloAddress) |
特定のサイロに関するメンバーシップ テーブル情報をアトミックに読み取ります。 返される MembershipTableData には、特定のサイロに対して 1 つの MembershipEntry エントリと、このテーブルの TableVersion が含まれます。 MembershipEntry と TableVersion はアトミックに読み取る必要があります。 |
UpdateIAmAlive(MembershipEntry) |
このサイロの MembershipEntry の IAmAlive パーツ (列) を更新します。 この操作では、IAmAlive 列のみを更新し、他の列を変更しないでください。 この操作は "ダーティ ライト" または "インプレース更新" であり、etag 検証なしで実行されます。 eTag の更新に関して: この操作では、特定のサイロ行に関連付けられている eTag が自動的に更新される可能性がありますが、更新する必要はありません。 また、etag を変更しない ("ダーティ ライト") ままにすることもできます。 TableVersion に関しては、この操作でテーブルの TableVersion を変更しないでください。 それは手つかずのままにする必要があります。 テーブルの意味上の理由により、この操作が失敗する可能性があるシナリオはありません。 ネットワークの問題またはテーブルが利用できないために失敗する可能性があります。 |
UpdateRow(MembershipEntry, String, TableVersion) |
アトミックに、1 つのサイロの MembershipEntry を更新し、TableVersion も更新しようとします。 操作が成功すると、テーブルに次の変更が加えられます。
|