Visão geral da terminologia do Service Fabric
O Azure Service Fabric é uma plataforma de sistemas distribuídos que facilita o empacotamento, a implementação e a gestão de microsserviços dimensionáveis e fiáveis. O Service Fabric é um orquestrador de contêineres e processos que permite hospedar seus clusters em qualquer lugar: no Azure, em um datacenter local ou em qualquer provedor de nuvem. Você pode usar qualquer estrutura para escrever seus serviços e escolher onde executar o aplicativo a partir de várias opções de ambiente. Este artigo detalha a terminologia usada pelo Service Fabric para entender os termos usados na documentação.
Os vídeos de treinamento relacionados mencionados abaixo detalham o aplicativo, o empacotamento, a implantação, as abstrações e a terminologia usados pelo Service Fabric:
Conceitos de infraestrutura
Cluster: um conjunto conectado à rede de máquinas virtuais ou físicas nas quais seus microsserviços são implantados e gerenciados. Os clusters podem ser dimensionados para milhares de máquinas.
Nó: uma máquina ou VM que faz parte de um cluster é chamada de nó. A cada nó é atribuído um nome de nó (string). Os nós têm características, como propriedades de posicionamento. Cada máquina ou VM tem um serviço de inicialização automática do Windows, , que começa a ser executado na inicialização e, em seguida, FabricHost.exe
inicia dois executáveis: Fabric.exe
e FabricGateway.exe
. Esses dois executáveis compõem o nó. Para cenários de teste, você pode hospedar vários nós em uma única máquina ou VM executando várias instâncias de Fabric.exe
e FabricGateway.exe
.
Conceitos de aplicação e serviço
Aplicativo nativo do Service Fabric: os aplicativos nativos do Service Fabric são descritos pelo modelo de aplicativo nativo (manifestos de aplicativo e serviço baseados em XML).
Conceitos do aplicativo nativo do Service Fabric
Aplicação: Uma aplicação é um conjunto de serviços constituintes que desempenham uma determinada função ou funções. O ciclo de vida de cada instância de aplicativo pode ser gerenciado independentemente.
Serviço: um serviço executa uma função completa e independente e pode iniciar e executar independentemente de outros serviços. Um serviço é composto de código, configuração e dados. Para cada serviço, o código consiste nos binários executáveis, a configuração consiste em configurações de serviço que podem ser carregadas em tempo de execução e os dados consistem em dados estáticos arbitrários a serem consumidos pelo serviço.
Tipo de aplicativo: o nome/versão atribuído a uma coleção de tipos de serviço. Ele é definido em um ApplicationManifest.xml
arquivo e incorporado em um diretório de pacote de aplicativo. Em seguida, o diretório é copiado para o armazenamento de imagens do cluster do Service Fabric. Em seguida, você pode criar um aplicativo nomeado a partir desse tipo de aplicativo dentro do cluster.
Leia o artigo Modelo de aplicativo para obter mais informações.
Pacote de aplicativo: um diretório de disco que contém o arquivo do tipo de ApplicationManifest.xml
aplicativo. Faz referência aos pacotes de serviço para cada tipo de serviço que compõe o tipo de aplicativo. Os arquivos no diretório do pacote de aplicativos são copiados para o armazenamento de imagens do cluster do Service Fabric. Por exemplo, um pacote de aplicativo para um tipo de aplicativo de email pode conter referências a um pacote de serviço de fila, um pacote de serviço de front-end e um pacote de serviço de banco de dados.
Aplicativo nomeado: depois de copiar um pacote de aplicativo para o armazenamento de imagens, você cria uma instância do aplicativo dentro do cluster. Você cria uma instância quando especifica o tipo de aplicativo do pacote de aplicativo, usando seu nome ou versão. A cada instância de tipo de aplicativo é atribuído um nome de URI (identificador de recurso uniforme) que se parece com: "fabric:/MyNamedApp"
. Dentro de um cluster, você pode criar vários aplicativos nomeados a partir de um único tipo de aplicativo. Você também pode criar aplicativos nomeados de diferentes tipos de aplicativos. Cada aplicativo nomeado é gerenciado e versionado independentemente.
Tipo de serviço: o nome/versão atribuído aos pacotes de código, pacotes de dados e pacotes de configuração de um serviço. O tipo de serviço é definido no ServiceManifest.xml
arquivo e incorporado em um diretório de pacote de serviço. O diretório do pacote de serviço é então referenciado pelo arquivo de um pacote de ApplicationManifest.xml
aplicativo. Dentro do cluster, depois de criar um aplicativo nomeado, você pode criar um serviço nomeado a partir de um dos tipos de serviço do tipo de aplicativo. O arquivo do tipo de ServiceManifest.xml
serviço descreve o serviço.
Leia o artigo Modelo de aplicativo para obter mais informações.
Existem dois tipos de serviços:
- Sem estado: use um serviço sem estado quando o estado persistente do serviço é armazenado em um serviço de armazenamento externo, como o Armazenamento do Azure, o Banco de Dados SQL do Azure ou o Azure Cosmos DB. Use um serviço sem monitoração de estado quando o serviço não tiver armazenamento persistente. Por exemplo, para um serviço de calculadora em que os valores são passados para o serviço, é realizado um cálculo que usa esses valores e, em seguida, um resultado é retornado.
- Com estado: use um serviço com estado quando quiser que o Service Fabric gerencie o estado do serviço por meio de seus modelos de programação Coleções Confiáveis ou Atores Confiáveis. Ao criar um serviço nomeado, especifique quantas partições você deseja distribuir seu estado para escalabilidade. Especifique também quantas vezes replicar seu estado entre nós, para obter confiabilidade. Cada serviço nomeado tem uma única réplica primária e várias réplicas secundárias. Você modifica o estado do serviço nomeado quando grava na réplica primária. Em seguida, o Service Fabric replica esse estado para todas as réplicas secundárias para manter seu estado sincronizado. O Service Fabric deteta automaticamente quando uma réplica primária falha e promove uma réplica secundária existente para uma réplica primária. Em seguida, o Service Fabric cria uma nova réplica secundária.
Réplicas ou instâncias referem-se ao código (e estado para serviços com monitoração de estado) de um serviço implantado e em execução. Consulte Réplicas e instâncias.
Reconfiguração refere-se ao processo de qualquer alteração no conjunto de réplicas de um serviço. Consulte Reconfiguração.
Pacote de serviço: um diretório de disco que contém o arquivo do tipo de ServiceManifest.xml
serviço. Esse arquivo faz referência ao código, dados estáticos e pacotes de configuração para o tipo de serviço. Os arquivos no diretório do pacote de serviço são referenciados pelo arquivo do tipo de ApplicationManifest.xml
aplicativo. Por exemplo, um pacote de serviço pode se referir ao código, dados estáticos e pacotes de configuração que compõem um serviço de banco de dados.
Serviço nomeado: depois de criar um aplicativo nomeado, você pode criar uma instância de um de seus tipos de serviço dentro do cluster. Você especifica o tipo de serviço usando seu nome/versão. A cada instância de tipo de serviço é atribuído um nome de URI com escopo no URI do aplicativo nomeado. Por exemplo, se você criar um serviço nomeado "MyDatabase" dentro de um aplicativo chamado "MyNamedApp", o URI terá a seguinte aparência: "fabric:/MyNamedApp/MyDatabase"
. Dentro de um aplicativo nomeado, você pode criar vários serviços nomeados. Cada serviço nomeado pode ter seu próprio esquema de partição e contagens de instância ou réplica.
Pacote de código: um diretório de disco que contém os arquivos executáveis do tipo de serviço, normalmente arquivos EXE/DLL. Os arquivos no diretório do pacote de código são referenciados pelo arquivo do tipo de ServiceManifest.xml
serviço. Quando você cria um serviço nomeado, o pacote de código é copiado para o nó ou nós selecionados para executar o serviço nomeado. Em seguida, o código começa a ser executado. Existem dois tipos de executáveis de pacote de código:
- Executáveis convidados: executáveis que são executados como estão no sistema operacional host (Windows ou Linux). Esses executáveis não vinculam ou fazem referência a nenhum arquivo de tempo de execução do Service Fabric e, portanto, não usam nenhum modelo de programação do Service Fabric. Esses executáveis não podem usar alguns recursos do Service Fabric, como o serviço de nomenclatura para descoberta de ponto de extremidade. Os executáveis convidados não podem relatar métricas de carga específicas para cada instância de serviço.
- Executáveis de host de serviço: executáveis que usam modelos de programação do Service Fabric vinculando-os a arquivos de tempo de execução do Service Fabric, habilitando recursos do Service Fabric. Por exemplo, uma instância de serviço nomeada pode registrar pontos de extremidade com o Serviço de Nomenclatura do Service Fabric e também pode relatar métricas de carga.
Pacote de dados: um diretório de disco que contém os arquivos de dados estáticos e somente leitura do tipo de serviço, geralmente arquivos de foto, som e vídeo. Os arquivos no diretório do pacote de dados são referenciados pelo arquivo do tipo de ServiceManifest.xml
serviço. Quando você cria um serviço nomeado, o pacote de dados é copiado para o nó ou nós selecionados para executar o serviço nomeado. O código começa a ser executado e agora pode acessar os arquivos de dados.
Pacote de configuração: um diretório de disco que contém os arquivos de configuração estáticos e somente leitura do tipo de serviço, geralmente arquivos de texto. Os arquivos no diretório do pacote de configuração são referenciados pelo arquivo do tipo de ServiceManifest.xml
serviço. Quando você cria um serviço nomeado, os arquivos no pacote de configuração são copiados para um ou mais nós selecionados para executar o serviço nomeado. Em seguida, o código começa a ser executado e agora pode acessar os arquivos de configuração.
Contêineres: por padrão, o Service Fabric implanta e ativa serviços como processos. O Service Fabric também pode implantar serviços em imagens de contêiner. Os contêineres são uma tecnologia de virtualização que abstrai o sistema operacional subjacente dos aplicativos. Um aplicativo e seu tempo de execução, dependências e bibliotecas do sistema são executados dentro de um contêiner. O contêiner tem acesso total e privado à própria exibição isolada do contêiner das construções do sistema operacional. O Service Fabric suporta contêineres do Windows Server e contêineres do Docker no Linux. Para obter mais informações, leia Service Fabric e contêineres.
Esquema de partição: Ao criar um serviço nomeado, você especifica um esquema de partição. Serviços com quantidades substanciais de estado dividem os dados entre partições, o que espalha o estado pelos nós do cluster. Ao dividir os dados entre partições, o estado do serviço nomeado pode ser dimensionado. Dentro de uma partição, os serviços nomeados sem estado têm instâncias, enquanto os serviços nomeados com estado têm réplicas. Normalmente, os serviços nomeados sem estado têm apenas uma partição, porque não têm estado interno. As instâncias de partição fornecem disponibilidade. Se uma instância falhar, outras instâncias continuarão a operar normalmente e, em seguida, o Service Fabric criará uma nova instância. Os serviços nomeados com estado mantêm seu estado dentro das réplicas e cada partição tem seu próprio conjunto de réplicas para que o estado seja mantido em sincronia. Se uma réplica falhar, o Service Fabric criará uma nova réplica a partir das réplicas existentes.
Leia o artigo de serviços confiáveis do Partition Service Fabric para obter mais informações.
Serviços do sistema
Há serviços do sistema criados em cada cluster que fornecem os recursos de plataforma do Service Fabric.
Serviço de Nomenclatura: Cada cluster do Service Fabric tem um Serviço de Nomenclatura, que resolve nomes de serviço para um local no cluster. Você gerencia os nomes e propriedades do serviço, como um DNS (Sistema de Nomes de Domínio) da Internet para o cluster. Os clientes se comunicam com segurança com qualquer nó no cluster usando o Serviço de Nomenclatura para resolver um nome de serviço e seu local. Os aplicativos são movidos dentro do cluster. Por exemplo, isso pode ser devido a falhas, balanceamento de recursos ou redimensionamento do cluster. Você pode desenvolver serviços e clientes que resolvam o local de rede atual. Os clientes obtêm o endereço IP real da máquina e a porta onde ela está sendo executada no momento.
Leia Comunicar-se com serviços para obter mais informações sobre as APIs de comunicação de cliente e serviço que funcionam com o Serviço de Nomenclatura.
Serviço de Armazenamento de Imagens: cada cluster do Service Fabric tem um serviço de Armazenamento de Imagens onde os pacotes de aplicativos implantados e versionados são mantidos. Copie um pacote de aplicativo para o Repositório de Imagens e registre o tipo de aplicativo contido nesse pacote de aplicativo. Depois que o tipo de aplicativo é provisionado, você cria um aplicativo nomeado a partir dele. Você pode cancelar o registro de um tipo de aplicativo do serviço Armazenamento de Imagens depois que todos os seus aplicativos nomeados tiverem sido excluídos.
Leia Compreender a configuração ImageStoreConnectionString para obter mais informações sobre o serviço de Armazenamento de Imagens.
Leia o artigo Implantar um aplicativo para obter mais informações sobre como implantar aplicativos no serviço de Armazenamento de Imagens.
Serviço Gerenciador de Failover: cada cluster do Service Fabric tem um serviço Gerenciador de Failover que é responsável pelas seguintes ações:
- Executa funções relacionadas à alta disponibilidade e consistência dos serviços.
- Orquestra atualizações de aplicativos e clusters.
- Interage com outros componentes do sistema.
Serviço Repair Manager: Este é um serviço de sistema opcional que permite que ações de reparo sejam executadas em um cluster de forma segura, automatizada e transparente. O gerenciador de reparos é usado em:
- Executar reparos de manutenção do Azure em clusters do Azure Service Fabric de durabilidade Silver e Gold.
- Realização de ações de reparo para o aplicativo Patch Orchestration
Modelos de implantação e aplicativos
Para implantar seus serviços, você precisa descrever como eles devem ser executados. O Service Fabric oferece suporte a três modelos de implantação diferentes:
Modelo nativo
O modelo de aplicativo nativo fornece aos seus aplicativos acesso total de baixo nível ao Service Fabric. Aplicativos e serviços são definidos como tipos registrados em arquivos de manifesto XML.
O modelo nativo suporta as estruturas Reliable Services e Reliable Actors, que fornecem acesso às APIs de tempo de execução do Service Fabric e APIs de gerenciamento de cluster em C# e Java. O modelo nativo também suporta contêineres arbitrários e executáveis.
Serviços confiáveis: uma API para criar serviços sem estado e com monitoração de estado. Os serviços com estado armazenam seu estado em Coleções confiáveis, como um dicionário ou uma fila. Você também pode conectar várias pilhas de comunicação, como API da Web e WCF (Windows Communication Foundation).
Atores confiáveis: uma API para criar objetos sem estado e com estado por meio do modelo de programação do ator virtual. Este modelo é útil quando você tem muitas unidades independentes de computação ou estado. Esse modelo usa um modelo de threading baseado em turnos, portanto, é melhor evitar o código que chama outros atores ou serviços porque um ator individual não pode processar outras solicitações de entrada até que todas as suas solicitações de saída sejam concluídas.
Você também pode executar seus aplicativos existentes no Service Fabric:
Contêineres: o Service Fabric oferece suporte à implantação de contêineres do Docker em contêineres do Linux e do Windows Server no Windows Server 2016, juntamente com suporte ao modo de isolamento do Hyper-V. No modelo de aplicativo do Service Fabric, um contêiner representa um host de aplicativo no qual várias réplicas de serviço são colocadas. O Service Fabric pode executar qualquer contêiner e o cenário é semelhante ao cenário executável convidado, em que você empacota um aplicativo existente dentro de um contêiner. Além disso, você também pode executar serviços do Service Fabric dentro de contêineres .
Executáveis convidados: você pode executar qualquer tipo de código, como Node.js, Python, Java ou C++ no Azure Service Fabric como um serviço. O Service Fabric refere-se a esses tipos de serviços como executáveis convidados, que são tratados como serviços sem monitoração de estado. As vantagens de executar um executável convidado em um cluster do Service Fabric incluem alta disponibilidade, monitoramento de integridade, gerenciamento do ciclo de vida do aplicativo, alta densidade e capacidade de descoberta.
Leia o artigo Escolha um modelo de programação para o seu serviço para obter mais informações.
Docker Compose
O Docker Compose faz parte do projeto Docker. O Service Fabric fornece suporte limitado para a implantação de aplicativos usando o modelo Docker Compose.
Ambientes
O Service Fabric é uma tecnologia de plataforma de código aberto na qual vários serviços e produtos diferentes se baseiam. A Microsoft fornece as seguintes opções:
- Azure Service Fabric: A oferta de cluster do Service Fabric hospedado no Azure. Ele fornece integração entre o Service Fabric e a infraestrutura do Azure, juntamente com o gerenciamento de atualização e configuração de clusters do Service Fabric.
- Service Fabric autônomo: um conjunto de ferramentas de instalação e configuração para implantar clusters do Service Fabric em qualquer lugar (local ou em qualquer provedor de nuvem). Não gerenciado pelo Azure.
- Cluster de desenvolvimento do Service Fabric: fornece uma experiência de desenvolvimento local no Windows, Linux ou Mac para o desenvolvimento de aplicativos do Service Fabric.
Próximos passos
Para saber mais sobre o Service Fabric:
- Visão geral do Service Fabric
- Why a microservices approach to building applications? (Porquê seguir a abordagem de microsserviços para criar aplicações?)
- Cenários de aplicações