Classificação de dados em níveis - Amazon ElastiCache (Redis OSS)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Classificação de dados em níveis

Os clusters que compõem um grupo de replicação e usam um tipo de nó da família r6gd têm seus dados classificados em níveis entre memória e armazenamento local em Solid State Drives (SSDs – Unidades de estado sólido). O armazenamento de dados em camadas fornece uma nova opção de preço-desempenho para cargas de trabalho do Redis OSS, utilizando unidades de estado sólido (SSDs) de baixo custo em cada nó do cluster, além de armazenar dados na memória. Essa modalidade é ideal para workloads que acessam regularmente até 20% do conjunto de dados geral e para aplicações que podem tolerar latência adicional ao acessar dados em SSD.

Em clusters com hierarquização de dados, ElastiCache monitora o último horário de acesso de cada item que ele armazena. Quando a memória disponível (DRAM) é totalmente consumida, ElastiCache usa um algoritmo usado menos recentemente (LRU) para mover automaticamente itens acessados com pouca frequência da memória para o SSD. Quando os dados no SSD são acessados posteriormente, eles são movidos de volta para a memória de forma ElastiCache automática e assíncrona antes de processar a solicitação. Se você tiver uma workload que acessa regularmente apenas um subconjunto de dados, a classificação de dados em níveis é uma maneira ideal de dimensionar sua capacidade de modo econômico.

Observe que, ao usar a classificação por níveis, as próprias chaves sempre permanecem na memória, enquanto a LRU controla a colocação de valores na memória versus disco. Em geral, recomendamos que seus tamanhos de chave sejam menores do que seus tamanhos de valor ao usar a classificação por níveis de dados.

A classificação de dados em níveis foi projetada para causar impacto mínimo na performance das workload da aplicação. Por exemplo, presumindo valores de string de 500 bytes, você pode esperar uma média de mais 300 microssegundos de latência para solicitações de dados armazenados em SSD em comparação com solicitações de dados em memória.

Com o maior tamanho de nó de classificação de dados em níveis (cache.r6gd.16xlarge), você pode armazenar até 1 petabyte em um só cluster de 500 nós (500 TB ao usar 1 réplica de leitura). O armazenamento em camadas de dados é compatível com todos os comandos e estruturas de dados do Redis OSS suportados no. ElastiCache Para usar esse recurso, não é necessário promover alterações no lado do cliente.

Práticas recomendadas

Recomendamos seguir estas práticas recomendadas:

  • A classificação de dados em níveis é ideal para workloads que acessam regularmente até 20% do conjunto de dados geral e para aplicações que podem tolerar latência adicional ao acessar dados em SSD.

  • Ao usar a capacidade SSD disponível em nós em níveis de dados, recomendamos que o tamanho do valor seja maior do que o tamanho da chave. Quando os itens são movidos entre DRAM e SSD, as chaves sempre permanecerão na memória e somente os valores serão movidos para a camada SSD.

Limitações

A classificação de dados em níveis tem as seguintes limitações:

  • Você só pode usar a classificação de dados em níveis em clusters que fazem parte de um grupo de replicação.

  • O tipo de nó usado deve ser da família r6gd, que está disponível nas seguintes regiões: us-east-2, us-east-1, us-west-2, us-west-1, eu-west-1, eu-central-1, eu-north-1, eu-west-3, ap-northeast-1, ap-southeast-1, ap-southeast-2, ap-south-1, ca-central-1 e sa-east-1.

  • Você deve usar o mecanismo Redis OSS 6.2 ou posterior.

  • Você não pode restaurar um backup de um cluster r6gd para outro cluster, a menos que ele também use r6gd.

  • Você não pode exportar um backup para o Amazon S3 para clusters de classificação de dados em níveis.

  • Não há compatibilidade para migração online com clusters em execução no tipo de nó r6gd.

  • Não há compatibilidade com escalabilidade de um cluster de classificação de dados em níveis (p. ex., um cluster que use um tipo de nó r6gd) para um cluster sem classificação de dados em níveis (p. ex., um cluster que use um tipo de nó r6g). Para ter mais informações, consulte Dimensionamento ElastiCache (Redis OSS) .

  • O escalonamento automático é suportado em clusters usando camadas de dados para o Redis OSS versão 7.0.7 e posterior. Para obter mais informações, consulte Clusters de Auto Scaling ElastiCache (Redis OSS).

  • A divisão de dados em camadas só são compatíveis com as políticas volatile-lru, allkeys-lru, volatile-lfu, allkeys-lfu e noeviction.

  • O salvamento sem bifurcação é compatível com o Redis OSS versão 7.0.7 e posterior. Para ter mais informações, consulte Como a sincronização e o backup são implementados.

  • Itens maiores que 128 MiB não são movidos para o SSD.

Definição de preço

Os nós R6gd têm 4,8x mais capacidade total (memória + SSD) e podem ajudar você a obter mais de 60% de economia para execução com utilização máxima em comparação aos nós R6g (somente memória). Para obter mais informações, consulte ElastiCache os preços.

Monitorar

