Démystifié | La raison de la sortie de "soyeux lisse" dans des scénarios à fort trafic

Introduction: De nombreuses sociétés Internet publient au milieu de la nuit, juste pour réduire l'impact des utilisateurs, et la scène des problèmes peut être contrôlée. La gestion des services MSE est sans perte et hors ligne, ce qui garantit le trafic pendant la période de publication, vous permettant de vous débarrasser de l'embarras de la sortie de minuit.

Pourquoi de nombreuses sociétés Internet n'osent-elles pas publier pendant la journée et choisissent de publier au milieu de la nuit? S'il parvient à se débarrasser de l'embarras de publier au milieu de la nuit, n'aura-t-il pas une odeur? Choisir de publier au milieu de la nuit n'est rien de plus que de réduire l'impact sur les utilisateurs, et l'impact des problèmes peut être contrôlé.

Parlons ensuite des problèmes qui se produiront lors du communiqué de presse.

  • Si votre application n'a pas de problèmes en ligne ou hors ligne, l'une de vos applications entraînera une indisponibilité de service à court terme pendant le processus de publication, et un grand nombre d'erreurs anormales io apparaîtront dans la surveillance de l'entreprise dans un court laps de temps, ce qui entraînera des problèmes pour la continuité des activités.
  • La version est le dernier lien de la mise à jour complète de la fonction vers la version en ligne. Certains problèmes accumulés au cours du processus de développement ne seront déclenchés qu'au niveau du lien de la version finale. S'il s'agit d'une scène avec un débit important pendant la journée, les moindres problèmes seront rapidement amplifiés en raison du débit important, et l'impact sera difficile à contrôler.
  • Si la version implique plusieurs applications, comment la publier de manière raisonnable et sans problèmes de version susceptibles de causer des dommages au trafic.

Tous les problèmes publiés sont sommairement résumés dans les trois éléments ci-dessus. Ensuite, je discuterai en détail pourquoi ces problèmes existent dans plusieurs articles et comment nous les avons résolus. J'espère aussi que tout le monde pourra quitter le travail tôt, se débarrasser de l'embarras de publier au milieu de la nuit et passer plus de temps avec sa famille.

Cet article se concentrera sur des exemples de scénarios en ligne et hors ligne et décrit les problèmes dans le processus de publication.

Le statut de la version de l'application en cas de trafic élevé

Démo d'application

Démo En prenant Spring Cloud comme exemple, nous avons préparé la démo suivante. Le trafic est initié par le service de test de performance Alibaba Cloud PTS et circule dans notre système via la passerelle open source Zuul

Document d'utilisation du PTS: https://pts.console.aliyun.com/

Le lien d'appel de service est illustré dans la figure ci-dessous:

image.png

Dans la figure, le trafic provient de l'Ingress correspondant à Netflix Zuul et appellera le service correspondant à l'application SC-A, l'application SC-A appelle en interne le service d'application SC-B et l'application SC-B appelle en interne le service d'application SC-C.

Démo de déploiement de Helm

Helm install mse / mse-samples
Demo est une architecture Spring Cloud pure open source, adresse du projet:

https://github.com/aliyun/alibabacloud-microservice-demo/tree/master/microservice-doc-demo/traffic-management

Après le déploiement, la charge de travail sur Alibaba Cloud Container Service est la suivante:

image.png

Nous utilisons la commande while true; do curl http: // {ip: port} / A / a; echo; done shell pour accéder en continu au service Spring Cloud. Nous pouvons voir que la fonction de notre démo est uniquement d'imprimer l'IP du service actuel. Nous pouvons voir que la fonction de notre démo est uniquement d'imprimer l'IP du service actuel, et nous pouvons voir le lien d'appel global.

while true; do curl http://{ip:port}/A/a;echo;done
A[10.0.0.81] -> B[10.0.0.82] -> C[10.0.0.68]
A[10.0.0.179] -> B[10.0.0.82] -> C[10.0.0.50]
A[10.0.0.80] -> B[10.0.0.82] -> C[10.0.0.68]
A[10.0.0.49] -> B[10.0.0.82] -> C[10.0.0.50]
A[10.0.0.81] -> B[10.0.0.175] -> C[10.0.0.68]
A[10.0.0.179] -> B[10.0.0.175] -> C[10.0.0.50]
A[10.0.0.80] -> B[10.0.0.175] -> C[10.0.0.68]
A[10.0.0.49] -> B[10.0.0.175] -> C[10.0.0.50]
A[10.0.0.81] -> B[10.0.0.82] -> C[10.0.0.68]
...

Configurez le test de pression à 500 qps, effectuez la mise à l'échelle, l'expansion et la libération de l'application pendant le test de pression, et observez la situation du test de pression.

La performance des applications open source sous fort trafic

Rétrécir

Dans le cas d'un test de pression de 500 qps, l'application sc-a est réduite de 4 dosettes à 1 dosette, et le test de pression prend 3 minutes.

  1. En observant l'événement des K8, nous voyons qu'à 17:35:21, l'application est réduite.
    image.png
  2. En examinant le rapport de test de résistance des performances, nous avons observé que l'erreur commençait à 17 h 35 min 21 s et s'était arrêtée à 17 h 35 min 36. L'erreur a duré 15 secondes et un total de 469 exceptions s'est produite.
    image.png
  3. Le rapport de processus détaillé est le suivant.
    image.png

