Repliche e istanzeReplicas and instances

Questo articolo offre una panoramica del ciclo di vita delle repliche dei servizi con stato e delle istanze dei servizi senza stato.This article gives an overview of the lifecycle of replicas of stateful services and instances of stateless services.

Istanze di servizi senza statoInstances of stateless services

Un'istanza di un servizio senza stato è una copia della logica del servizio in esecuzione in uno dei nodi del cluster.An instance of a stateless service is a copy of the service logic that runs on one of the nodes of the cluster. Un'istanza all'interno di una partizione viene identificata in modo univoco dal relativo valore InstanceId.An instance within a partition is uniquely identified by its InstanceId. Il ciclo di vita di un'istanza è modellato nel diagramma seguente:The lifecycle of an instance is modeled in the following diagram:

Ciclo di vita dell'istanza

InBuild (IB)InBuild (IB)

Dopo aver determinato una selezione host per l'istanza, Cluster Resource Manager passa a questo stato del ciclo di vita.After the Cluster Resource Manager determines a placement for the instance, it enters this lifecycle state. L'istanza viene avviata nel nodo.The instance is started on the node. L'host dell'applicazione viene avviato, l'istanza viene creata e quindi aperta.The application host is started, the instance is created and then opened. Al termine dell'avvio, l'istanza passa allo stato Ready.After the startup finishes, the instance transitions to the ready state.

Se si verifica un arresto anomalo dell'host dell'applicazione o del nodo per questa istanza, passa allo stato Dropped (Eliminato).If the application host or node for this instance crashes, it transitions to the dropped state.

Ready (RD) (Pronto (RD))Ready (RD)

Nello stato Ready (Pronto) l'istanza è attiva nel nodo.In the ready state, the instance is up and running on the node. Se questa istanza è un servizio Reliable Services, è stato richiamato RunAsync.If this instance is a reliable service, RunAsync has been invoked.

Se si verifica un arresto anomalo dell'host dell'applicazione o del nodo per questa istanza, passa allo stato Dropped (Eliminato).If the application host or node for this instance crashes, it transitions to the dropped state.

Closing (CL) (Chiusura (CL))Closing (CL)

Nello stato Closing Azure Service Fabric esegue l'arresto dell'istanza in questo nodo.In the closing state, Azure Service Fabric is in the process of shutting down the instance on this node. Questo arresto può essere dovuto a vari motivi, ad esempio l'aggiornamento di un'applicazione, il bilanciamento del carico o l'eliminazione del servizio.This shutdown might be due to many reasons--for example, an application upgrade, load balancing, or the service being deleted. Al termine del processo di arresto, passa allo stato Dropped.After shutdown finishes, it transitions to the dropped state.

Dropped (DD) (Eliminato (DD))Dropped (DD)

Nello stato Dropped l'istanza non è più in esecuzione nel nodo.In the dropped state, the instance is no longer running on the node. In questa fase Service Fabric gestisce i metadati relativi a questa istanza, che viene comunque eliminata.At this point, Service Fabric maintains the metadata about this instance, which is eventually deleted as well.

Nota

È possibile eseguire la transizione da qualsiasi stato allo stato Dropped usando l'opzione ForceRemove in Remove-ServiceFabricReplica.It is possible to transition from any state to the dropped state by using the ForceRemove option on Remove-ServiceFabricReplica.

Repliche di servizi con statoReplicas of stateful services

Una replica di un servizio con stato è una copia della logica del servizio in esecuzione in uno dei nodi del cluster.A replica of a stateful service is a copy of the service logic running on one of the nodes of the cluster. La replica gestisce anche una copia dello stato del servizio.In addition, the replica maintains a copy of the state of that service. Due concetti correlati descrivono il ciclo di vita e il comportamento delle repliche con stato:Two related concepts describe the lifecycle and behavior of stateful replicas:

  • Ciclo di vita della replicaReplica lifecycle
  • Ruolo della replicaReplica role

