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 Every Silo 的状态保存在 /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。 如果操作成功,将对表进行以下更改:
|