Expansion

Examinons les performances de l'expansion de l'application dans l'état de test de stress. Nous étendons l'application sc-a de 1 pod à 4 pods dans le cas d'un test de stress de 500 qps, et le temps de test de stress est de 3 minutes

  1. En observant l'événement K8s, nous voyons qu'à 17:47:03, l'application est développée.
    image.png
  2. En examinant le rapport de test de résistance des performances, nous avons observé que l'erreur commençait à 17 h 47 min 12 s et s'était arrêtée à 17 h 47 min 19. L'erreur a duré 7 secondes et un total de 257 exceptions s'est produit.
    image.png
  3. Le rapport de processus détaillé est le suivant.
    image.png

Libération

Dans le cas d'un test de pression de 500 qps, l'application sc-a (4 dosettes) est libérée et le test de pression dure 3 minutes.

  1. En observant l'événement K8s, nous voyons que l'application est publiée à 17:53:42.
    image.png
  2. En examinant le rapport de test de résistance aux performances, nous avons observé que l'erreur commençait à 17 h 53 min 42 s et s'arrêtait à 17 h 54 min 24 h 24. L'erreur a duré 42 secondes et il y a eu plus de 10 000 exceptions.
    image.png
  3. Le rapport de processus détaillé est le suivant.
    image.png

Statu quo et réflexion

On peut voir que la question de la libération des applications sous un trafic élevé est urgente. Avec le développement d'une architecture cloud native, les fonctionnalités cloud natives telles que la mise à l'échelle élastique, les mises à niveau progressives et les versions par lots permettent aux utilisateurs d'obtenir la solution optimale pour les ressources, les coûts et la stabilité. C'est précisément en raison de sa flexibilité et d'autres caractéristiques que si l'application est en ligne ou hors ligne Des problèmes tels qu'Internet, ces problèmes seront amplifiés sous l'architecture native du cloud.

Imaginez que s'il y a des erreurs inutiles dans chaque extension, réduction et version, la continuité des activités et l'expérience utilisateur du produit subissent un coup dur. Comment s'assurer que l'entreprise n'est pas au courant pendant le processus de déploiement des mises à jour de service est le développement Le problème que l'utilisateur doit résoudre, c'est-à-dire de l'arrêt de l'application à la réexécution, ne peut pas affecter les demandes commerciales normales.

Réduire les erreurs API inutiles est la meilleure expérience client.

C'est un point très douloureux. En ce moment, quelqu'un vous dit que je sais comment y remédier. J'ai une riche expérience et je sais comment le résoudre. Vous devez être très heureux.

Puis est arrivé avec un salaire élevé, c'est vraiment bien, les différents schémas d'architecture, principes et modifications du framework sont très clairs et les fonctions sont vraiment parfaites. Enfin, pour évaluer le coût de modification du système actuel, il est nécessaire de construire trois ensembles de serveurs middleware, d'augmenter 4 dépendances middleware et de modifier des dizaines de milliers de lignes de code et de configuration.

"Excusez-moi, c'est toujours important pour l'entreprise. Les exigences données par le chef de produit ne sont pas encore remplies. Le scénario que je viens de mentionner n'est pas si pénible. Il y a juste quelques problèmes mineurs. C'est vraiment bien."

À ce stade, MSE vous indique que la solution de microservice de MSE ne nécessite aucune modification de code et de configuration pour résoudre parfaitement les problèmes en ligne et hors ligne. Il vous suffit de connecter votre application à la gestion des services MSE, vous pouvez profiter de la capacité hors ligne sans perte de MSE.

N'êtes-vous pas ému?

Oui, vous avez bien lu. Tant que votre application est basée sur le développement de versions de Spring Cloud ou Dubbo au cours des cinq dernières années, vous pouvez utiliser directement les capacités complètes de gestion des microservices MSE sans modifier aucun code ni aucune configuration.

Sortie d'applications avec hors ligne sans perte

Comment accéder à MSE hors ligne sans perte

Il vous suffit de connecter votre application à la gouvernance des services MSE pour bénéficier de la fonctionnalité hors ligne sans perte de la gouvernance des microservices.

Performance après accès

Examinons l'expansion, la contraction et les performances de publication après avoir accédé à la gouvernance des services MSE, qui est également l'original

Rétrécir

Dans le cas d'un test de pression de 500 qps, l'application sc-a est réduite de 4 dosettes à 1 dosette, et le test de pression prend 3 minutes

  1. En observant l'événement K8s, nous voyons qu'à 17:41:06, l'application est réduite.
    image.png
  2. En vérifiant le rapport de test de résistance des performances, nous avons observé que le flux n'était pas endommagé tout au long du processus et que la concurrence était stable autour de 30.
    image.png
  3. Le rapport de processus détaillé est le suivant, vous pouvez voir que la mise à l'échelle des applications est complètement imperceptible pour l'entreprise.
    image.png