La discussione seguente illustra i servizi con stato persistente.The following discussion describes persisted stateful services. Per i servizi con stato volatile (o in memoria), gli stati Down e Dropped sono equivalenti.For volatile (or in-memory) stateful services, the down and dropped states are equivalent.

Ciclo di vita della replica

InBuild (IB)InBuild (IB)

Una replica InBuild è una replica creata o preparata per l'unione con il set di repliche.An InBuild replica is a replica that's created or prepared for joining the replica set. A seconda del ruolo della replica, IB presenta semantiche diverse.Depending on the replica role, the IB has different semantics.

Se l'host dell'applicazione o il nodo per una replica InBuild si arresta in modo anomalo, passa allo stato Down.If the application host or the node for an InBuild replica crashes, it transitions to the down state.

  • Repliche Primary InBuild: le repliche Primary InBuild sono le prime repliche di una partizione.Primary InBuild replicas: Primary InBuild are the first replicas for a partition. Questa replica in genere viene eseguita in fase di creazione della partizione.This replica usually happens when the partition is being created. Le repliche Primary InBuild (InBuild primaria) vengono create anche quando tutte le repliche di una partizione vengono riavviate o eliminate.Primary InBuild replicas also arise when all the replicas of a partition restart or are dropped.

  • Repliche IdleSecondary InBuild: si tratta di nuove repliche create da Cluster Resource Manager o di repliche esistenti che sono divenute inaccessibili e devono essere nuovamente aggiunte al set.IdleSecondary InBuild replicas: These are either new replicas that are created by the Cluster Resource Manager, or existing replicas that went down and need to be added back into the set. Queste repliche vengono generate o create dalla primaria prima che possano unirsi al set di repliche come secondarie attive e partecipare al riconoscimento del quorum delle operazioni.These replicas are seeded or built by the primary before they can join the replica set as ActiveSecondary and participate in quorum acknowledgement of operations.

  • Repliche ActiveSecondary InBuild: questo stato si osserva in alcune query.ActiveSecondary InBuild replicas: This state is observed in some queries. Si tratta di un'ottimizzazione in cui il set di repliche rimane invariato, ma è necessario creare una replica.It is an optimization where the replica set is not changing, but a replica needs to be built. La replica stessa segue le transizioni di stato normale del computer (come descritto nella sezione sui ruoli delle repliche).The replica itself follows the normal state machine transitions (as described in the section on replica roles).

Ready (RD) (Pronto (RD))Ready (RD)

Una replica Ready è una replica che partecipa al processo di replica e al riconoscimento del quorum delle operazioni.A Ready replica is a replica that's participating in replication and quorum acknowledgement of operations. Lo stato Ready (Pronto) è applicabile alle repliche primarie e secondarie attive.The ready state is applicable to primary and active secondary replicas.

Se l'host dell'applicazione o il nodo per una replica Ready si arresta in modo anomalo, passa allo stato Down.If the application host or the node for a ready replica crashes, it transitions to the down state.

Closing (CL) (Chiusura (CL))Closing (CL)

Una replica passa allo stato Closing (Chiusura) negli scenari seguenti:A replica enters the closing state in the following scenarios:

  • Arresto del codice per la replica: Service Fabric potrebbe dover arrestare il codice in esecuzione per una replica.Shutting down the code for the replica: Service Fabric might need to shut down the running code for a replica. Questo arresto può essere dovuto a diversi motivi.This shutdown might be for many reasons. Ad esempio, può verificarsi a causa dell'aggiornamento di un'applicazione o di un'infrastruttura oppure a causa di un errore segnalato dalla replica.For example, it can happen because of an application, fabric, or infrastructure upgrade, or because of a fault reported by the replica. Al termine della chiusura, la replica passa allo stato Down.When the replica close finishes, the replica transitions to the down state. Lo stato persistente associato a questa replica archiviata su disco non viene eliminato.The persisted state associated with this replica that's stored on disk is not cleaned up.

  • Rimozione della replica dal cluster: Service Fabric potrebbe dover rimuovere lo stato permanente e arrestare il codice in esecuzione per una replica.Removing the replica from the cluster: Service Fabric might need to remove the persisted state and shut down the running code for a replica. Questo arresto può essere dovuto a diversi motivi, ad esempio il bilanciamento del carico.This shutdown might be for many reasons, for example, load balancing.

