Tair (Redis OSS-compatible) offre un traitement de données en mémoire haute performance. Suivez ces normes de développement et d’exploitation pour Tair (Redis OSS-compatible) afin de concevoir des systèmes efficaces et de tirer le meilleur parti de Tair. Fondées sur des années d’expérience en exploitation chez Alibaba Cloud, ces normes couvrent le déploiement métier, la conception des clés, l’utilisation du SDK, l’usage des commandes et la gestion de l’exploitation.
Limites de performance de Tair
Figure 1. Limites de performance de Tair
|
Type de ressource |
Description |
|
Ressources de calcul |
Les caractères génériques, les scripts Lua concurrents, les publications-abonnements PUBSUB de type un-à-plusieurs et les clés chaudes consomment beaucoup de ressources de calcul. Pour les instances cluster, ces éléments peuvent également provoquer une asymétrie des requêtes et une sous-utilisation des shards. |
|
Ressources de stockage |
Les jobs de streaming et les grandes clés mobilisent fortement les ressources de stockage. Pour les instances cluster, ils peuvent aussi entraîner une asymétrie des données et une sous-utilisation des shards. |
|
Ressources réseau |
Les analyses à l’échelle de la base de données (KEYS) et les requêtes par plage sur de grandes clés et valeurs (HGETALL) sollicitent intensivement le réseau et provoquent souvent des congestions de threads. Important
La capacité de forte concurrence de Tair n’améliore pas significativement les performances d’accès comme attendu, mais affecte les performances globales de Tair. Par exemple, le stockage de grandes valeurs dans Tair n’augmente pas sensiblement les performances d’accès. |
Pour les instances cluster, les clés chaudes, les grandes clés ou les grandes valeurs peuvent aussi entraîner une asymétrie du stockage ou des requêtes. En production, il est crucial d’éviter d’atteindre les limites de performance de Tair.
Normes de déploiement métier
|
Importance |
Norme |
Description |
|
★★★★★ |
Déterminez si votre cas d’usage relève du cache haute vitesse ou des bases de données en mémoire . |
|
|
★★★★★ |
Déployez votre application dans le même cloud privé virtuel (VPC) que vos instances Tair, par exemple sur une instance Elastic Compute Service (ECS). |
Tair offre des performances élevées, mais un déploiement distant des instances Tair ou une connexion via Internet dégrade fortement les performances en raison de la latence réseau. Remarque
Pour un déploiement inter-régions, utilisez le Global Distributed Cache afin d’assurer la reprise après sinistre géographique, la redondance active entre sites géographiques et de réduire la latence. |
|
★★★★☆ |
Créez une instance Tair par service. |
Ne partagez pas une instance Tair entre plusieurs services. Mélanger des charges de travail de cache et de bases de données en mémoire entraîne des évictions, des requêtes lentes, et l’exécution de la commande FLUSHDB par un service peut impacter les autres. |
|
★★★★☆ |
Configurez des politiques d’éviction appropriées pour supprimer les clés expirées. |
La politique d’éviction par défaut des clés expirées dans Tair est volatile-lru . Configurez les politiques d’éviction dans les paramètres configurables pour les instances Redis Open-Source Edition. |
|
★★★☆☆ |
Gérez les données de test de charge et leur durée. |
Tair ne supprime pas automatiquement les données de test de charge. Pour éviter tout impact sur votre activité, gérez vous-même ces données et leur durée. |
Normes de conception des clés
|
Importance |
Norme |
Description |
|
★★★★★ |
Maintenez les valeurs inférieures à 10 Ko. |
Des valeurs trop volumineuses provoquent une asymétrie des données, des clés chaudes, une consommation élevée de bande passante ou une utilisation CPU importante. |
|
★★★★★ |
Utilisez des noms de clés concis et explicites. |
|
|
★★★★★ |
Limitez le nombre de sous-clés par structure de données complexe à moins de 1 000. Remarque
Les structures de données complexes courantes incluent Hash, Set, Zset, Geo et Stream, ainsi que les structures spécifiques à Tair (Enterprise Edition), telles qu’exHash, Bloom et TairGIS. |
La complexité temporelle de commandes comme HGETALL augmente avec le nombre de sous-clés. L’exécution fréquente de commandes en O(N)+ sur des clés comportant trop de sous-clés engendre des requêtes lentes, une asymétrie des données et des clés chaudes. |
|
★★★★☆ |
Sérialisez les valeurs dans des structures lisibles. |
Le bytecode des langages peut changer entre versions. Stocker des objets bruts (Java, C#) dans Tair complique les mises à jour de stack. Préférez la sérialisation des valeurs dans des structures lisibles. |
Normes d’utilisation du SDK
|
Importance |
Norme |
Description |
|
★★★★★ |
Utilisez JedisPool ou JedisCluster pour vous connecter aux instances Tair. Remarque
Utilisez le client TairJedis pour les instances basées sur DRAM de Tair (Enterprise Edition) — il fournit des classes d’encapsulation pour les nouvelles structures de données. Utilisez un client pour vous connecter à une instance. |
Une connexion unique ne peut pas se reconnecter automatiquement après un délai d’attente. Configurez les connexions JedisPool : Utilisez un client pour vous connecter à une instance, optimisation de JedisPool et JedisCluster. |
|
★★★★☆ |
Concevez des mécanismes de tolérance aux pannes adaptés pour vos clients. |
Des fluctuations réseau et une utilisation élevée des ressources peuvent entraîner des délais d’attente de connexion ou des requêtes lentes dans Tair. Pour prévenir ces risques, concevez des mécanismes de tolérance aux pannes appropriés pour vos clients. |
|
★★★★☆ |
Utilisez des intervalles de nouvelle tentative suffisants. |
Des intervalles inférieurs à 200 ms peuvent déclencher des tentatives rapides et provoquer un effet avalanche du service. Consultez les mécanismes de nouvelle tentative pour les clients Redis. |
Normes d’utilisation des commandes
|
Importance |
Norme |
Description |
|
★★★★★ |
Évitez les requêtes par plage telles que KEYS *. Privilégiez les requêtes ponctuelles ou la commande SCAN. |
Les requêtes par plage peuvent provoquer des interruptions de service, des requêtes lentes ou des congestions. |
|
★★★★★ |
Utilisez des structures de données étendues (intégration de plusieurs modules de données) plutôt que des scripts Lua. |
Les scripts Lua consomment beaucoup de ressources de calcul et de mémoire sans prise en charge du multithreading. Des scripts complexes ou mal conçus peuvent épuiser les ressources. |
|
★★★★☆ |
Utilisez des pipelines pour réduire le temps aller-retour (RTT) des données. |
Lorsque votre client ne dépend pas de réponses individuelles, regroupez les commandes dans un pipeline. Consignes :
|
|
★★★★☆ |
Utilisez correctement les commandes Redis. |
Limites des commandes de transaction :
|
|
★★★★☆ |
Évitez la distribution massive de messages avec les commandes Pub/Sub. |
Pub/Sub ne propose ni persistance des données ni mécanisme d’accusé de réception. La distribution de messages de plus de 1 Ko à plus de 100 abonnés peut épuiser les ressources serveur et entraîner une perte de messages. Remarque
Pour améliorer les performances et l’équilibrage, Tair optimise Pub/Sub dans les instances cluster en hachant les commandes vers les nœuds de données selon les noms de canal. |
Normes de gestion de l’exploitation
|
Importance |
Norme |
Description |
|
★★★★★ |
Comprenez les impacts des différentes opérations de gestion des instances. |
Des modifications de configuration ou des redémarrages peuvent provoquer des déconnexions transitoires sur une instance Tair. Prenez connaissance des impacts avant d’agir. Consultez les états des instances et leurs impacts. |
|
★★★★★ |
Testez la gestion des erreurs côté client et la logique de reprise après sinistre. |
Tair surveille la santé des nœuds et déclenche automatiquement un basculement maître-réplica lorsqu’un maître devient indisponible. Avant la mise en production d’un client, déclenchez manuellement un basculement pour valider la gestion des erreurs et la logique de reprise après sinistre. Basculez manuellement les charges de travail d’un nœud maître vers un nœud réplica. |
|
★★★★★ |
Désactivez les commandes chronophages ou à haut risque. |
L’abus de commandes en production peut entraîner une perte de données (FLUSHALL) ou une congestion réseau (KEYS). Désactivez les commandes à risque pour améliorer la stabilité. Désactivez les commandes à haut risque. |
|
★★★★☆ |
Traitez rapidement les événements en attente. |
Alibaba Cloud génère des événements en attente lors de mises à niveau matérielles, de mises à jour logicielles ou de maintenances réseau — par exemple, lorsqu’une version mineure de la base de données doit être mise à jour. Évaluez l’impact et reprogrammez si nécessaire. Affichez et gérez les événements planifiés. |
|
★★★★☆ |
Configurez des alertes sur les métriques essentielles. |
Surveillez en temps réel l’utilisation du processeur, de la mémoire et de la bande passante grâce aux paramètres d’alerte. |
|
★★★★☆ |
Vérifiez régulièrement l’état de santé des instances à l’aide des fonctionnalités d’exploitation de Tair afin de diagnostiquer les anomalies de ressources. |
|
|
★★★☆☆ |
Activez la fonctionnalité de journal d’audit et évaluez les journaux d’audit. |
La fonctionnalité de journal d’audit enregistre les opérations d’écriture et prend en charge la recherche, l’analyse en ligne et l’exportation. Utilisez-la pour surveiller la sécurité et les performances des instances. Consultez le Journal d’audit. Important
Après avoir activé la fonctionnalité de journal d’audit, les performances des instances Tair peuvent diminuer de 5 % à 15 %, selon le volume d’écritures et d’audits. Pour les charges de travail Tair à forte intensité d’écriture, activez les journaux d’audit uniquement pendant les opérations d’exploitation, comme le dépannage. |