O Tair (Redis OSS-compatible) oferece processamento de dados em memória com alto desempenho. Siga estes padrões de desenvolvimento e O&M do Tair (Redis OSS-compatible) para construir sistemas eficientes e maximizar o Tair. Com base em anos de experiência de O&M da Alibaba Cloud, esses padrões 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 grandes volumes de recursos de computação. Para cluster instances, esses itens também podem causar distorção de requisições e subutilização de shards. |
|
Recursos de armazenamento |
Jobs de streaming e chaves grandes consomem grandes volumes de recursos de armazenamento. Para cluster instances, esses itens também podem causar distorção de dados e subutilização de shards. |
|
Recursos de rede |
Varreduras completas do banco de dados (KEYS) e consultas de intervalo em chaves e valores grandes (HGETALL) consomem grandes volumes de recursos de rede e frequentemente provocam congestionamento de threads. Importante
A capacidade de alta concorrência do Tair não melhora significativamente o desempenho de acesso conforme esperado, mas afeta o desempenho geral do Tair. Por exemplo, armazenar valores grandes no Tair não melhora o desempenho de acesso de forma significativa. |
Para cluster instances, hotkeys, chaves grandes ou valores grandes também podem causar distorção de armazenamento ou de requisições. Em ambiente de produção, é fundamental evitar 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 é de cache de alta velocidade ou de banco de dados em memória . |
|
|
★★★★★ |
Implante sua aplicação na mesma virtual private cloud (VPC) que suas instâncias Tair, por exemplo, em uma instância Elastic Compute Service (ECS). |
O Tair entrega alto desempenho, mas implantar longe das instâncias do Tair ou conectar pela Internet degrada significativamente o desempenho devido à latência de rede. Nota
Para implantações em várias regiões, use Global Distributed Cache para recuperação de desastres geográfica, geo-redundância 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 cache e de banco de dados em memória faz com que políticas de remoção, consultas lentas e a execução do comando FLUSHDB de um serviço afetem os demais. |
|
★★★★☆ |
Configure políticas de remoção adequadas para expirar chaves. |
A política de remoção padrão para chaves expiradas no Tair é volatile-lru . Configure as políticas de remoção em Parameters that can be configured for Redis Open-Source Edition instances. |
|
★★★☆☆ |
Gerencie os dados e a duração dos testes de carga. |
O Tair não exclui dados de testes de carga. Para evitar impactos no seu negócio, gerencie os dados e a duração dos testes de carga por conta própria. |
Padrões de design de chaves
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Mantenha os valores abaixo de 10 KB. |
Valores superdimensionados causam distorção de dados, hotkeys, alto consumo de largura de banda ou alta utilização de CPU. |
|
★★★★★ |
Use nomes de chave descritivos e concisos. |
|
|
★★★★★ |
Limite as sub-chaves 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 temporal de comandos como HGETALL cresce com a contagem de sub-chaves. Comandos O(N)+ frequentes em chaves com sub-chaves excessivas causam consultas lentas, distorção de dados e hotkeys. |
|
★★★★☆ |
Serialize os valores em estruturas legíveis. |
O bytecode de linguagens pode mudar entre versões. Armazenar objetos brutos (Java, C#) no Tair dificulta 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
Para instâncias Tair (Enterprise Edition) DRAM-based instances, use o cliente TairJedis — ele fornece classes de encapsulamento para novas estruturas de dados. Use a client to connect to an instance. |
Conexões simples não reconectam automaticamente após um timeout. Configure conexões JedisPool: Use a client to connect to an instance, JedisPool optimization e JedisCluster. |
|
★★★★☆ |
Projete mecanismos adequados de tolerância a falhas para seus clientes. |
Flutuações de rede e alto consumo de recursos podem causar timeouts de conexão ou consultas lentas no Tair. Para mitigar esses riscos, projete mecanismos adequados de tolerância a falhas para seus clientes. |
|
★★★★☆ |
Use intervalos de retentativa adequados. |
Intervalos de retentativa menores que 200 ms podem disparar retentativas rápidas e causar uma avalanche de serviço. Retry mechanisms for Redis clients. |
Padrões de uso de comandos
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Evite consultas de intervalo como KEYS *. Use consultas pontuais ou SCAN. |
Consultas de intervalo podem causar interrupções de serviço, consultas lentas ou congestionamento. |
|
★★★★★ |
Use estruturas de dados estendidas (como exString (incluindo commands that enhance Redis string functionality), exHash, exZset, GIS, Bloom, Doc, TS, Cpc, Roaring, Search e Vector) em vez de scripts Lua. |
Scripts Lua consomem grandes volumes de recursos de computação e memória sem suporte a multi-threading. Scripts complexos ou mal elaborados 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 em um pipeline. Diretrizes:
|
|
★★★★☆ |
Use Redis commands corretamente. |
Limitações dos comandos de transação:
|
|
★★★★☆ |
Evite distribuição de mensagens em larga escala com Pub/Sub commands. |
O Pub/Sub não possui mecanismos de persistência de dados nem 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 balanceamento, o Tair otimiza o Pub/Sub em instâncias de cluster distribuindo comandos para nós de dados com base nos nomes dos canais por meio de hashing. |
Padrões de gerenciamento de O&M
|
Importância |
Padrão |
Descrição |
|
★★★★★ |
Compreenda os impactos das 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. Entenda os impactos antes de prosseguir. Instance states and impacts. |
|
★★★★★ |
Teste o tratamento de erros e a lógica de recuperação de desastres do cliente. |
O Tair monitora a saúde dos nós e aciona automaticamente o switchover master-réplica quando um master fica indisponível. Antes de colocar um cliente em produção, acione manualmente um switchover para verificar o tratamento de erros e a lógica de recuperação de desastres. Manually switch workloads from a master node to a replica node. |
|
★★★★★ |
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. Disable high-risk commands. |
|
★★★★☆ |
Trate eventos pendentes prontamente. |
A Alibaba Cloud gera eventos pendentes para upgrades de hardware, atualizações de software ou manutenção de rede — por exemplo, quando uma versão secundária do banco de dados precisa ser atualizada. Avalie o impacto e reagende se necessário. View and manage scheduled events. |
|
★★★★☆ |
Configure alertas para métricas essenciais. |
Monitore a utilização de CPU, o uso de memória e a largura de banda em tempo real com Alert settings. |
|
★★★★☆ |
Verifique regularmente a saúde da instância usando os recursos de O&M do Tair para diagnosticar anomalias de recursos. |
|
|
★★★☆☆ |
Ative o recurso de log de auditoria e avalie os logs. |
O recurso de log de auditoria registra operações de escrita e oferece suporte a consulta, análise online e exportação. Use-o para monitorar a segurança e o desempenho da instância. Audit Log. 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 com escrita intensiva no Tair, ative os logs de auditoria apenas durante operações de O&M, como na resolução de problemas. |