GeminiStateBackend est un moteur de stockage clé-valeur conçu pour le traitement en continu et constitue le backend d'état par défaut de Realtime Compute for Apache Flink. Cette rubrique présente les avantages du backend d'état de niveau entreprise GeminiStateBackend et compare ses performances à celles de RocksDBStateBackend.
Présentation générale
Le calcul avec état représente un scénario complexe dans le traitement en continu. L'accès aux données pour ce type de traitement présente les caractéristiques suivantes :
De nombreux accès aléatoires sont effectués, tandis que les requêtes de plage sont rares.
Le trafic de données et les points chauds évoluent fréquemment. Dans ce cas, différents threads parallèles du même opérateur utilisent des modes d'accès aux données distincts.
GeminiStateBackend offre les avantages suivants :
-
Utilise une nouvelle architecture et une conception de structure de données pour améliorer les performances globales du traitement des données.
L'architecture globale de GeminiStateBackend repose sur la structure de données LSM tree (log-structured merge-tree). GeminiStateBackend propose trois fonctionnalités principales : l'adaptation aux variations du volume de données et des caractéristiques d'accès, le stockage hiérarchisé des données chaudes et froides, ainsi que le basculement entre les architectures anti-caching et caching. GeminiStateBackend prend également en charge la structure de stockage hachée permettant l'accès aléatoire. La comparaison des performances à l'aide de Nexmark montre que GeminiStateBackend offre de meilleures performances que RocksDBStateBackend. Pour environ la moitié des cas d'utilisation de GeminiStateBackend, les performances sont supérieures de plus de 70 % à celles observées avec RocksDBStateBackend.
-
Prend en charge la séparation calcul-stockage pour supprimer la dépendance des données d'état vis-à-vis des disques locaux.
L'espace disponible sur les disques locaux étant limité, les déploiements gérant un volume important de données d'état rencontrent souvent des problèmes d'espace disque insuffisant. La plupart du temps, lorsqu'un déploiement exécuté avec RocksDBStateBackend fait face à ce problème, vous devez augmenter le parallélisme des threads ou recourir à d'autres méthodes pour accroître les ressources. GeminiStateBackend prend en charge la séparation calcul-stockage, permettant ainsi au stockage d'état de s'affranchir des disques locaux. Cela évite les échecs de déploiement causés par un volume excessif de données d'état locales. Pour plus d'informations sur la configuration liée à la séparation calcul-stockage, consultez la section Paramètres pour la séparation calcul-stockage.
-
Prend en charge la séparation adaptative clé-valeur pour améliorer significativement les performances des déploiements impliquant des jointures DOUBLE-STREAM JOIN ou MULTI-STREAM JOIN.
Les jointures double-stream ou multi-stream constituent l'un des scénarios les plus complexes du traitement en continu et représentent un cas typique où le stockage d'état atteint ses limites. GeminiStateBackend propose la fonctionnalité de séparation clé-valeur afin de s'adapter aux situations où le taux de réussite des opérations JOIN est faible ou lorsque la longueur des valeurs des données d'état est importante. Cela améliore considérablement les performances des déploiements impliquant des jointures double-stream ou multi-stream. La fonctionnalité de séparation clé-valeur permet un ajustement adaptatif sans nécessiter de configuration ni d'optimisation manuelle. Les vérifications effectuées lors du Festival des achats du Double 11 d'Alibaba Group montrent que l'activation de cette fonctionnalité peut augmenter le débit des déploiements de 50 % à 70 %, voire davantage, et améliorer l'utilisation des ressources de calcul de 50 % en moyenne. Dans les scénarios typiques, l'utilisation des ressources de calcul peut progresser de 100 % à 200 %. Pour plus d'informations sur la configuration liée à la séparation clé-valeur, consultez la section Paramètres pour la séparation clé-valeur.
-
Utilise des savepoints légers, ce qui accélère considérablement la création de checkpoints et de savepoints pour les déploiements contenant un grand volume de données d'état.
GeminiStateBackend prend en charge des savepoints de déploiement plus granulaires et découple la fonctionnalité de checkpoint du mécanisme de compaction de l'arbre LSM. Cette approche accélère et stabilise la création des checkpoints et des savepoints. GeminiStateBackend prend également en charge la fonctionnalité Native Incremental Savepoint. Utilisée conjointement avec les savepoints natifs de Realtime Compute for Apache Flink, elle offre des performances similaires à celles des checkpoints, améliorant ainsi la disponibilité des savepoints.
-
Prend en charge le réglage adaptatif des paramètres, éliminant ainsi la charge de travail liée au réglage manuel.
Dans les tâches de traitement en continu, les différents opérateurs présentent des modes d'accès à l'état variés. Il est souvent nécessaire de combiner plusieurs paramètres pour obtenir des performances optimales du stockage d'état. La configuration de ces paramètres implique des technologies sous-jacentes complexes, rendant le réglage manuel coûteux en apprentissage et en compréhension. Pour résoudre ce problème, GeminiStateBackend intègre la technologie de réglage adaptatif des paramètres. Lorsqu'un déploiement est en cours d'exécution, les configurations des paramètres sont automatiquement ajustées en fonction du mode d'accès aux données actuel et du trafic, afin d'atteindre des performances optimales du stockage d'état dans divers scénarios. Les vérifications réalisées lors du Festival des achats du Double 11 d'Alibaba Group indiquent que cette technologie permet de réduire le réglage manuel des paramètres de plus de 95 % et d'augmenter le débit par cœur de 10 % à 40 %. Pour plus d'informations sur la configuration liée au réglage adaptatif des paramètres, consultez la section Paramètres pour le réglage adaptatif des paramètres.
Comparaison des performances à l'aide de Nexmark
Cet exemple utilise les cas d'utilisation liés aux goulots d'étranglement d'état et aux ressources matérielles issus de Nexmark pour comparer les performances de RocksDBStateBackend et de GeminiStateBackend.
Le lien vers Nexmark renvoie vers un site tiers. Lors de votre visite, l'accès au site peut échouer ou subir des retards.
Les résultats de la comparaison montrent que GeminiStateBackend optimise considérablement les performances globales (débit par cœur) des déploiements. Le tableau ci-dessous présente ces résultats.
|
Nom du cas |
GeminiStateBackend TPS/Cœur |
RocksDBStateBackend TPS/Cœur |
Amélioration des performances avec GeminiStateBackend |
|
q4 |
83,63 K/s |
53,26 K/s |
57,02 % |
|
q5 |
84,52 K/s |
57,86 K/s |
46,08 % |
|
q8 |
468,96 K/s |
361,37 K/s |
29,77 % |
|
q9 |
59,42 K/s |
26,56 K/s |
123,72 % |
|
q11 |
93,08 K/s |
48,82 K/s |
90,66 % |
|
q18 |
150,93 K/s |
87,37 K/s |
72,75 % |
|
q19 |
143,46 K/s |
58,5 K/s |
145,23 % |
|
q20 |
75,69 K/s |
22,44 K/s |
237,30 % |
Références
Pour plus d'informations sur la création, la consultation ou la suppression de l'état d'un déploiement, ainsi que sur la restauration d'un déploiement à partir d'un état spécifié, consultez la section Gestion des jeux d'états.
Pour en savoir plus sur les différences en matière d'efficacité de migration et de performances de déploiement lors de la migration des données d'état entre RocksDBStateBackend et GeminiStateBackend, consultez la section Présentation générale.
Pour plus d'informations sur l'impact des modifications apportées aux instructions SQL d'un déploiement sur la compatibilité avec les données d'état, consultez la section Modifications SQL et impact sur la compatibilité.
Pour plus d'informations sur les tests de performance Nexmark de Realtime Compute for Apache Flink, consultez le Livre blanc sur les performances (tests de performance Nexmark).
Pour obtenir des réponses aux questions fréquentes concernant les checkpoints ou les savepoints de Realtime Compute for Apache Flink, consultez la section FAQ sur les checkpoints ou les savepoints d'un déploiement.