O Tair (Redis OSS-compatible) oferece processamento de dados em memória de alto desempenho. Siga estes padrões de desenvolvimento e O&M do Tair (Redis OSS-compatible) para criar sistemas eficientes e maximizar o potencial do Tair. Com base em anos de experiência em O&M da Alibaba Cloud, estas diretrizes abrangem implantação de negócios, design de chaves, uso de SDK, uso de comandos e gerenciamento de O&M.
Limites de desempenho do Tair
Figura 1. Limites de desempenho do Tair
|
Tipo de recurso |
Descrição |
|
Recursos de computação |
Wildcards, scripts Lua concorrentes, PUBSUB um-para-muitos e hotkeys consomem muitos recursos de computação. Em instâncias cluster, esses itens também podem causar distorção de requisições e subutilização de shards. |
|
Recursos de armazenamento |
Jobs de streaming e large keys consomem muitos recursos de armazenamento. Em instâncias cluster, esses itens também podem causar distorção de dados e subutilização de shards. |
|
Recursos de rede |
Varreduras em todo o banco de dados (KEYS) e consultas de intervalo em large keys e valores grandes (HGETALL) consomem muitos recursos de rede e frequentemente causam congestionamento de threads. Importante
A alta concorrência do Tair não melhora significativamente o desempenho de acesso como esperado, mas afeta o desempenho geral do sistema. Por exemplo, armazenar valores grandes no Tair não traz ganhos expressivos de desempenho de acesso. |
Em instâncias cluster, hotkeys, large keys ou valores grandes também podem causar distorção de armazenamento ou de requisições. Em ambientes de produção, evite atingir os limites de desempenho do Tair.
Padrões de implantação de negócios
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Determine se o cenário é cache de alta velocidade ou banco de dados em memória . |
|
|
★★★★★ |
Implante sua aplicação na mesma Virtual Private Cloud (VPC) das instâncias Tair, como em uma instância Elastic Compute Service (ECS). |
O Tair oferece alto desempenho, mas implantar longe das instâncias Tair ou conectar-se pela Internet degrada significativamente o desempenho devido à latência de rede. Nota
Para implantações entre regiões, use o Global Distributed Cache para recuperação de desastres geográfica, redundância geográfica ativa e redução de latência. |
|
★★★★☆ |
Crie uma instância Tair para cada serviço. |
Não compartilhe uma instância Tair entre serviços. Misturar cargas de trabalho de cache e banco de dados em memória faz com que políticas de evicção, consultas lentas e a execução do comando FLUSHDB de um serviço afetem os outros. |
|
★★★★☆ |
Configure políticas de evicção adequadas para remover chaves expiradas. |
A política padrão de evicção para chaves expiradas no Tair é volatile-lru . Configure as políticas de evicção em Parâmetros configuráveis para instâncias Redis Open-Source Edition. |
|
★★★☆☆ |
Gerencie os dados e a duração dos testes de estresse. |
O Tair não exclui dados de testes de estresse. Para evitar impactos nos seus negócios, gerencie os dados e a duração dos testes de estresse por conta própria. |
Padrões de design de chaves
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Mantenha os valores abaixo de 10 KB. |
Valores excessivamente grandes causam distorção de dados, hotkeys, alto consumo de largura de banda ou alta utilização de CPU. |
|
★★★★★ |
Use nomes de chaves descritivos e concisos. |
|
|
★★★★★ |
Limite as subchaves por estrutura de dados complexa a menos de 1.000. Nota
Estruturas de dados complexas comuns incluem Hash, Set, Zset, Geo e Stream, além de estruturas específicas do Tair (Enterprise Edition), como exHash, Bloom e TairGIS. |
A complexidade de tempo de comandos como HGETALL aumenta conforme o número de subchaves. O uso frequente de comandos O(N)+ em chaves com excesso de subchaves causa consultas lentas, distorção de dados e hotkeys. |
|
★★★★☆ |
Serialize valores em estruturas legíveis. |
O bytecode da linguagem pode mudar entre versões. Armazenar objetos brutos (Java, C#) no Tair dificulta as atualizações de stack. Em vez disso, serialize os valores em estruturas legíveis. |
Padrões de uso de SDK
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Use JedisPool ou JedisCluster para conectar-se a instâncias Tair. Nota
Use o cliente TairJedis para Tair (Enterprise Edition) com instâncias baseadas em DRAM — ele fornece classes de encapsulamento para novas estruturas de dados. Use um cliente para conectar-se a uma instância. |
Conexões únicas não conseguem se reconectar automaticamente após um tempo limite. Configure as conexões do JedisPool: Use um cliente para conectar-se a uma instância, Otimização do JedisPool e JedisCluster. |
|
★★★★☆ |
Projete mecanismos adequados de tolerância a falhas para seus clientes. |
Flutuações de rede e alto uso de recursos podem causar tempos limite de conexão ou consultas lentas no Tair. Para prevenir esses riscos, projete mecanismos adequados de tolerância a falhas para seus clientes. |
|
★★★★☆ |
Use intervalos de nova tentativa adequados. |
Intervalos de nova tentativa menores que 200 ms podem acionar retentativas rápidas e causar uma avalanche de serviço. Mecanismos de nova tentativa para clientes Redis. |
Padrões de uso de comandos
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Evite consultas de intervalo como KEYS *. Use consultas pontuais ou SCAN em vez disso. |
Consultas de intervalo podem causar interrupções de serviço, consultas lentas ou congestionamento. |
|
★★★★★ |
Use estruturas de dados estendidas (Integração de múltiplos módulos de dados) em vez de scripts Lua. |
Scripts Lua consomem muitos recursos de computação e memória sem suporte a multithreading. Scripts complexos ou inadequados podem esgotar os recursos. |
|
★★★★☆ |
Use pipelines para reduzir o tempo de ida e volta (RTT) dos dados. |
Quando seu cliente não depende de respostas individuais, agrupe comandos com um pipeline. Diretrizes:
|
|
★★★★☆ |
Use os comandos Redis corretamente. |
Limitações de comandos de transação:
|
|
★★★★☆ |
Evite distribuição de mensagens em larga escala com comandos Pub/Sub. |
O Pub/Sub não possui persistência de dados nem mecanismos de confirmação. Distribuir mensagens maiores que 1 KB para mais de 100 assinantes pode esgotar os recursos do servidor e causar perda de mensagens. Nota
Para melhorar o desempenho e o equilíbrio, o Tair otimiza o Pub/Sub em instâncias cluster fazendo hash dos comandos para nós de dados com base nos nomes dos canais. |
Padrões de gerenciamento de O&M
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Compreenda os impactos de diferentes operações de gerenciamento de instâncias. |
Alterações de configuração ou reinicializações podem causar desconexões transitórias em uma instância Tair. Compreenda os impactos antes de prosseguir. Estados e impactos da instância. |
|
★★★★★ |
Teste o tratamento de erros do cliente e a lógica de recuperação de desastres. |
O Tair monitora a integridade dos nós e aciona automaticamente o failover mestre-réplica quando um mestre fica indisponível. Antes de colocar um cliente em produção, acione manualmente um failover para verificar o tratamento de erros e a lógica de recuperação de desastres. Alternar manualmente cargas de trabalho de um nó mestre para um nó réplica. |
|
★★★★★ |
Desative comandos demorados ou de alto risco. |
O uso indevido de comandos em produção pode causar perda de dados (FLUSHALL) ou congestionamento de rede (KEYS). Desative comandos arriscados para melhorar a estabilidade. Desativar comandos de alto risco. |
|
★★★★☆ |
Trate eventos pendentes prontamente. |
A Alibaba Cloud gera eventos pendentes para atualizações de hardware, software ou manutenção de rede — por exemplo, quando uma versão secundária do banco de dados precisa ser atualizada. Revise o impacto e reagende se necessário. Visualizar e gerenciar eventos agendados. |
|
★★★★☆ |
Configure alertas para métricas principais. |
Monitore a utilização de CPU, uso de memória e largura de banda em tempo real com as Configurações de alerta. |
|
★★★★☆ |
Verifique regularmente a integridade da instância usando recursos de O&M do Tair para solucionar anomalias de recursos. |
|
|
★★★☆☆ |
Ative o recurso de log de auditoria e avalie os logs de auditoria. |
O recurso de log de auditoria registra operações de escrita e suporta consulta, análise online e exportação. Use-o para monitorar a segurança e o desempenho da instância. Log de Auditoria. Importante
Após ativar o recurso de log de auditoria, o desempenho das instâncias Tair pode degradar de 5% a 15%, dependendo do volume de escrita e auditoria. Para cargas de trabalho Tair com muita escrita, ative os logs de auditoria apenas durante operações de O&M, como solução de problemas. |