Partilhar via


Arquitetura do Service Fabric

O Service Fabric é criado com subsistemas em camadas. Estes subsistemas permitem-lhe escrever aplicações que são:

  • Tenha elevada disponibilidade
  • Seja dimensionável
  • Gerível
  • Testável

O diagrama seguinte mostra os principais subsistemas do Service Fabric.

Diagrama da arquitetura do Service Fabric

Num sistema distribuído, a capacidade de comunicar de forma segura entre nós num cluster é crucial. Na base da pilha está o subsistema de transporte, que fornece uma comunicação segura entre nós. Acima do subsistema de transporte encontra-se o subsistema de federação, que agrupa os diferentes nós numa única entidade (clusters nomeados) para que o Service Fabric possa detetar falhas, realizar eleições de coordenador e fornecer encaminhamento consistente. O subsistema de fiabilidade, em camadas sobre o subsistema de federação, é responsável pela fiabilidade dos serviços do Service Fabric através de mecanismos como replicação, gestão de recursos e ativação pós-falha. O subsistema de federação também está subjacente ao subsistema de alojamento e ativação, que gere o ciclo de vida de uma aplicação num único nó. O subsistema de gestão gere o ciclo de vida das aplicações e dos serviços. O subsistema de capacidade de teste ajuda os programadores de aplicações a testar os seus serviços através de falhas simuladas antes e depois de implementar aplicações e serviços em ambientes de produção. O Service Fabric permite resolver localizações de serviço através do subsistema de comunicação. Os modelos de programação de aplicações expostos aos programadores são colocados em camadas sobre estes subsistemas, juntamente com o modelo de aplicação para ativar as ferramentas.

Subsistema de transporte

O subsistema de transporte implementa um canal de comunicação de datagrama ponto a ponto. Este canal é utilizado para comunicação em clusters do service fabric e comunicação entre o cluster do service fabric e os clientes. Suporta padrões de comunicação unidirecional e pedido-resposta, que fornece a base para implementar a difusão e multicast na camada federação. O subsistema de transporte protege a comunicação utilizando certificados X509 ou segurança do Windows. Este subsistema é utilizado internamente pelo Service Fabric e não está diretamente acessível aos programadores para programação de aplicações.

Subsistema de federação

Para ter razão sobre um conjunto de nós num sistema distribuído, tem de ter uma vista consistente do sistema. O subsistema de federação utiliza os primitivos de comunicação fornecidos pelo subsistema de transporte e cose os vários nós num único cluster unificado sobre o qual pode raciocinar. Fornece os primitivos de sistemas distribuídos necessários pelos outros subsistemas : deteção de falhas, eleição de coordenador e encaminhamento consistente. O subsistema da federação é criado com base em tabelas hash distribuídas com um espaço de tokens de 128 bits. O subsistema cria uma topologia de anel sobre os nós, com cada nó na cadência a ser alocado a um subconjunto do espaço de tokens para propriedade. Para a deteção de falhas, a camada utiliza um mecanismo de leasing baseado em batimentos cardíacos e arbitragem. O subsistema de federação também garante, através de protocolos intrincados de adesão e partida, que só existe um único proprietário de um token em qualquer altura. Isto fornece uma eleição de líder e garantias consistentes de encaminhamento.

Subsistema de fiabilidade

O subsistema de fiabilidade fornece o mecanismo para tornar o estado de um serviço do Service Fabric altamente disponível através da utilização do Replicator, do Gestor de Ativação Pós-falha e do Balanceador de Recursos.

  • O Replicator garante que as alterações de estado na réplica do serviço primário serão automaticamente replicadas para réplicas secundárias, mantendo a consistência entre as réplicas primária e secundária num conjunto de réplicas de serviço. O replicador é responsável pela gestão do quórum entre as réplicas no conjunto de réplicas. Interage com a unidade de ativação pós-falha para obter a lista de operações a replicar e o agente de reconfiguração fornece-lhe a configuração do conjunto de réplicas. Essa configuração indica quais as réplicas que as operações têm de ser replicadas. O Service Fabric fornece um replicador predefinido chamado Replicator de Recursos de Infraestrutura, que pode ser utilizado pela API do modelo de programação para tornar o estado do serviço altamente disponível e fiável.
  • O Gestor de Ativação Pós-falha garante que, quando os nós são adicionados ou removidos do cluster, a carga é automaticamente redistribuída pelos nós disponíveis. Se um nó no cluster falhar, o cluster reconfigurará automaticamente as réplicas de serviço para manter a disponibilidade.
  • O Resource Manager coloca as réplicas de serviço em domínios de falha no cluster e garante que todas as unidades de ativação pós-falha estão operacionais. O Resource Manager também equilibra os recursos de serviço no conjunto partilhado subjacente de nós de cluster para obter uma distribuição de carga uniforme ideal.

