Perguntas frequentes sobre o Service FabricCommonly asked Service Fabric questions

Há muitas perguntas frequentes sobre o que o Service Fabric pode fazer e como ele deve ser usado.There are many commonly asked questions about what Service Fabric can do and how it should be used. Este documento aborda muitas dessas perguntas comuns e suas respostas.This document covers many of those common questions and their answers.

Observação

Este artigo foi atualizado para usar o módulo Az PowerShell do Azure.This article has been updated to use the Azure Az PowerShell module. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Gerenciamento e instalação de clusterCluster setup and management

Como faço para reverter meu certificado de cluster do Service Fabric?How do I roll back my Service Fabric cluster certificate?

Reverter qualquer atualização para o seu aplicativo requer detecção de falha de integridade antes da confirmação de alteração do quórum do cluster do Service Fabric; as alterações confirmadas somente podem passar por roll forward.Rolling back any upgrade to your application requires health failure detection prior to your Service Fabric cluster quorum committing the change; committed changes can only be rolled forward. Engenheiros de escalação nos Serviços de Atendimento ao Cliente podem ser solicitados a recuperar seu cluster, se uma alteração de certificado interrompido não monitorado tiver sido introduzido.Escalation engineer’s through Customer Support Services, may be required to recover your cluster, if an unmonitored breaking certificate change has been introduced. A Atualização do aplicativo do Service Fabric aplica parâmetros de atualização de aplicativo e não oferece promessa de atualização de tempo de inatividade.Service Fabric’s application upgrade applies Application upgrade parameters, and delivers zero downtime upgrade promise. Seguindo o nosso modo monitorado de atualização de aplicativo recomendado, o andamento automática através de domínios de atualização se baseia nas verificações de integridade sem interrupção, revertendo automaticamente se a atualização de um serviço padrão falhar.Following our recommended application upgrade monitored mode, automatic progress through update domains is based upon health checks passing, rolling back automatically if updating a default service fails.

Se o seu cluster ainda estiver aproveitando a clássica propriedade Thumbprint do Certificado em seu modelo do Resource Manager, é recomendável Alterar o cluster da impressão digital do certificado para o nome comum, para aproveitar recursos modernos de gerenciamento de segredos.If your cluster is still leveraging the classic Certificate Thumbprint property in your Resource Manager template, it's recommended you Change cluster from certificate thumbprint to common name, to leverage modern secrets management features.

É possível criar um cluster que abranja várias regiões do Azure ou meus próprios data centers?Can I create a cluster that spans multiple Azure regions or my own datacenters?

Sim.Yes.

A principal tecnologia de clustering do Service Fabric pode ser usada para combinar máquinas em execução em qualquer lugar do mundo, desde que elas tenham conectividade de rede entre si.The core Service Fabric clustering technology can be used to combine machines running anywhere in the world, so long as they have network connectivity to each other. No entanto, criar e executar um cluster desse tipo pode ser complicado.However, building and running such a cluster can be complicated.

Se você está interessado nesse cenário, é recomendável entrar em contato por meio da Lista de problemas do Service Fabric no GitHub ou de seu representante de suporte para obter orientações adicionais.If you are interested in this scenario, we encourage you to get in contact either through the Service Fabric GitHub Issues List or through your support representative in order to obtain additional guidance. A equipe do Service Fabric está trabalhando para fornecer informações, orientações e recomendações adicionais para esse cenário.The Service Fabric team is working to provide additional clarity, guidance, and recommendations for this scenario.

