L'arrêt progressif est une fonctionnalité native d'ApsaraMQ for RocketMQ qui empêche la perte de messages et les erreurs client lors des opérations côté serveur. Lors des déploiements de versions, des redémarrages ou des maintenances du serveur, ApsaraMQ for RocketMQ active des mécanismes de protection pour éviter les déconnexions brutales des clients et garantir la continuité des activités.
Mécanismes de protection
Suspension des écritures côté serveur
Avant le redémarrage d'un nœud de stockage, le serveur suspend temporairement les écritures sur ce nœud. Le redémarrage ne débute qu'une fois l'écriture de nouveaux messages terminée. Cette approche garantit le stockage réussi de tous les messages déjà soumis par les clients.
Vidage des connexions via GOAWAY
Le serveur ApsaraMQ for RocketMQ utilise la trame GOAWAY définie dans le protocole HTTP/2 pour fermer proprement les connexions ou notifier aux clients leur fermeture imminente. Ce mécanisme coordonne la fin des connexions entre le serveur et les clients, empêche l'interruption des requêtes en cours et assure la stabilité du système.
Effets
Producteurs — Toutes les demandes d'envoi de messages aboutissent. Aucune défaillance d'envoi ne survient pendant l'arrêt progressif.
Consommateurs — La plupart des messages sont consommés avec succès. Dans de rares cas, un petit nombre de messages mis en file d'attente sur le nœud de stockage en cours de redémarrage peut être redistribué, car les validations d'offset du consommateur échouent pendant la transition.
Exigences de version du SDK
Pour utiliser l'arrêt progressif, votre SDK client doit respecter les exigences de version minimales suivantes :
SDK pour JavaSDK pour GoSDK pour PythonSDK pour C++SDK pour C#
| Langage | Version minimale | Référence |
| Java (protocole gRPC) | 5.0.7 | SDK pour Java |
| Java (protocole Remoting) | 5.3.1 | SDK pour Java |
| Go | 5.1.0-rc.1 | SDK pour Go |
| Python | 5.0.4 | SDK pour Python |
| C++ | 5.0.2 | SDK pour C++ |
| C# | 5.1.0 | SDK pour C# |
| Node.js | 1.0.1 | SDK pour Node.js |
Notes d'utilisation
Aucune configuration côté client requise — L'arrêt progressif est une fonctionnalité côté serveur. Il vous suffit de mettre à jour votre SDK client vers une version prise en charge.
Concevez des consommateurs idempotents — Les validations d'offset du consommateur peuvent échouer pendant la brève période de transition, ce qui peut entraîner la redistribution d'un petit nombre de messages. Assurez-vous que votre logique de consommation peut traiter plusieurs fois le même message en toute sécurité.
Surveillez proactivement les versions du SDK — Lorsque vous ajoutez de nouveaux services ou mettez à jour des dépendances, vérifiez que votre SDK client ApsaraMQ for RocketMQ respecte toujours les exigences de version minimales pour l'arrêt progressif.