Cet article est partagé par la communauté Huawei Cloud « Décryptage de la technologie Java Chassis 3 : équilibrage de charge des dimensions de l'interface », auteur : liubao68.
Dans Java Chassis 3 Technology Decrypted: Load Balancing Selector, les algorithmes fournis par l'équilibrage de charge Java Chassis 3 pour résoudre les performances sont déchiffrés. La technologie décryptée cette fois-ci est issue de cas clients réels :
Dans le système de microservices du client, il existe de nombreuses interfaces avec des logiques différentes et des modes d'accès spéciaux. Il existe souvent un phénomène de déséquilibre de charge dans lequel certaines instances ont d'importantes files d'attente de pool de threads, tandis que d'autres instances ont de faibles charges. Par exemple : le microservice A accède au microservice B. Le microservice B a deux instances, B1 et B2, et deux interfaces, OP1 et OP2. Parmi elles, le traitement OP1 prend plus de temps et prend plus de temps CPU, tandis que le traitement OP2 est plus rapide. La logique métier du microservice A appellera le microservice B dans le mode d'accès de OP1, OP2, OP1, OP2... Dans le système client, il arrive souvent que OP1 accède tous à B1 et OP2 accède tous à B2.
La raison de ce problème est que l'algorithme Round Robin alloue les instances en fonction de l'ordre des requêtes sans prendre en compte de manière différentielle les exigences d'équilibrage des différentes requêtes. Le moyen le plus simple et le plus direct de résoudre ce problème consiste à utiliser l'algorithme Random. Cependant, lors de la sélection d'un algorithme d'équilibrage de charge, la prévisibilité est très pratique pour la localisation, l'analyse et l'évitement des problèmes. Par conséquent, l'algorithme Round Robin fait toujours défaut. .Le meilleur choix pour la province.
La solution dans Java Chassis 3 consiste à fournir un équilibrage de charge dimensionnel de l'interface.
Dans le scénario par défaut, Java Chassis crée un équilibreur de charge pour chaque contrat (schéma). Si OP1 et OP2 appartiennent respectivement à UserService et LoginService, alors dans l'exemple de scénario ci-dessus, le développeur n'a besoin d'effectuer aucune configuration et le trafic le fera. être automatiquement équilibré.
Si OP1 et OP2 appartiennent à LoginService et que vous devez assurer l'équilibre du trafic de OP1, vous pouvez configurer :
servicecomb.loadbalance.${Microservice B}.${Nom du contrat}.${Nom de l'interface}.strategy.name=RoundRobin
Par exemple:
servicecomb.loadbalance.B.LoginService.login.strategy.name=RoundRobin
Définissez un équilibrage de charge différent pour la requête OP1 (connexion) qui prend beaucoup de temps.
discussion plus approfondie
Le principe d'équilibrage de charge ci-dessus montre qu'en supposant que le microservice X accède à M microservices et que chaque microservice a une moyenne de N contrats, alors X créera un équilibrage de charge M * N. Pour la plupart des systèmes, cet ordre de grandeur se situe dans la limite de 1K. En règle générale, il vous suffit d'attribuer un équilibrage de charge indépendant aux interfaces chronophages pour garantir l'équilibre du trafic pour les requêtes chronophages. En plus de résoudre le problème d'équilibrage du trafic, la méthode de configuration du châssis Java peut également fournir une solution de configuration très simple pour d'autres scénarios spéciaux. Par exemple, elle peut être configurée via :
servicecomb.loadbalance.${Microservice B}.${Nom du contrat}.${Nom de l'interface}.strategy.name=SessionStickiness
Spécifiez les politiques de persistance de session pour des interfaces spécifiques.
Résumer
Java Chassis 3 offre des capacités de gestion d'équilibrage de charge très puissantes pour différents scénarios d'application via des paramètres de stratégie d'équilibrage de charge de dimension d'interface, aidant à résoudre les problèmes de charge d'application tels que le déséquilibre de charge et la persistance de session.
Cliquez pour suivre et découvrir les nouvelles technologies de Huawei Cloud dès que possible~
RustDesk a suspendu le service national Taobao (taobao.com) en raison d'une fraude généralisée, a repris le travail d'optimisation de la version Web, Apple a publié la puce M4, les lycéens ont créé leur propre langage de programmation open source en guise de cérémonie de passage à l'âge adulte - Les internautes ont commenté : S'appuyer sur Selon la défense, Yunfeng a démissionné d'Alibaba et envisage de produire à l'avenir la destination des programmeurs de jeux indépendants Visual Studio Code 1.89, a été officiellement annoncé par Huawei. L'ajustement du poste de Yu Chengdong a été cloué au « pilier de la honte FFmpeg ». « Il y a 15 ans, mais aujourd'hui il doit nous remercier - Tencent QQ Video venge sa honte précédente ? La station miroir open source de l'Université des sciences et technologies de Huazhong est officiellement ouverte à l'accès au réseau externe