Veja a seguir alguns itens que você deve levar em consideração:Some things to consider:

  1. Atualmente, o recurso de cluster do Service Fabric no Azure é regional, assim como os conjuntos de dimensionamento de máquinas virtuais nos quais o cluster se baseia.The Service Fabric cluster resource in Azure is regional today, as are the virtual machine scale sets that the cluster is built on. Isso significa que, em caso de falha regional, você pode perder a capacidade de gerenciar o cluster por meio do Azure Resource Manager ou do Portal do Azure.This means that in the event of a regional failure you may lose the ability to manage the cluster via the Azure Resource Manager or the Azure portal. Isso pode acontecer mesmo que o cluster permaneça em execução e que você possa interagir diretamente com ele.This can happen even though the cluster remains running and you'd be able to interact with it directly. Além disso, atualmente o Azure não possibilita ter uma única rede virtual que possa ser usada em várias regiões.In addition, Azure today does not offer the ability to have a single virtual network that is usable across regions. Isso significa que um cluster de várias regiões no Azure requer um endereços IP públicos para cada VM nos conjuntos de dimensionamento de máquinas virtuais ou gateways de VPN do Azure.This means that a multi-region cluster in Azure requires either Public IP Addresses for each VM in the virtual machine scale sets or Azure VPN Gateways. Essas opções de rede têm impactos diferentes sobre os custos, o desempenho e, até certo ponto, o design do aplicativo, de modo que análise e planejamento cuidadosos são necessários antes de manter um ambiente desse tipo.These networking choices have different impacts on costs, performance, and to some degree application design, so careful analysis and planning is required before standing up such an environment.
  2. A manutenção, o gerenciamento e o monitoramento dessas máquinas podem ficar complicados, especialmente quando distribuídas em tipos de ambientes, como entre provedores de nuvem diferentes ou entre recursos locais e o Azure.The maintenance, management, and monitoring of these machines can become complicated, especially when spanned across types of environments, such as between different cloud providers or between on-premises resources and Azure. É necessário ter cuidado para garantir que as atualizações, o monitoramento, o gerenciamento e o diagnóstico sejam compreendidos para o cluster e para os aplicativos antes de executar cargas de trabalho de produção em um ambiente desse tipo.Care must be taken to ensure that upgrades, monitoring, management, and diagnostics are understood for both the cluster and the applications before running production workloads in such an environment. Se você já tiver experiência solucionando esses problemas no Azure ou em seus próprios datacenters, é provável que as mesmas soluções possam ser aplicadas ao compilar ou executar seu cluster do Service Fabric.If you already have experience solving these problems in Azure or within your own datacenters, then it is likely that those same solutions can be applied when building out or running your Service Fabric cluster.

Os nós do Service Fabric recebem as atualizações do sistema operacional automaticamente?Do Service Fabric nodes automatically receive OS updates?

Você pode usar o recurso Atualização geral de imagem do sistema operacional em escala de computador virtual disponível hoje em dia.You can use Virtual Machine Scale Set Automatic OS Image Update Generally Available feature today.

Para clusters que NÃO são executados no Azure, fornecemos um aplicativo para corrigir os sistemas operacionais abaixo dos nós do Service Fabric.For clusters that are NOT run in Azure, we have provided an application to patch the operating systems underneath your Service Fabric nodes.

Posso usar conjuntos de dimensionamento de máquinas virtuais grandes no meu cluster do SF?Can I use large virtual machine scale sets in my SF cluster?

Resposta curta – Não.Short answer - No.

Resposta longa – embora os conjuntos de dimensionamento de máquinas virtuais grandes permitam que você dimensione um conjunto de dimensionamento de máquinas virtuais até 1.000 instâncias de VM, isso é feito com o uso de PGs (Grupos de Posicionamento).Long Answer - Although the large virtual machine scale sets allow you to scale a virtual machine scale set up to 1000 VM instances, it does so by the use of Placement Groups (PGs). FDs (domínios de falha) e UDs (domínios de atualização) só são consistentes dentro de um grupo de posicionamento. O Service Fabric usa UDs e FDs para tomar decisões de posicionamento de suas instâncias de serviço/réplicas de serviço.Fault domains (FDs) and upgrade domains (UDs) are only consistent within a placement group Service fabric uses FDs and UDs to make placement decisions of your service replicas/Service instances. Já que UDs e FDs são comparáveis somente dentro de um grupo de posicionamento, o SF não pode usá-los.Since the FDs and UDs are comparable only within a placement group, SF cannot use it. Por exemplo, se VM1 no PG1 tem uma topologia de FD=0 e VM9 em PG2 tem uma topologia de FD=4, isso não significa que VM1 e VM2 estejam em dois Racks de hardwares diferentes, portanto, os SFs não podem usar os valores de FD nesse caso para tomar decisões de posicionamento.For example, If VM1 in PG1 has a topology of FD=0 and VM9 in PG2 has a topology of FD=4, it does not mean that VM1 and VM2 are on two different Hardware Racks, hence SF cannot use the FD values in this case to make placement decisions.