Dropped (DD) (Eliminato (DD))Dropped (DD)

Nello stato Dropped l'istanza non è più in esecuzione nel nodo.In the dropped state, the instance is no longer running on the node. Nel nodo non è presente alcuno stato.There is also no state left on the node. In questa fase Service Fabric gestisce i metadati relativi a questa istanza, che viene comunque eliminata.At this point, Service Fabric maintains the metadata about this instance, which is eventually deleted as well.

Down (D) (Inaccessibile (D))Down (D)

Nello stato Down il codice della replica non è in esecuzione, ma lo stato persistente per la replica è presente su tale nodo.In the down state, the replica code is not running, but the persisted state for that replica exists on that node. Una replica può essere inaccessibile per diversi motivi, ad esempio in caso di nodo inattivo, di un arresto anomalo nel codice della replica, di un aggiornamento di un'applicazione o di errori nella replica.A replica can be down for many reasons--for example, the node being down, a crash in the replica code, an application upgrade, or replica faults.

Una replica inattiva viene aperta da Service Fabric in base alle esigenze, ad esempio al termine dell'aggiornamento nel nodo.A down replica is opened by Service Fabric as required, for example, when the upgrade finishes on the node.

Il ruolo della replica non è pertinente nello stato Down (Inaccessibile).The replica role is not relevant in the down state.

Opening (OP) (Apertura (OP))Opening (OP)

Una replica Down passa allo stato Opening se Service Fabric deve riattivare la replica.A down replica enters the opening state when Service Fabric needs to bring the replica back up again. Questo stato può ad esempio verificarsi in seguito a un aggiornamento del codice per l'applicazione in un nodo.For example, this state might be after a code upgrade for the application finishes on a node.

Se l'host dell'applicazione o il nodo per una replica Opening si arresta in modo anomalo, passa allo stato Down.If the application host or the node for an opening replica crashes, it transitions to the down state.

Il ruolo della replica non è pertinente nello stato Opening (Apertura).The replica role is not relevant in the opening state.

StandBy (SB)StandBy (SB)

Una replica in stato StandBy è una replica di un servizio persistente che, da inaccessibile, è stata aperta.A StandBy replica is a replica of a persisted service that went down and was then opened. Questa replica potrebbe essere usata da Service Fabric se deve aggiungere un'altra replica al set di repliche (perché la replica contiene già una parte dello stato e il processo di creazione è più veloce).This replica might be used by Service Fabric if it needs to add another replica to the replica set (because the replica already has some portion of the state and the build process is faster). Alla scadenza di StandByReplicaKeepDuration, la replica StandBy viene rimossa.After the StandByReplicaKeepDuration expires, the standby replica is discarded.

Se l'host dell'applicazione o il nodo per una replica StandBy si arresta in modo anomalo, passa allo stato Down.If the application host or the node for a standby replica crashes, it transitions to the down state.

Il ruolo della replica non è pertinente nello stato StandBy.The replica role is not relevant in the standby state.

Nota

Qualsiasi replica non inattiva o eliminata è considerata attiva.Any replica that's not down or dropped is considered to be up.

Nota

È possibile eseguire la transizione da qualsiasi stato allo stato Dropped usando l'opzione ForceRemove in Remove-ServiceFabricReplica.It's possible to transition from any state to the dropped state by using the ForceRemove option on Remove-ServiceFabricReplica.

Ruolo della replicaReplica role

