Réplicas e instâncias

Este artigo fornece uma visão geral do ciclo de vida de réplicas de serviços com monitoração de estado e instâncias de serviços sem monitoração de estado.

Instâncias de serviços sem estado

Uma instância de um serviço sem estado é uma cópia da lógica de serviço que é executada em um dos nós do cluster. Uma instância dentro de uma partição é identificada exclusivamente por seu InstanceId. O ciclo de vida de uma instância é modelado no diagrama a seguir:

Ciclo de vida da instância

InBuild (IB)

Depois que o Gerenciador de Recursos de Cluster determina um posicionamento para a instância, ele entra nesse estado do ciclo de vida. A instância é iniciada no nó. O host do aplicativo é iniciado, a instância é criada e, em seguida, aberta. Após a conclusão da inicialização, a instância transita para o estado pronto.

Se o host ou nó do aplicativo para esta instância falhar, ele fará a transição para o estado descartado.

Pronto (RD)

No estado pronto, a instância está ativa e em execução no nó. Se esta instância for um serviço confiável, RunAsync foi invocado.

Se o host ou nó do aplicativo para esta instância falhar, ele fará a transição para o estado descartado.

Encerramento (CL)

No estado de fechamento, o Azure Service Fabric está no processo de desligamento da instância nesse nó. Esse desligamento pode ser devido a vários motivos, por exemplo, uma atualização de aplicativo, balanceamento de carga ou o serviço sendo excluído. Depois que o desligamento termina, ele passa para o estado descartado.

Caído (DD)

No estado descartado, a instância não está mais em execução no nó. Neste ponto, o Service Fabric mantém os metadados sobre essa instância, que eventualmente também são excluídos.

Nota

É possível fazer a transição de qualquer estado para o estado descartado usando a opção ForceRemove no Remove-ServiceFabricReplica.

Réplicas de serviços com monitoração de estado

Uma réplica de um serviço com monitoração de estado é uma cópia da lógica de serviço em execução em um dos nós do cluster. Além disso, a réplica mantém uma cópia do estado desse serviço. Dois conceitos relacionados descrevem o ciclo de vida e o comportamento de réplicas com monitoração de estado:

  • Ciclo de vida da réplica
  • Função de réplica

A discussão a seguir descreve serviços com monitoração de estado persistentes. Para serviços com estado voláteis (ou na memória), os estados para baixo e para baixo são equivalentes.

Ciclo de vida da réplica

InBuild (IB)

Uma réplica do InBuild é uma réplica criada ou preparada para ingressar no conjunto de réplicas. Dependendo da função da réplica, o IB tem semânticas diferentes.

Se o host do aplicativo ou o nó de uma réplica do InBuild falhar, ele passará para o estado inativo.

  • Réplicas primárias do InBuild: o InBuild primário é a primeira réplica de uma partição. Essa réplica geralmente acontece quando a partição está sendo criada. As réplicas primárias do InBuild também surgem quando todas as réplicas de uma partição são reiniciadas ou descartadas.

  • Réplicas InBuild IdleSecondary : são réplicas novas criadas pelo Gerenciador de Recursos de Cluster ou réplicas existentes que foram inativas e precisam ser adicionadas novamente ao conjunto. Essas réplicas são semeadas ou criadas pelo primário antes de poderem se juntar ao conjunto de réplicas como ActiveSecondary e participar da confirmação de quórum das operações.

  • Réplicas do ActiveSecondary InBuild: esse estado é observado em algumas consultas. É uma otimização em que o conjunto de réplicas não está mudando, mas uma réplica precisa ser construída. A réplica em si segue as transições normais da máquina de estado (conforme descrito na seção sobre funções de réplica).

Pronto (RD)

Uma réplica Ready é uma réplica que participa da replicação e da confirmação de quórum das operações. O estado ready é aplicável a réplicas primárias e secundárias ativas.

Se o host do aplicativo ou o nó de uma réplica pronta falhar, ele passará para o estado inativo.

Encerramento (CL)

Uma réplica entra no estado de fechamento nos seguintes cenários:

  • Desligando o código da réplica: o Service Fabric pode precisar desligar o código em execução de uma réplica. Esse desligamento pode ser por vários motivos. Por exemplo, isso pode acontecer devido a uma atualização de aplicativo, malha ou infraestrutura, ou devido a uma falha relatada pela réplica. Quando o fechamento da réplica termina, a réplica passa para o estado inativo. O estado persistente associado a esta réplica armazenada no disco não é limpo.

  • Removendo a réplica do cluster: o Service Fabric pode precisar remover o estado persistente e desligar o código em execução de uma réplica. Esse desligamento pode ser por vários motivos, por exemplo, balanceamento de carga.