Atualmente, há outros problemas com conjuntos de dimensionamento de máquinas virtuais grandes, como a falta de suporte para o balanceamento de carga de nível 4.There are other issues with large virtual machine scale sets currently, like the lack of level-4 Load balancing support. Consulte para obter detalhes sobre grandes conjuntos de dimensionamentoRefer to for details on Large scale sets

Qual o tamanho mínimo de um cluster do Service Fabric?What is the minimum size of a Service Fabric cluster? Por que ele não pode ser menor?Why can't it be smaller?

O tamanho mínimo com suporte para um cluster do Service Fabric que execute cargas de trabalho de produção é de cinco nós.The minimum supported size for a Service Fabric cluster running production workloads is five nodes. Para cenários de desenvolvimento, damos suporte a um nó (otimizado para experiência de desenvolvimento rápido no Visual Studio) e cinco clusters de nó.For dev scenarios, we support one node (optimized for quick development experience in Visual Studio) and five node clusters.

Exigimos que um cluster de produção tenha pelo menos cinco nós devido aos três motivos a seguir:We require a production cluster to have at least five nodes because of the following three reasons:

  1. Mesmo quando nenhum serviço de usuário estiver em execução, um cluster do Service Fabric executa um conjunto de serviços com sistema de estado, incluindo o serviço de nomes e o serviço de gerenciador de failover.Even when no user services are running, a Service Fabric cluster runs a set of stateful system services, including the naming service and the failover manager service. Esses serviços do sistema são essenciais para o cluster permanecer operacional.These system services are essential for the cluster to remain operational.
  2. Sempre colocamos uma réplica de um serviço por nó, de modo que o tamanho do cluster é o limite superior para o número de réplicas que um serviço (na verdade, uma partição) pode ter.We always place one replica of a service per node, so cluster size is the upper limit for the number of replicas a service (actually a partition) can have.
  3. Como uma atualização de cluster desligará pelo menos um nó, queremos ter um buffer de pelo menos um nó; portanto, queremos que um cluster de produção tenha pelo menos dois nós além do mínimo necessário.Since a cluster upgrade will bring down at least one node, we want to have a buffer of at least one node, therefore, we want a production cluster to have at least two nodes in addition to the bare minimum. O mínimo necessário é o tamanho do quorum de um serviço de sistema, conforme explicado abaixo.The bare minimum is the quorum size of a system service as explained below.

Queremos que o cluster esteja disponíveis se houver falha simultânea de dois nós.We want the cluster to be available in the face of simultaneous failure of two nodes. Para que um cluster do Service Fabric esteja disponível, os serviços do sistema deverão estar disponíveis.For a Service Fabric cluster to be available, the system services must be available. Serviços de sistema com estado como serviço de nomenclatura e serviço de gerenciamento de failover, que controlam quais serviços foram implantados no cluster e onde eles estão hospedados atualmente, dependem de uma consistência forte.Stateful system services like naming service and failover manager service, that track what services have been deployed to the cluster and where they're currently hosted, depend on strong consistency. Essa consistência forte, por sua vez, depende da capacidade de adquirir um quorum para qualquer atualização para o estado desses serviços, onde um quorum representa a maioria estrita das réplicas (N/2 + 1) para um determinado serviço.That strong consistency, in turn, depends on the ability to acquire a quorum for any given update to the state of those services, where a quorum represents a strict majority of the replicas (N/2 +1) for a given service. Portanto, se quisermos ser resilientes em relação à perda simultânea de dois nós (portanto, perda simultânea de duas réplicas de um serviço de sistema), precisamos ter ClusterSize - QuorumSize > = 2, que força o tamanho mínimo para ser cinco.Thus if we want to be resilient against simultaneous loss of two nodes (thus simultaneous loss of two replicas of a system service), we must have ClusterSize - QuorumSize >= 2, which forces the minimum size to be five. Para ver isso, considere que o cluster tem N nós e há N réplicas de um serviço de sistema, uma em cada nó.To see that, consider the cluster has N nodes and there are N replicas of a system service -- one on each node. O tamanho do quorum para um serviço do sistema é (N/2 + 1).The quorum size for a system service is (N/2 + 1). O operador de desigualdade acima se parece com N - (N/2 + 1) > = 2.The above inequality looks like N - (N/2 + 1) >= 2. Há dois casos a serem considerados: quando N for par e quando N for ímpar.There are two cases to consider: when N is even and when N is odd. Se N for par, digamos, N = 2*m onde m >= 1, a desigualdade parece 2*m - (2*m/2 + 1) >= 2 ou m >= 3.If N is even, say N = 2*m where m >= 1, the inequality looks like 2*m - (2*m/2 + 1) >= 2 or m >= 3. O requisito mínimo para N é 6 e isso é obtido quando m = 3.The minimum for N is 6 and that is achieved when m = 3. Por outro lado, se N for ímpar, digamos, N = 2*m + 1, onde m > = 1, a desigualdade parece 2*m + 1 - ((2*m + 1) / 2 + 1) > = 2 ou 2*m + 1 - (m + 1) > = 2 ou m > = 2.On the other hand, if N is odd, say N = 2*m+1 where m >= 1, the inequality looks like 2*m+1 - ( (2*m+1)/2 + 1 ) >= 2 or 2*m+1 - (m+1) >= 2 or m >= 2. O requisito mínimo para N é 5 e isso é obtido quando m = 2.The minimum for N is 5 and that is achieved when m = 2. Portanto, entre todos os valores de N que satisfazem a desigualdade ClusterSize - QuorumSize > = 2, o mínimo é 5.Therefore, among all values of N that satisfy the inequality ClusterSize - QuorumSize >= 2, the minimum is 5.