Il ruolo della replica ne determina la funzione nel set di repliche:The role of the replica determines its function in the replica set:

  • Primary (P): nel set di repliche è presente una replica primaria responsabile dell'esecuzione di operazioni di lettura e scrittura.Primary (P): There is one primary in the replica set that is responsible for performing read and write operations.
  • ActiveSecondary (S): si tratta di repliche che ricevono aggiornamenti di stato dalla replica primaria, li applicano e reinviano riconoscimenti.ActiveSecondary (S): These are replicas that receive state updates from the primary, apply them, and then send back acknowledgements. Sono presenti più repliche secondarie attive nel set di repliche.There are multiple active secondaries in the replica set. Il numero di queste repliche secondarie attive determina il numero di errori che il servizio può gestire.The number of these active secondaries determines the number of faults the service can handle.
  • IdleSecondary (I): queste repliche vengono compilate dalla replica primaria.IdleSecondary (I): These replicas are being built by the primary. Ricevono lo stato dalla replica primaria prima di poter essere alzate al livello di repliche secondarie attive.They are receiving state from the primary before they can be promoted to active secondary.
  • None (N): queste repliche non hanno responsabilità nel set di repliche.None (N): These replicas don't have a responsibility in the replica set.
  • Unknown (U): questo è il ruolo iniziale di una replica prima che riceva una chiamata API ChangeRole da Service Fabric.Unknown (U): This is the initial role of a replica before it receives any ChangeRole API call from Service Fabric.

Il diagramma seguente illustra le transizioni dei ruoli di replica e alcuni scenari di esempio in cui possono verificarsi:The following diagram illustrates the replica role transitions and some example scenarios in which they can occur:

Ruolo della replica

  • U -> P: creazione di una nuova replica primaria.U -> P: Creation of a new primary replica.
  • U -> I: creazione di una nuova replica inattiva.U -> I: Creation of a new idle replica.
  • U -> N: eliminazione di una replica standby.U -> N: Deletion of a standby replica.
  • I -> S: innalzamento di livello della replica secondaria inattiva a replica secondaria attiva, in modo che i riconoscimenti contribuiscano al quorum.I -> S: Promotion of the idle secondary to active secondary so that its acknowledgements contribute toward quorum.
  • I -> P: innalzamento di livello della replica secondaria inattiva a replica primaria.I -> P: Promotion of the idle secondary to primary. Ciò può verificarsi in presenza di riconfigurazioni speciali, quando la replica secondaria inattiva è il candidato ideale per diventare primaria.This can happen under special reconfigurations when the idle secondary is the correct candidate to be primary.
  • I -> N: eliminazione della replica secondaria inattiva.I -> N: Deletion of the idle secondary replica.
  • S -> P: innalzamento di livello della replica secondaria attiva a replica primaria.S -> P: Promotion of the active secondary to primary. Ciò può essere dovuto a un failover della replica primaria o a uno spostamento della replica primaria avviato da Cluster Resource Manager,This can be due to failover of the primary or a primary movement initiated by the Cluster Resource Manager. ad esempio in risposta a un aggiornamento di un'applicazione o al bilanciamento del carico.For example, it might be in response to an application upgrade or load balancing.
  • S -> N: eliminazione della replica secondaria attiva.S -> N: Deletion of the active secondary replica.
  • P -> S: abbassamento di livello della replica primaria.P -> S: Demotion of the primary replica. Ciò può essere causato da uno spostamento della replica primaria avviato da Cluster Resource Manager,This can be due to a primary movement initiated by the Cluster Resource Manager. ad esempio in risposta a un aggiornamento di un'applicazione o al bilanciamento del carico.For example, it might be in response to an application upgrade or load balancing.
  • P -> N: eliminazione della replica primaria.P -> N: Deletion of the primary replica.

Nota

Modelli di programmazione di livello superiore, ad esempio Reliable Actors e Reliable Services, nascondono il concetto di ruolo di replica allo sviluppatore.Higher-level programming models, such as Reliable Actors and Reliable Services, hide the concept of replica roles from the developer. In Actors la nozione di ruolo non è necessaria.In Actors, the notion of a role is unnecessary. In Services è ampiamente semplificata per la maggior parte degli scenari.In Services, it's largely simplified for most scenarios.

Passaggi successiviNext steps

Per altre informazioni sui concetti relativi a Service Fabric, vedere l'articolo seguente:For more information on Service Fabric concepts, see the following article:

Ciclo di vita di Reliable Services: C#Reliable Services lifecycle - C#