Planeamento de capacidade para aplicações do Service Fabric

Este documento ensina-o a estimar a quantidade de recursos (CPUs, RAM, armazenamento de discos) de que precisa para executar as suas aplicações do Azure Service Fabric. É comum que os seus requisitos de recursos mudem ao longo do tempo. Normalmente, precisa de poucos recursos à medida que desenvolve/testa o seu serviço e, em seguida, precisa de mais recursos à medida que entra em produção e a sua aplicação cresce em popularidade. Quando conceber a sua aplicação, pense nos requisitos a longo prazo e faça escolhas que permitam ao seu serviço dimensionar para satisfazer a elevada procura dos clientes.

Quando cria um cluster do Service Fabric, decide que tipos de máquinas virtuais (VMs) compõem o cluster. Cada VM inclui uma quantidade limitada de recursos na forma de CPUs (núcleos e velocidade), largura de banda de rede, RAM e armazenamento de discos. À medida que o seu serviço cresce ao longo do tempo, pode atualizar para VMs que oferecem mais recursos e/ou adicionar mais VMs ao cluster. Para efetuar este último procedimento, tem de arquitetar o seu serviço inicialmente para que este possa tirar partido das novas VMs que são adicionadas dinamicamente ao cluster.

Alguns serviços gerem pouco ou nenhum dados nas próprias VMs. Por conseguinte, o planeamento de capacidade para estes serviços deve centrar-se principalmente no desempenho, o que significa selecionar as CPUs (núcleos e velocidade) adequadas das VMs. Além disso, deve considerar a largura de banda de rede, incluindo a frequência com que as transferências de rede estão a ocorrer e a quantidade de dados que estão a ser transferidos. Se o seu serviço precisar de ter um bom desempenho e a utilização do serviço aumentar, pode adicionar mais VMs ao cluster e fazer o balanceamento de carga dos pedidos de rede em todas as VMs.

Para serviços que gerem grandes quantidades de dados nas VMs, o planeamento da capacidade deve focar-se principalmente no tamanho. Assim, deve considerar cuidadosamente a capacidade da RAM da VM e o armazenamento de discos. O sistema de gestão de memória virtual no Windows faz com que o espaço em disco pareça RAM para o código da aplicação. Além disso, o runtime do Service Fabric fornece paginação inteligente, mantendo apenas os dados quentes na memória e movendo os dados frios para o disco. Assim, as aplicações podem utilizar mais memória do que está fisicamente disponível na VM. Ter mais RAM simplesmente aumenta o desempenho, uma vez que a VM pode manter mais armazenamento em disco na RAM. A VM que selecionar deve ter um disco suficientemente grande para armazenar os dados que pretende na VM. Da mesma forma, a VM deve ter RAM suficiente para lhe proporcionar o desempenho pretendido. Se os dados do seu serviço crescerem ao longo do tempo, pode adicionar mais VMs ao cluster e particionar os dados em todas as VMs.

Determinar quantos nós precisa

A criação de partições do serviço permite-lhe aumentar horizontalmente os dados do serviço. Para obter mais informações sobre a criação de partições, veja Particionar o Service Fabric. Cada partição tem de caber numa única VM, mas podem ser colocadas múltiplas partições (pequenas) numa única VM. Assim, ter partições mais pequenas dá-lhe mais flexibilidade do que ter algumas partições maiores. A contrapartida é que ter muitas partições aumenta a sobrecarga do Service Fabric e não pode realizar operações transacionadas entre partições. Também existe mais tráfego de rede potencial se o código de serviço precisar frequentemente de aceder a partes de dados que vivem em partições diferentes. Ao conceber o seu serviço, deve considerar cuidadosamente estes prós e contras para chegar a uma estratégia de criação de partições eficaz.