Caído (DD)

No estado descartado, a instância não está mais em execução no nó. Também não há nenhum estado restante no nó. Neste ponto, o Service Fabric mantém os metadados sobre essa instância, que eventualmente também são excluídos.

Para baixo (D)

No estado inativo, o código da réplica não está em execução, mas o estado persistente dessa réplica existe nesse nó. Uma réplica pode estar inativa por vários motivos, por exemplo, o nó estar inativo, uma falha no código da réplica, uma atualização de aplicativo ou falhas de réplica.

Uma réplica inativa é aberta pelo Service Fabric conforme necessário, por exemplo, quando a atualização é concluída no nó.

A função de réplica não é relevante no estado inativo.

Abertura (OP)

Uma réplica inativa entra no estado de abertura quando o Service Fabric precisa trazer a réplica de volta para cima. Por exemplo, esse estado pode ser após a conclusão de uma atualização de código para o aplicativo em um nó.

Se o host do aplicativo ou o nó de uma réplica de abertura falhar, ele passará para o estado inativo.

A função de réplica não é relevante no estado de abertura.

Em espera (SB)

Uma réplica em espera é uma réplica de um serviço persistente que caiu e foi aberto. Essa réplica pode ser usada pelo Service Fabric se precisar adicionar outra réplica ao conjunto de réplicas (porque a réplica já tem alguma parte do estado e o processo de compilação é mais rápido). Depois que o StandByReplicaKeepDuration expirar, a réplica em espera será descartada.

Se o host do aplicativo ou o nó de uma réplica em espera falhar, ele passará para o estado inativo.

A função de réplica não é relevante no estado de espera.

Nota

Qualquer réplica que não esteja inativa ou descartada é considerada ativa.

Nota

É possível fazer a transição de qualquer estado para o estado descartado usando a opção ForceRemove no Remove-ServiceFabricReplica.

Função de réplica

A função da réplica determina sua função no conjunto de réplicas:

  • Primário (P): há um primário no conjunto de réplicas que é responsável por executar operações de leitura e gravação.
  • ActiveSecondary (S): São réplicas que recebem atualizações de estado do primário, aplicam-nas e, em seguida, enviam confirmações. Há vários secundários ativos no conjunto de réplicas. O número desses secundários ativos determina o número de falhas que o serviço pode tratar.
  • IdleSecondary (I): Estas réplicas estão a ser construídas pelo primário. Eles estão recebendo estado do primário antes de poderem ser promovidos a secundário ativo.
  • Nenhuma (N): Essas réplicas não têm responsabilidade no conjunto de réplicas.
  • Desconhecido (U): Esta é a função inicial de uma réplica antes de receber qualquer chamada de API ChangeRole do Service Fabric.

O diagrama a seguir ilustra as transições de função de réplica e alguns cenários de exemplo nos quais elas podem ocorrer:

Função de réplica

  • U -> P: Criação de uma nova réplica primária.
  • U -> I: Criação de uma nova réplica ociosa.
  • U -> N: Eliminação de uma réplica em espera.
  • I -> S: Promoção do ocioso secundário para o ativo secundário para que seus reconhecimentos contribuam para o quórum.
  • I -> P: Promoção do ocioso secundário ao primário. Isso pode acontecer em reconfigurações especiais quando o secundário ocioso é o candidato correto para ser primário.
  • I -> N: Eliminação da réplica secundária ociosa.
  • S -> P: Promoção do ativo secundário ao primário. Isso pode ser devido ao failover do movimento primário ou primário iniciado pelo Gerenciador de Recursos de Cluster. Por exemplo, pode ser em resposta a uma atualização de aplicativo ou balanceamento de carga.
  • S -> N: Exclusão da réplica secundária ativa.
  • P -> S: Rebaixamento da réplica primária. Isso pode ser devido a um movimento primário iniciado pelo Gerenciador de Recursos de Cluster. Por exemplo, pode ser em resposta a uma atualização de aplicativo ou balanceamento de carga.
  • P -> N: Exclusão da réplica primária.

Nota

Modelos de programação de nível superior, como Reliable Actors e Reliable Services, ocultam o conceito de funções de réplica do desenvolvedor. Em Atores, a noção de um papel é desnecessária. Em Serviços, é amplamente simplificado para a maioria dos cenários.

Próximos passos

Para obter mais informações sobre conceitos do Service Fabric, consulte o seguinte artigo:

Ciclo de vida do Reliable Services - C#