No argumento acima, pressupomos que cada nó tenha uma réplica de um serviço de sistema, portanto, o tamanho do quorum é calculado com base no número de nós no cluster.Note, in the above argument we have assumed that every node has a replica of a system service, thus the quorum size is computed based on the number of nodes in the cluster. No entanto, se alterássemos TargetReplicaSetSize, poderíamos deixar o tamanho do quorum menor que (N/2+1) que pode dar a impressão de que poderíamos ter um cluster menor do que 5 nós e ainda ter 2 nós extras acima do tamanho do quorum.However, by changing TargetReplicaSetSize we could make the quorum size less than (N/2+1) which might give the impression that we could have a cluster smaller than 5 nodes and still have 2 extra nodes above the quorum size. Por exemplo, em um cluster de 4 nós, se definirmos o TargetReplicaSetSize como 3, o tamanho do quorum baseado em TargetReplicaSetSize será (3/2 + 1) ou 2 e, portanto, teremos ClusterSize - QuorumSize = 4-2 >= 2.For example, in a 4 node cluster, if we set the TargetReplicaSetSize to 3, the quorum size based on TargetReplicaSetSize is (3/2 + 1) or 2, thus we have ClusterSize - QuorumSize = 4-2 >= 2. No entanto, não podemos garantir que o serviço de sistema será exatamente o valor ou acima do quorum se perdermos qualquer par de nós simultaneamente. Os dois nós perdidos poderiam estar hospedando duas réplicas, portanto, o serviço do sistema entraria em perda de quorum (tendo apenas uma única réplica sobrando) e ficaria indisponível.However, we cannot guarantee that the system service will be at or above quorum if we lose any pair of nodes simultaneously, it could be that the two nodes we lost were hosting two replicas, so the system service will go into quorum loss (having only a single replica left) and will become unavailable.

Com esse plano de fundo, vamos examinar algumas configurações de cluster possíveis:With that background, let's examine some possible cluster configurations:

Um nó: essa opção não oferece alta disponibilidade, já que a perda do nó único por qualquer motivo significa a perda de todo o cluster.One node: this option does not provide high availability since the loss of the single node for any reason means the loss of the entire cluster.

Dois nós: um quorum para um serviço implantado entre dois nós (N = 2) é 2 (2/2 + 1 = 2).Two nodes: a quorum for a service deployed across two nodes (N = 2) is 2 (2/2 + 1 = 2). Quando uma única réplica é perdida, é impossível criar um quorum.When a single replica is lost, it is impossible to create a quorum. Como a execução de uma atualização de serviço requer desativar temporariamente uma réplica, essa não é uma configuração útil.Since performing a service upgrade requires temporarily taking down a replica, this is not a useful configuration.

