ZooKeeperBasedMembershipTable Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Implementación de una tabla de pertenencia mediante 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
- Herencia
-
ZooKeeperBasedMembershipTable
- Implementaciones
Comentarios
Una breve introducción a las características de ZK usadas: los datos se representan mediante un árbol de nodos (similar a un sistema de archivos). Cada nodo se dirige mediante una ruta de acceso y puede contener datos como una matriz de bytes y tiene una versión. Cuando se crea un nodo, su versión es 0. Tras las actualizaciones, la versión se incrementa atómicamente. Una actualización también puede estar condicional en una versión actual esperada. Una transacción puede contener varias operaciones, que se realizan correctamente o no de forma atómica. al crear un cliente de Zookeeper, se puede establecer una ruta de acceso base a la que se refieren todas las operaciones.
En esta implementación: cada implementación de Orleans tiene un nodo /UniqueDeploymentId Cada estado de Silo se guarda en /UniqueDeploymentId/IP:Port@Gen Cada IAmAlive de Cada Silo se guarda en /UniqueDeploymentId/IP:Port@Gen/IAmAlive IAmAlive se guarda en un nodo independiente porque sus actualizaciones son incondicionales.
La versión de ZK de un nodo es su ETag: la versión de la tabla es la versión de /UniqueDeploymentId que la versión de entrada del silo es la versión de /UniqueDeploymentId/IP:Port@Gen
Constructores
ZooKeeperBasedMembershipTable(ILogger<ZooKeeperBasedMembershipTable>, IOptions<ZooKeeperClusteringSiloOptions>, IOptions<ClusterOptions>) |
Implementación de una tabla de pertenencia mediante Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
Métodos
CleanupDefunctSiloEntries(DateTimeOffset) |
Implementación de una tabla de pertenencia mediante Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
DeleteMembershipTableEntries(String) |
Elimina todas las entradas de tabla del clusterId especificado. |
InitializeMembershipTable(Boolean) |
Inicializa la tabla de pertenencia basada en ZooKeeper. |
InsertRow(MembershipEntry, TableVersion) |
Intenta insertar (agregar) de forma atómica un nuevo MembershipEntry para un silo y también actualizar TableVersion. Si la operación se realiza correctamente, se realizarán los siguientes cambios en la tabla:
|
ReadAll() |
Lee de forma atómica el contenido completo de la tabla de pertenencia. MembershipTableData devuelto incluye toda la entrada MembershipEntry para todos los silos de la tabla y TableVersion para esta tabla. MembershipEntries y TableVersion deben leerse de forma atómica. |
ReadRow(SiloAddress) |
Lee de forma atómica la información de la tabla de pertenencia sobre un silo determinado. MembershipTableData devuelto incluye una entrada MembershipEntry para un silo determinado y TableVersion para esta tabla. MembershipEntry y TableVersion deben leerse de forma atómica. |
UpdateIAmAlive(MembershipEntry) |
Novedades la parte IAmAlive (columna) de MembershipEntry para este silo. Esta operación solo debe actualizar la columna IAmAlive y no cambiar otras columnas. Esta operación es una "escritura desfasada" o "actualización local" y se realiza sin validación de etag. Con respecto a la actualización de eTags: esta operación puede actualizar automáticamente la eTag asociada a la fila de silo especificada, pero no tiene que hacerlo. También puede dejar la etiqueta etag no cambiada ("escritura sucia"). Con respecto a TableVersion: esta operación no debe cambiar tableVersion de la tabla. Debería dejarlo intacto. No hay ningún escenario en el que esta operación podría producir un error debido a motivos semánticos de tabla. Solo se puede producir un error debido a problemas de red o falta de disponibilidad de la tabla. |
UpdateRow(MembershipEntry, String, TableVersion) |
Intenta actualizar atomicmente MembershipEntry para un silo y también actualiza TableVersion. Si la operación se realiza correctamente, se realizarán los siguientes cambios en la tabla:
|