Subsistema de gestão

O subsistema de gestão fornece gestão de ciclo de vida de serviços e aplicações ponto a ponto. Os cmdlets do PowerShell e as APIs administrativas permitem-lhe aprovisionar, implementar, corrigir, atualizar e desaprovisionar aplicações sem perda de disponibilidade. O subsistema de gestão efetua este procedimento através dos seguintes serviços.

  • Gestor de Clusters: este é o serviço principal que interage com o Gestor de Ativação Pós-falha a partir da fiabilidade para colocar as aplicações nos nós com base nas restrições de colocação do serviço. O Resource Manager no subsistema de ativação pós-falha garante que as restrições nunca são quebradas. O gestor de clusters gere o ciclo de vida das aplicações de aprovisionamento para desaprovisionamento. Integra-se com o gestor de estado de funcionamento para garantir que a disponibilidade da aplicação não se perde do ponto de vista do estado de funcionamento semântico durante as atualizações.
  • Health Manager: este serviço permite a monitorização do estado de funcionamento de aplicações, serviços e entidades de cluster. As entidades de cluster (como nós, partições de serviço e réplicas) podem comunicar informações de estado de funcionamento, que são agregadas no arquivo de estado de funcionamento centralizado. Estas informações de estado de funcionamento fornecem um instantâneo geral do estado de funcionamento para um ponto anterior no tempo dos serviços e nós distribuídos por vários nós no cluster, permitindo-lhe efetuar todas as ações corretivas necessárias. As APIs de consulta de estado de funcionamento permitem-lhe consultar os eventos de estado de funcionamento comunicados ao subsistema de estado de funcionamento. As APIs de consulta de estado de funcionamento devolvem os dados de estado de funcionamento não processados armazenados no arquivo de estado de funcionamento ou os dados de estado de funcionamento agregados e interpretados para uma entidade de cluster específica.
  • Arquivo de Imagens: este serviço fornece armazenamento e distribuição dos binários da aplicação. Este serviço fornece um arquivo de ficheiros distribuído simples no qual as aplicações são carregadas e transferidas.

Subsistema de alojamento

O gestor de clusters informa o subsistema de alojamento (em execução em cada nó) que serviços precisa de gerir para um determinado nó. Em seguida, o subsistema de alojamento gere o ciclo de vida da aplicação nesse nó. Interage com os componentes de fiabilidade e estado de funcionamento para garantir que as réplicas estão corretamente colocadas e em bom estado de funcionamento.

Subsistema de comunicação

Este subsistema fornece mensagens fiáveis dentro do cluster e da deteção de serviços através do serviço Nomenclatura. O serviço Nomenclatura resolve os nomes dos serviços para uma localização no cluster e permite que os utilizadores giram os nomes e propriedades dos serviços. Com o serviço Nomenclatura, os clientes podem comunicar com qualquer nó no cluster de forma segura para resolver um nome de serviço e obter metadados do serviço. Com uma API de cliente de Nomenclatura simples, os utilizadores do Service Fabric podem desenvolver serviços e clientes capazes de resolver a localização de rede atual, apesar do dinamismo do nó ou do redimensionamento do cluster.

Subsistema de capacidade de teste

A capacidade de teste é um conjunto de ferramentas especificamente concebido para testar serviços criados no Service Fabric. As ferramentas permitem que um programador induza facilmente falhas significativas e execute cenários de teste para exercer e validar os inúmeros estados e transições que um serviço irá experimentar ao longo da sua vida, tudo de forma controlada e segura. A capacidade de teste também fornece um mecanismo para executar testes mais longos que podem iterar através de várias falhas possíveis sem perder a disponibilidade. Isto fornece-lhe um ambiente de teste em produção.