Planejamento de Capacidade de Cache Dinâmico

A API de Cache Dinâmico está disponível para os aplicativos Java EE que são implementados no WebSphere Application Server. É possível usar o cache dinâmico para armazenar dados de negócios em cache, HTML gerado ou sincronizar dados em cache na célula usando o Data Replication Service (DRS).

Visão Geral

Todas as instâncias de cache dinâmico criadas com o provedor de cache dinâmico do WebSphere eXtreme Scale são altamente disponíveis por padrão. O nível e custo de memória de alta disponibilidade depende da topologia usada.

Ao usar a topologia integrada, o tamanho do cache é limitado à quantidade de memória livre em um único processo do servidor, e cada processo do servidor armazena uma cópia completa do cache. Enquanto um único processo do servidor continua a executar, o cache sobrevive. Os dados do cache somente serão perdidos se todos os servidores que acessam o cache forem desligados.

Para armazenamento em cache que usa topologia particionada integrada, o tamanho do cache é limitado a um agregado do espaço livre disponível em todos os processos do servidor. Por padrão, o provedor de cache dinâmico do eXtreme Scale usa 1 réplica para cada shard primário, assim cada parte dos dados armazenados em cache é armazenada duas vezes.

Use a seguinte fórmula A para determinar a capacidade de um cache particionado integrado.

Fórmula A

F * C / (1 + R) = M

Em que:
  • F = Memória livre por processo de contêiner
  • C = número de contêineres
  • R = número de réplicas
  • M = Tamanho total do cache

Para que uma grade de dados do WebSphere Application Server Network Deployment tenha 256 MB de espaço disponível em cada processo, com um total de 4 processos do servidor, uma instância de cache por todos esses servidores poderia armazenar até 512 megabytes de dados. Deste modo, o cache pode sobreviver a um dano no servidor sem perder dados. Também, até dois servidores poderiam ser desligados sequencialmente sem perda de dado algum. Assim, para o exemplo anterior, a fórmula é a seguinte:

256mb * 4 contêineres/ (1 primário + 1 réplica) = 512mb.

Caches que usam a topologia remota têm características de dimensionamento similares às dos caches que usam topologia particionada integrada, mas eles são limitados pela quantidade de espaço disponível em todos os processos de contêiner do eXtreme Scale.

Em topologias remotas, é possível aumentar o número de réplicas para fornecer um nível mais alto de disponibilidade ao custo de gasto adicional de memória. Na maioria dos aplicativos com cachê dinâmico, isso seria desnecessário, porém o arquivo dynacache-remote-deployment.xml pode ser editado para aumentar o número de réplicas.

Use as seguintes fórmulas, B e C, para determinar o efeito da inclusão de mais réplicas na alta disponibilidade do cache.

Fórmula B

N = Mínimo(T -1, R)

Em que:
  • N = o número de processos que podem travar simultaneamente
  • T = o número total de contêineres
  • R = o número total de réplicas

Fórmula C

Limite(T/ (1+N)) = m

Em que:
  • T = Número total de contêineres
  • N = Número total de réplicas
  • m = número mínimo de contêineres necessários para suportar os dados em cache.

Para ajuste de desempenho com o provedor de cache dinâmico, consulte Ajustando o Provedor de Cache Dinâmico.

Dimensionamento do Cache

Antes que um aplicativo que usa o provedor de cache dinâmico do WebSphere eXtreme Scale possa ser implementado, os princípios gerais descritos na seção anterior devem ser combinados com os dados ambientais para os sistemas de produção. O primeiro valor a estabelecer é o número total de processos do contêiner e a quantidade de memória disponível em cada processo para conter os dados do cache. Ao usar a topologia integrada, os contêineres de cache serão colocados dentro dos processos do servidor do WebSphere Application, assim, há um contêiner para cada servidor que estiver compartilhando o cache. Determinar o gasto adicional de memória do aplicativo sem o armazenamento em cache ativado e o WebSphere Application Server é a melhor maneira de descobrir quanto espaço está disponível no processo. Isso pode ser feito por meio de análise detalhada dos dados da coleta de lixo. Ao usar a topologia remota, essas informações podem ser localizadas por meio da verificação da saída detalhada da coleta de lixo de um contêiner independente recentemente iniciado que ainda não foi preenchido com dados do cache. A última coisa a lembrar para descobrir quanto espaço por processo está disponível para dados em cache, é reservar algum espaço de heap para a coleta de lixo. O gasto adicional do contêiner, o WebSphere Application Server ou independente, mais o tamanho reservado para o cache não deve ser maior que 70% do heap total.

Depois que essas informações são coletadas, os valores poderão ser inseridos na fórmula A, descritos anteriormente, para determinar o tamanho máximo para o cache particionado. Depois que o tamanho máximo é conhecido, a próxima etapa é determinar o número total de entradas do cache que pode ser suportado, o que requer determinar o tamanho médio por entrada do cache. A maneira mais simples de fazer isso é incluir 10% ao tamanho do objeto do cliente. Consulte o Guia de Ajuste para Cache Dinâmico e Serviço de Replicação de Dados para obter mais informações detalhadas sobre o dimensionamento de entradas de cache ao usar o cache dinâmico.

Quando a compactação está ativada, ela afeta o tamanho do objeto do cliente, não o gasto adicional do sistema de armazenamento em cache. Use a fórmula a seguir para determinar o tamanho de um objeto em cache ao usar a compactação:

S = O * C + O * 0.10

Em que:
  • S = Tamanho médio do objeto em cache
  • O = Tamanho médio do objeto do cliente não-compactado
  • C = Proporção de compactação expressa como uma fração.
Assim, uma proporção de compactação 2 para 1 é 1/2 = 0.50. Para este valor, quanto menor, melhor. Se o objeto que está sendo armazenado é um POJO normal cheio principalmente tipos primitivos, então assuma uma proporção de compactação de 0.60 para 0.70. Se o objeto em cache é um objeto Servlet, JSP ou WebServices, o método ideal para determinar a taxa de compactação é compactar uma amostra representativa com um utilitário de compactação ZIP. Se isso não for possível, então uma proporção de compactação de 0.2 para 0.35 é comum para esses tipos de dados.

Depois, use estas informações para determinar o número total de entradas do cache que pode ser suportado. Use a seguinte fórmula D:

Fórmula D

T = S / A

Em que:
  • T= Número total de entradas do cache
  • S = Tamanho total disponível para dados em cache conforme computados usando a fórmula A
  • A = Tamanho médio de cada entrada do cache
Finalmente, você deve configurar o tamanho do cache na instância do cache dinâmico para impor este limite. O provedor de cache dinâmico do WebSphere eXtreme Scale difere do provedor de cache dinâmico padrão neste aspecto. Use a fórmula a seguir para determinar o valor para definir o tamanho do cache na instância do cache dinâmico. Use a seguinte fórmula E:

Fórmula E

Cs = Ts / Np

Em que:
  • Ts = Tamanho de destino total para o cache
  • Cs = Configuração do Tamanho do Cache para definir na instância do cache dinâmico
  • Np = Número de partições. O padrão é 47.
Configure o tamanho da instância do cache dinâmico para um valor calculado pela fórmula E em cada servidor que compartilhar a instância do cache.