ElastiCache (Redis OSS) oferece métricas projetadas especificamente para monitorar os clusters de desempenho que usam camadas de dados. Para monitorar a proporção de itens na DRAM em comparação com o SSD, você pode usar a CurrItems métrica em Metrics for Redis OSS. Você pode calcular a porcentagem como: (CurrItems com Dimensão: Nível = Memória * 100)/(CurrItems sem filtro de dimensão).

Se a política de despejo configurada permitir, o ElastiCache (Redis OSS) começará a despejar itens quando a porcentagem de itens na memória diminuir abaixo de 5%. Nos nós configurados com a política de não despejo, as operações de gravação receberão um erro de falta de memória.

Ainda é recomendável que você considere a escalabilidade horizontal para clusters habilitados para o Modo Cluster ou a escalabilidade para clusters desativados do Modo Cluster quando a porcentagem de itens na memória diminuir abaixo de 5%. Para obter mais informações sobre escalabilidade, consulteDimensionamento de clusters no Redis OSS (modo de cluster ativado). Para obter mais informações sobre métricas para clusters Redis OSS que usam camadas de dados, consulte. Métricas para Redis OSS

Como usar a classificação de dados em níveis

Ao criar um cluster como parte de um grupo de replicação, você usa a classificação de dados em níveis selecionando um tipo de nó da família r6gd, p. ex., cache.r6gd.xlarge. A seleção desse tipo de nó ativa automaticamente a classificação de dados em níveis.

Para mais informações sobre como criar um cluster, consulte Criar um cluster.

Ao criar um grupo de replicação usando o AWS CLI, você usa a classificação por níveis de dados selecionando um tipo de nó da família r6gd, como cache.r6gd.xlarge e definindo o parâmetro. --data-tiering-enabled

Você não pode optar por não usar a classificação de dados em níveis ao selecionar um tipo de nó da família r6gd. Se você configurar o parâmetro --no-data-tiering-enabled, a operação falhará.

Para Linux, macOS ou Unix:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled

Para Windows:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled

Após executar essa operação, você verá uma resposta semelhante ao seguinte:

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }

Como restaurar dados do backup para clusters com a classificação de dados em níveis ativada

Você pode restaurar um backup em um novo cluster com o armazenamento de dados em camadas ativado usando (Console), (AWS CLI) ou (ElastiCache API). Ao criar um cluster usando tipos de nós na família r6gd, a classificação de dados em níveis é ativada.

Para restaurar um backup para um novo cluster com a classificação de dados em níveis ativada (console)
  1. Faça login no AWS Management Console e abra o ElastiCache console em https://console.aws.amazon.com/elasticache/.

  2. No painel de navegação, escolha Backups.

  3. Na lista de backups, escolha a caixa à esquerda do nome do backup do qual você deseja restaurar.

  4. Escolha Restore.

  5. Preencha a caixa de diálogo Restore Cluster. Certifique-se de preencher todos os campos Obrigatórios e qualquer outro que você deseja alterar em relação aos padrões.

    1. Cluster ID (ID do cluster): obrigatório. O nome do novo cluster.

    2. Modo de cluster ativado (escala horizontal) — Escolha isso para um cluster Redis OSS (modo de cluster ativado).

    3. Node Type (Tipo de nó) – Especifique cache.r6gd.xlarge ou qualquer outro tipo de nó da família r6gd.

    4. Number of Shards – Escolha o número de estilhaços desejados no novo cluster (API/CLI: grupos de nós).

    5. Replicas per Shard – Escolha o número de nós de réplica de leitura desejados em cada estilhaço.

    6. Slots and keyspaces (Slots e espaços de chaves): escolha como deseja que as chaves sejam distribuídas entre os fragmentos. Se você optar por especificar as distribuições de chaves, complete a tabela especificando os intervalos de chaves para cada estilhaço.

    7. Availability zone(s) – especifique como você deseja que as zonas de disponibilidade do cluster sejam selecionadas.

    8. Port – Somente altere esse valor se quiser que o novo cluster use uma porta diferente.

    9. Choose a VPC – Escolha a VPC na qual criar esse cluster.

    10. Grupo de parâmetros — Escolha um grupo de parâmetros que reserve memória suficiente para a sobrecarga do Redis OSS para o tipo de nó selecionado.

  6. Quando estiver satisfeito com as configurações, escolha Create (Criar).

Para mais informações sobre como criar um cluster, consulte Criar um cluster.

Ao criar um grupo de replicação usando o AWS CLI, o armazenamento em camadas de dados é usado por padrão selecionando um tipo de nó da família r6gd, como cache.r6gd.xlarge e definindo o parâmetro. --data-tiering-enabled

Você não pode optar por não usar a classificação de dados em níveis ao selecionar um tipo de nó da família r6gd. Se você configurar o parâmetro --no-data-tiering-enabled, a operação falhará.

Para Linux, macOS ou Unix:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled \ --snapshot-name my-snapshot

Para Linux, macOS ou Unix:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled ^ --snapshot-name my-snapshot

Após executar essa operação, você verá uma resposta semelhante ao seguinte:

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }