ZooKeeperBasedMembershipTable Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Implementazione della tabella di appartenenza con 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
- Ereditarietà
-
ZooKeeperBasedMembershipTable
- Implementazioni
Commenti
Breve panoramica delle funzionalità ZK usate: i dati sono rappresentati da un albero di nodi (simile a un file system). Ogni nodo viene indirizzato da un percorso e può contenere i dati come matrice di byte e ha una versione. Quando viene creato un nodo, la versione è 0. Dopo gli aggiornamenti, la versione viene incrementata in modo atomico. Un aggiornamento può anche essere condizionale in una versione corrente prevista. Una transazione può contenere diverse operazioni, che hanno esito positivo o negativo in modo atomico. quando si crea un client zookeeper, è possibile impostare un percorso di base in cui tutte le operazioni sono relative.
In questa implementazione: ogni distribuzione di Orleans ha un nodo /UniqueDeploymentId Lo stato di ogni silo viene salvato in /UniqueDeploymentId/IP:Port@Gen Ogni silo IAmAlive viene salvato in /UniqueDeploymentId/IP:Port@Gen/IAmAlive IAmAlive viene salvato in un nodo separato perché gli aggiornamenti sono incondizionato.
La versione ZK di un nodo è il relativo ETag: la versione della tabella è la versione di /UniqueDeploymentId la versione della voce silo è la versione di /UniqueDeploymentId/IP:Port@Gen
Costruttori
ZooKeeperBasedMembershipTable(ILogger<ZooKeeperBasedMembershipTable>, IOptions<ZooKeeperClusteringSiloOptions>, IOptions<ClusterOptions>) |
Implementazione della tabella di appartenenza con Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
Metodi
CleanupDefunctSiloEntries(DateTimeOffset) |
Implementazione della tabella di appartenenza con Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
DeleteMembershipTableEntries(String) |
Elimina tutte le voci di tabella del clusterId specificato |
InitializeMembershipTable(Boolean) |
Inizializza la tabella di appartenenza basata su ZooKeeper. |
InsertRow(MembershipEntry, TableVersion) |
Tenta in modo atomico di inserire (aggiungere) un nuovo MembershipEntry per un silo e di aggiornare anche TableVersion. Se l'operazione ha esito positivo, verranno apportate le modifiche seguenti alla tabella:
|
ReadAll() |
Legge in modo atomico il contenuto completo della tabella di appartenenza. MembershipTableData restituito include tutte le voci MembershipEntry per tutti i silo della tabella e TableVersion per questa tabella. Le voci MembershipEntries e TableVersion devono essere lette in modo atomico. |
ReadRow(SiloAddress) |
Legge in modo atomico le informazioni sulla tabella di appartenenza su un determinato silo. MembershipTableData restituito include una voce MembershipEntry per un determinato silo e TableVersion per questa tabella. Le proprietà MembershipEntry e TableVersion devono essere lette in modo atomico. |
UpdateIAmAlive(MembershipEntry) |
Aggiornamenti la parte IAmAlive (colonna) di MembershipEntry per questo silo. Questa operazione deve aggiornare solo la colonna IAmAlive e non modificare altre colonne. Questa operazione è una "scrittura dirty" o "aggiornamento sul posto" e viene eseguita senza convalida etag. Per quanto riguarda l'aggiornamento di eTag: questa operazione può aggiornare automaticamente l'eTag associato alla riga silo specificata, ma non è necessario. Può anche lasciare l'etag non modificato ("scrittura dirty"). Per quanto riguarda TableVersion: questa operazione non deve modificare tableVersion della tabella. Dovrebbe lasciarlo invariato. Non esiste uno scenario in cui questa operazione potrebbe non riuscire a causa di motivi semantici di tabella. Può avere esito negativo solo a causa di problemi di rete o di indisponibilità della tabella. |
UpdateRow(MembershipEntry, String, TableVersion) |
Tenta in modo atomico di aggiornare MembershipEntry per un silo e aggiornare anche TableVersion. Se l'operazione ha esito positivo, verranno apportate le modifiche seguenti alla tabella:
|