Três nós: com três nós (N=3), o requisito para criar um quorum ainda é dois nós (3/2 + 1 = 2).Three nodes: with three nodes (N=3), the requirement to create a quorum is still two nodes (3/2 + 1 = 2). Isso significa que você pode perder um nó individual e ainda manter o quorum, mas a falha simultânea de dois nós fará os serviços do sistema entrar em perda de quorum e fará o cluster se tornar indisponível.This means that you can lose an individual node and still maintain quorum, but simultaneous failure of two nodes will drive the system services into quorum loss and will cause the cluster to become unavailable.

Quatro nós: com quatro nós (N=4), o requisito para criar um quorum é três nós (4/2 + 1 = 3).Four nodes: with four nodes (N=4), the requirement to create a quorum is three nodes (4/2 + 1 = 3). Isso significa que você pode perder um nó individual e ainda manter o quorum, mas a falha simultânea de dois nós fará os serviços do sistema entrar em perda de quorum e fará o cluster se tornar indisponível.This means that you can lose an individual node and still maintain quorum, but simultaneous failure of two nodes will drive the system services into quorum loss and will cause the cluster to become unavailable.

Cinco nós: com cinco nós (N=5), o requisito para criar um quorum ainda é três nós (5/2 + 1 = 3).Five nodes: with five nodes (N=5), the requirement to create a quorum is still three nodes (5/2 + 1 = 3). Isso significa que você pode perder dois nós ao mesmo tempo e ainda manter o quorum para os serviços do sistema.This means that you can lose two nodes at the same time and still maintain quorum for the system services.

Para cargas de trabalho de produção, você deve ser resiliente a falhas simultâneas de pelo menos dois nós (por exemplo, um devido à atualização de cluster, um por outros motivos), portanto, cinco nós são necessários.For production workloads, you must be resilient to simultaneous failure of at least two nodes (for example, one due to cluster upgrade, one due to other reasons), so five nodes are required.

Posso desativar meu cluster à noite/aos finais de semana para reduzir custos?Can I turn off my cluster at night/weekends to save costs?

Em geral, não.In general, no. O Service Fabric armazena o estado em discos locais, efêmeros, o que significa que, se a máquina virtual for movida para um host diferente, os dados não serão movidos com ela.Service Fabric stores state on local, ephemeral disks, meaning that if the virtual machine is moved to a different host, the data does not move with it. Na operação normal, isso não é um problema, já que o novo nó é atualizado por outros nós.In normal operation, that is not a problem as the new node is brought up to date by other nodes. No entanto, se você parar todos os nós e reiniciá-los mais tarde, haverá uma possibilidade significativa de a maioria dos nós iniciar em novos hosts e impossibilitar a recuperação do sistema.However, if you stop all nodes and restart them later, there is a significant possibility that most of the nodes start on new hosts and make the system unable to recover.

Se você quiser criar clusters para testar seu aplicativo antes da implantação, é recomendável criar dinamicamente os clusters como parte de sua integração contínua/pipeline de implantação contínuo.If you would like to create clusters for testing your application before it is deployed, we recommend that you dynamically create those clusters as part of your continuous integration/continuous deployment pipeline.

Como atualizo meu sistema operacional (por exemplo, do Windows Server 2012 para o Windows Server 2016)?How do I upgrade my Operating System (for example from Windows Server 2012 to Windows Server 2016)?

Embora estejamos trabalhando em uma experiência aprimorada, no momento você é responsável pela atualização.While we're working on an improved experience, today, you are responsible for the upgrade. Você deve atualizar a imagem do sistema operacional nas máquinas virtuais do cluster em uma VM por vez.You must upgrade the OS image on the virtual machines of the cluster one VM at a time.

Posso criptografar discos de dados anexados em um tipo de nó de cluster (conjunto de dimensionamento de máquinas virtuais)?Can I encrypt attached data disks in a cluster node type (virtual machine scale set)?

Sim.Yes. Para obter mais informações, consulte criar um cluster com discos de dados anexados e Azure Disk Encryption para conjuntos de dimensionamento de máquinas virtuais.For more information, see Create a cluster with attached data disks and Azure Disk Encryption for Virtual Machine Scale Sets.

Posso usar VMs de baixa prioridade em um tipo de nó de cluster (conjunto de escala de máquina virtual)?Can I use low-priority VMs in a cluster node type (virtual machine scale set)?