Expansion

Dans le cas d'un test de pression de 500 qps, l'application sc-a est étendue de 1 dosette à 4 dosettes, et le test de pression prend 3 minutes.

  1. En observant l'événement K8s, on voit qu'à 20:00:19, l'application est développée.
    image.png
  2. Vérifiez le rapport de test de pression de performance, aucune erreur n'est signalée.
    image.png
  3. Le rapport de processus détaillé est le suivant. On peut voir qu'il n'y a pas de rapport d'erreur pour la réduction des applications pour l'entreprise, mais il y a des sauts de concurrence à 20:01:07 et la fonction en ligne sans perte sera lancée plus tard. Cette logique sera améliorée pour lisser les bosses.
    image.png

Libération

Dans le cas d'un test de pression de 500 qps, l'application sc-a (4 dosettes) est libérée et le test de pression dure 3 minutes.

  1. En observant les événements des K8, nous voyons que l'application sort à 20:08:55.
    image.png
  2. En vérifiant le rapport de test de pression de performance, nous avons observé qu'aucune erreur n'avait été signalée tout au long du flux.
    image.png
  3. Le rapport de processus détaillé est le suivant. On peut voir qu'il n'y a pas de rapport d'erreur pour la réduction des applications pour l'entreprise, mais il y a une légère bosse dans la concurrence à 20:09:39, 20:10:27, et la fonction en ligne sans perte sera lancée plus tard, ce qui améliorera la logique , Rendez les bosses lisses.
    image.png

En comparant les performances des applications dans le processus de publication avant et après l'accès à la gestion des services MSE, nous pouvons voir que MSE résout complètement les problèmes liés aux rapports d'erreurs de trafic lors de la sortie et de l'expansion, rendant l'entreprise plus stable et l'expérience produit plus fluide. Dans le même temps, après avoir accédé à la gestion des services MSE, vous pouvez profiter de la capacité hors ligne sans perte sans modifier une ligne de code.

Pour résumer

Cet article présente la possibilité d'une connexion hors ligne sans perte sous la gouvernance de microservices, garantit le trafic pendant la période de publication et vous permet de vous débarrasser du dilemme de la version de minuit. Votre application n'a besoin que d'accéder à la gouvernance des services MSE et vous pouvez profiter d'une connexion hors ligne sans perte sans aucune opération. aptitude. En plus de MSE (moteur de microservice), des capacités sans perte sont également intégrées par des produits cloud tels que EDAS et SAE. Dans le même temps, le hors ligne sans perte a été mis en œuvre à grande échelle dans le cœur de métier d'Alibaba Cloud, contribuant à assurer la stabilité de l'activité cloud et à maintenir votre entreprise en ligne pour toujours.

Les chapitres suivants expliqueront en détail pourquoi vous n'avez besoin que d'accéder à la gestion des services MSE, votre application peut libérer la magie noire qui est toujours douce et fluide sous un trafic intense pendant la journée, alors restez à l'écoute

Plus tard, je continuerai à parler de la scène de sortie soyeuse sous forte circulation pendant la journée. On s'attend à ce qu'il y ait trois à quatre articles sur ce sujet, alors restez à l'écoute!

Pas seulement la gouvernance des services

Le moteur de microservices MSE a non seulement des capacités de gouvernance de microservices, mais nous fournissons également des services tels que l'hébergement d'un registre open source, un centre de configuration et une passerelle open source. Grâce à des produits gérés basés sur Baas, nous exportons les capacités des meilleures pratiques d'Alibaba Cloud pour plus de dix ans de microservices via des produits cloud pour aider à assurer la stabilité de l'activité cloud et à garder votre entreprise en ligne pour toujours.

Groupe d'échange d'utilisateurs du moteur de microservices

Si vous avez des questions lors de l'utilisation du moteur de microservice MSE, vous pouvez rechercher le numéro de groupe Dingding 23371469 ou utiliser Dingding pour scanner le code QR suivant afin de rejoindre le groupe Dingding pour obtenir des commentaires.

image.png

Lien d'origine: https://developer.aliyun.com/article/780231?

Avis de droit d'auteur: Le contenu de cet article est volontairement fourni par les utilisateurs enregistrés au nom réel d'Alibaba Cloud. Le droit d'auteur appartient à l'auteur original. La communauté des développeurs Alibaba Cloud ne possède pas ses droits d'auteur et n'assume pas les responsabilités légales correspondantes. Veuillez vous reporter au «Contrat de service utilisateur de la communauté des développeurs Alibaba Cloud» et aux «Directives de protection de la propriété intellectuelle de la communauté des développeurs Cloud Alibaba» pour connaître les règles spécifiques. Si vous constatez qu'un plagiat est suspecté dans cette communauté, remplissez le formulaire de plainte pour infraction pour le signaler. Une fois vérifié, la communauté supprimera immédiatement le contenu suspecté d'infraction.

Je suppose que tu aimes

Origine blog.csdn.net/alitech2017/article/details/112465964
conseillé
Classement