Vamos supor que a sua aplicação tem um único serviço com estado que tem um tamanho de arquivo que espera aumentar para DB_Size GB num ano. Está disposto a adicionar mais aplicações (e partições) à medida que experimenta crescimento para além desse ano. O fator de replicação (RF), que determina o número de réplicas do serviço, afeta o total DB_Size. O total DB_Size em todas as réplicas é o Fator de Replicação multiplicado por DB_Size. Node_Size representa o espaço em disco/RAM por nó que pretende utilizar para o seu serviço. Para um melhor desempenho, o DB_Size deve caber na memória em todo o cluster e deve ser escolhida uma Node_Size que esteja à volta da RAM da VM. Ao alocar um Node_Size maior do que a capacidade de RAM, está a contar com a paginação fornecida pelo runtime do Service Fabric. Assim, o seu desempenho poderá não ser ideal se todos os dados forem considerados frequentes (desde então, os dados são colocados/desativados). No entanto, para muitos serviços em que apenas uma fração dos dados é frequente, é mais rentável.

O número de nós necessários para o desempenho máximo pode ser calculado da seguinte forma:

Number of Nodes = (DB_Size * RF)/Node_Size

Conta do crescimento

Poderá querer calcular o número de nós com base no DB_Size para o qual espera que o seu serviço aumente, para além do DB_Size com que começou. Em seguida, aumente o número de nós à medida que o seu serviço aumenta para que não esteja a aprovisionar excessivamente o número de nós. Mas o número de partições deve basear-se no número de nós que são necessários quando está a executar o seu serviço com um crescimento máximo.

É bom ter algumas máquinas adicionais disponíveis em qualquer altura para que possa lidar com quaisquer picos ou falhas inesperados (por exemplo, se algumas VMs estiverem inativas). Embora a capacidade extra deva ser determinada através dos picos esperados, um ponto de partida é reservar algumas VMs adicionais (5 a 10 por cento extra).

O anterior pressupõe um único serviço com estado. Se tiver mais do que um serviço com estado, tem de adicionar os DB_Size associados aos outros serviços à equação. Em alternativa, pode calcular o número de nós separadamente para cada serviço com estado. O seu serviço pode ter réplicas ou partições que não estão equilibradas. Tenha em atenção que as partições também podem ter mais dados do que outras. Para obter mais informações sobre criação de partições, veja o artigo sobre as melhores práticas da criação de partições. No entanto, a equação anterior é a agnóstica de partição e réplica, uma vez que o Service Fabric garante que as réplicas são distribuídas entre os nós de forma otimizada.

Utilizar uma folha de cálculo para cálculo de custos

Agora, vamos colocar alguns números reais na fórmula. Uma folha de cálculo de exemplo mostra como planear a capacidade de uma aplicação que contém três tipos de objetos de dados. Para cada objeto, aproximamos o tamanho e o número de objetos que esperamos ter. Também selecionamos quantas réplicas queremos de cada tipo de objeto. A folha de cálculo calcula a quantidade total de memória a armazenar no cluster.

Em seguida, introduzimos um tamanho de VM e um custo mensal. Com base no tamanho da VM, a folha de cálculo indica-lhe o número mínimo de partições que tem de utilizar para dividir os dados para caber fisicamente nos nós. Pode desejar um maior número de partições para acomodar as necessidades específicas de computação e tráfego de rede da sua aplicação. A folha de cálculo mostra que o número de partições que estão a gerir os objetos de perfil de utilizador aumentou de um para seis.

Agora, com base em todas estas informações, a folha de cálculo mostra que pode obter fisicamente todos os dados com as partições e réplicas pretendidas num cluster de 26 nós. No entanto, este cluster estaria densamente embalado, pelo que poderá querer que alguns nós adicionais acomodem falhas e atualizações de nós. A folha de cálculo também mostra que ter mais de 57 nós não fornece nenhum valor adicional porque teria nós vazios. Mais uma vez, poderá querer ultrapassar os 57 nós de qualquer forma para acomodar falhas e atualizações de nós. Pode ajustar a folha de cálculo para corresponder às necessidades específicas da sua aplicação.

Folha de cálculo para cálculo de custos

Passos seguintes

Consulte Os serviços do Serviço de Criação de Partições do Service Fabric para saber mais sobre a criação de partições do seu serviço.