Não.No. Não há suporte para VMs de baixa prioridade.Low-priority VMs are not supported.

Quais são os diretórios e os processos que preciso excluir ao executar um programa antivírus no meu cluster?What are the directories and processes that I need to exclude when running an anti-virus program in my cluster?

Diretórios de Antivírus excluídosAntivirus Excluded directories
Program Files\Microsoft Service FabricProgram Files\Microsoft Service Fabric
FabricDataRoot (da configuração de cluster)FabricDataRoot (from cluster configuration)
FabricLogRoot (da configuração de cluster)FabricLogRoot (from cluster configuration)
Processos do antivírus excluídosAntivirus Excluded processes
Fabric.exeFabric.exe
FabricHost.exeFabricHost.exe
FabricInstallerService.exeFabricInstallerService.exe
FabricSetup.exeFabricSetup.exe
FabricDeployer.exeFabricDeployer.exe
ImageBuilder.exeImageBuilder.exe
FabricGateway.exeFabricGateway.exe
FabricDCA.exeFabricDCA.exe
FabricFAS.exeFabricFAS.exe
FabricUOS.exeFabricUOS.exe
FabricRM.exeFabricRM.exe
FileStoreService.exeFileStoreService.exe

Como meu aplicativo pode se autenticar para Key Vault para obter segredos?How can my application authenticate to Key Vault to get secrets?

Veja a seguir os meios para que seu aplicativo obtenha credenciais para autenticação no Key Vault:The following are means for your application to obtain credentials for authenticating to Key Vault:

a.A. Durante o trabalho de criação/empacotamento de aplicativos, você pode efetuar pull de um certificado no pacote de dados do seu aplicativo de it e usá-lo para autenticar no Key Vault.During your applications build/packing job, you can pull a certificate into your SF app's data package, and use this to authenticate to Key Vault. B.B. Para hosts habilitados para MSI do conjunto de dimensionamento de máquinas virtuais, você pode desenvolver um SetupEntryPoint simples do PowerShell para seu aplicativo de it para obter um token de acesso do ponto de extremidade do MSIe, em seguida, recuperar seus segredos de Key Vault.For virtual machine scale set MSI enabled hosts, you can develop a simple PowerShell SetupEntryPoint for your SF app to get an access token from the MSI endpoint, and then retrieve your secrets from Key Vault.

Design do aplicativoApplication Design

Qual a melhor maneira de consultar dados ao longo das partições de uma Coleção Confiável?What's the best way to query data across partitions of a Reliable Collection?

Coleções Confiáveis normalmente são particionadas para permitir a escalação horizontal para um melhor desempenho e resultado.Reliable collections are typically partitioned to enable scale out for greater performance and throughput. Isso significa que o estado de um determinado serviço pode ser espalhado por dezenas ou centenas de máquinas.That means that the state for a given service may be spread across tens or hundreds of machines. Para executar operações no conjunto de dados completo, você tem algumas opções:To perform operations over that full data set, you have a few options:

  • Criar um serviço que consulte todas as partições de outro serviço para obter os dados necessários.Create a service that queries all partitions of another service to pull in the required data.
  • Criar um serviço que possa receber dados de todas as partições de outro serviço.Create a service that can receive data from all partitions of another service.
  • Enviar dados por push periodicamente de cada serviço para um repositório externo.Periodically push data from each service to an external store. Essa abordagem só será apropriada se as consultas que você estiver executando não fizerem parte da lógica de negócios principal, pois os dados do repositório externo ficarão obsoletos.This approach is only appropriate if the queries you're performing are not part of your core business logic, as the external store's data will be stale.
  • Como alternativa, armazene dados que devem dar suporte à consulta em todos os registros diretamente em um repositório de dados em vez de em uma coleção confiável.Alternatively, store data that must support querying across all records directly in a data store rather than in a reliable collection. Isso elimina o problema com dados obsoletos, mas não permite que as vantagens das coleções confiáveis sejam aproveitadas.This eliminates the issue with stale data, but doesn't allow the advantages of reliable collections to be leveraged.

Qual a melhor maneira de consultar dados entre os meus atores?What's the best way to query data across my actors?

Os atores são projetados para serem unidades independentes de estado e computação, portanto, não é recomendável executar consultas amplas de estado do ator no runtime.Actors are designed to be independent units of state and compute, so it is not recommended to perform broad queries of actor state at runtime. Se você precisar fazer uma consulta em todo o conjunto de um estado do ator, deve considerar:If you have a need to query across the full set of actor state, you should consider either:

  • Substituir seus serviços de ator por serviços confiáveis com estado, assim como o número de solicitações de rede para reunir todos os dados do número de atores para o número de partições do seu serviço.Replacing your actor services with stateful reliable services, so that the number of network requests to gather all data from the number of actors to the number of partitions in your service.
  • Projetar seus atores para enviar seu estado por push a um repositório externo periodicamente para facilitar a consulta.Designing your actors to periodically push their state to an external store for easier querying. Como acima, essa abordagem só é viável se as consultas que você estiver executando não forem necessárias para o comportamento do seu runtime.As above, this approach is only viable if the queries you're performing are not required for your runtime behavior.

Quantos dados posso armazenar em uma Coleção Confiável?How much data can I store in a Reliable Collection?

Serviços confiáveis normalmente são particionados, de forma que o valor que você pode armazenar é limitado apenas pelo número de máquinas que tem no cluster e a quantidade de memória disponível nessas máquinas.Reliable services are typically partitioned, so the amount you can store is only limited by the number of machines you have in the cluster, and the amount of memory available on those machines.

Como exemplo, suponha que você tenha uma coleção confiável em um serviço com 100 partições e 3 réplicas, armazenando objetos com uma média de 1 KB de tamanho.As an example, suppose that you have a reliable collection in a service with 100 partitions and 3 replicas, storing objects that average 1 kb in size. Agora, suponha que você tem um cluster de 10 máquinas com 16 gb de memória por máquina.Now suppose that you have a 10 machine cluster with 16gb of memory per machine. Para simplificar e sendo cauteloso, suponha que o sistema operacional e os serviços do sistema, o runtime do Service Fabric e seus serviços consomem 6 GB disso, deixando 10 GB disponíveis por computador, ou 100 GB para o cluster.For simplicity and to be conservative, assume that the operating system and system services, the Service Fabric runtime, and your services consume 6gb of that, leaving 10gb available per machine, or 100 gb for the cluster.

Tendo em mente que cada objeto deve ser armazenado três vezes (uma primária e duas réplicas), você teria memória suficiente para cerca de 35 milhões de objetos na sua coleção ao operar com capacidade total.Keeping in mind that each object must be stored three times (one primary and two replicas), you would have sufficient memory for approximately 35 million objects in your collection when operating at full capacity. No entanto, recomendamos ser resiliente à perda simultânea de um domínio de falha e um domínio de atualização, que representa aproximadamente 1/3 da capacidade e reduziria o número a aproximadamente 23 milhões.However, we recommend being resilient to the simultaneous loss of a failure domain and an upgrade domain, which represents about 1/3 of capacity, and would reduce the number to roughly 23 million.

Esse cálculo também pressupõe:This calculation also assumes:

  • A distribuição de dados entre as partições é aproximadamente uniforme ou que você está relatando métricas de carga para o Gerenciador de Recursos de Cluster.That the distribution of data across the partitions is roughly uniform or that you're reporting load metrics to the Cluster Resource Manager. Por padrão, o Service Fabric executa balanceamento de carga com base na contagem de réplicas.By default, Service Fabric loads balance based on replica count. No exemplo anterior, isso colocaria 10 réplicas primárias e 20 réplicas secundárias em cada nó no cluster.In the preceding example, that would put 10 primary replicas and 20 secondary replicas on each node in the cluster. Isso funciona bem para cargas distribuídas uniformemente entre as partições.That works well for load that is evenly distributed across the partitions. Se a carga não for uniforme, você deverá relatá-la para que o Resource Manager possa empacotar réplicas menores juntas e permitir que as réplicas maiores consumam mais memória em um nó individual.If load is not even, you must report load so that the Resource Manager can pack smaller replicas together and allow larger replicas to consume more memory on an individual node.

  • O serviço confiável em questão é o único estado de armazenamento no cluster.That the reliable service in question is the only one storing state in the cluster. Como é possível implantar vários serviços em um cluster, é necessário estar atento aos recursos que cada um precisa para executar e gerenciar seu estado.Since you can deploy multiple services to a cluster, you need to be mindful of the resources that each needs to run and manage its state.

  • O cluster em si não está aumentando ou diminuindo.That the cluster itself is not growing or shrinking. Se você adicionar mais máquinas, o Service Fabric irá rebalancear as réplicas para aproveitar a capacidade adicional até que o número de máquinas ultrapasse o número de partições no seu serviço, já que uma réplica individual não pode abranger máquinas.If you add more machines, Service Fabric will rebalance your replicas to leverage the additional capacity until the number of machines surpasses the number of partitions in your service, since an individual replica cannot span machines. Em contrapartida, se você reduz o tamanho do cluster removendo computadores, suas réplicas são empacotadas mais próximas e têm menos capacidade geral.By contrast, if you reduce the size of the cluster by removing machines, your replicas are packed more tightly and have less overall capacity.

Quantos dados posso armazenar em um ator?How much data can I store in an actor?

Assim como acontece com os serviços confiáveis, a quantidade de dados que você pode armazenar em um serviço de ator é limitada apenas pelo espaço em disco total e a memória disponível entre os nós no cluster.As with reliable services, the amount of data that you can store in an actor service is only limited by the total disk space and memory available across the nodes in your cluster. No entanto, os atores individuais são mais eficazes quando são usados para encapsular uma pequena quantidade de estado e a lógica comercial associada.However, individual actors are most effective when they are used to encapsulate a small amount of state and associated business logic. Como regra geral, um ator individual deve ter um estado que seja medido em quilobytes.As a general rule, an individual actor should have state that is measured in kilobytes.

Onde o provedor de recursos do Azure Service Fabric armazena dados do cliente?Where does Azure Service Fabric Resource Provider store customer data?

O provedor de recursos Service Fabric do Azure não move nem armazena os dados do cliente fora da região em que ele está implantado.Azure Service Fabric Resource Provider doesn’t move or store customer data out of the region it is deployed in.

Outras perguntasOther questions

Como o Service Fabric se relaciona com os contêineres?How does Service Fabric relate to containers?

Os contêineres oferecem uma maneira simples de empacotar serviços e suas dependências, de modo que executam consistentemente em todos os ambientes e podem operar de maneira isolada em uma única máquina.Containers offer a simple way to package services and their dependencies such that they run consistently in all environments and can operate in an isolated fashion on a single machine. O Service Fabric oferece uma maneira de implantar e gerenciar serviços, incluindo serviços que foram empacotados em um contêiner.Service Fabric offers a way to deploy and manage services, including services that have been packaged in a container.

Vocês pretendem abrir o código do Service Fabric?Are you planning to open-source Service Fabric?

Temos partes de código aberto do Service Fabric (estrutura de serviços confiáveis, estrutura de atores confiáveis, bibliotecas de integração do ASP.NET Core, Service Fabric Explorer e CLI do Service Fabric) no GitHub e aceitamos contribuições da comunidade para esses projetos.We have open-sourced parts of Service Fabric (reliable services framework, reliable actors framework, ASP.NET Core integration libraries, Service Fabric Explorer, and Service Fabric CLI) on GitHub and accept community contributions to those projects.

Nós anunciamos recentemente que estamos planejando tornar o código-fonte aberto do runtime do Service Fabric.We recently announced that we plan to open-source the Service Fabric runtime. Neste ponto, temos o Service Fabric repositório no GitHub com ferramentas de teste e compilação do Linux, o que significa que você pode clonar o repositório, criar Service Fabric para Linux, executar testes básicos, abrir problemas e enviar solicitações de pull.At this point, we have the Service Fabric repo up on GitHub with Linux build and test tools, which means you can clone the repo, build Service Fabric for Linux, run basic tests, open issues, and submit pull requests. Estamos trabalhando duro para migrar o ambiente de build do Windows junto com um ambiente completo de CI.We’re working hard to get the Windows build environment migrated over as well, along with a complete CI environment.

Siga o Blog do Service Fabric para obter mais detalhes à medida que eles forem anunciados.Follow the Service Fabric blog for more details as they're announced.

Próximas etapasNext steps

Saiba mais sobre os principais conceitos do Service Fabric e práticas recomendadasLearn about core Service Fabric concepts and best practices