Construction de l'utilisabilité de CloudWeGo : le moyen d'améliorer l'efficacité de l'ingénierie native du cloud en langage Go

Cet article est le deuxième de la série de célébrations du deuxième anniversaire de CloudWeGo.

Cette session de partage vous donnera d'abord un bref aperçu de la construction de la convivialité de CloudWeGo, puis nous présenterons ce que nous avons fait pour la construction de la convivialité, et enfin nous attendrons avec impatience les travaux futurs.

 

01

arrière-plan

CloudWeGo est un ensemble de middleware open source créé par l'équipe de framework de services d'infrastructure ByteDance qui peut rapidement créer une architecture de microservices cloud native au niveau de l'entreprise. Les projets sous CloudWeGo ont trois caractéristiques principales : hautes performances , haute évolutivité et haute fiabilité ; et, après l'open source, nous accordons également plus d'attention à la construction de la facilité d'utilisation . et ainsi, il forme une atmosphère communautaire active et favorise le développement durable de la communauté. Sa facilité d'utilisation peut aider les utilisateurs à terminer rapidement le développement de la logique métier et à améliorer l'efficacité.

Concernant la facilité d'utilisation, nous avons fait beaucoup de travail sur l'expérience R&D, l'expérience utilisateur et la promotion communautaire. Permettez-moi de les présenter un par un ci-dessous. De plus, ce partage se concentrera principalement sur Hertz et la construction d'utilisabilité autour de cwgo.

 

02

Facilité d'utilisation Construction de fonctionnalités

 

En tant que framework HTTP au niveau de l'entreprise, la facilité d'utilisation de Hertz a toujours été un aspect auquel nous attachons une grande importance car elle peut grandement améliorer l'expérience de recherche et développement. C'est pourquoi, depuis l'open source, nous avons toujours attaché une grande importance aux différentes suggestions faites par les utilisateurs concernant la facilité d'utilisation, et avons résumé : Le premier problème est que notre utilisation de certaines fonctionnalités est quelque peu différente des frameworks courants, ce qui entraîne une migration. Les utilisateurs n'y sont peut-être pas habitués ; le deuxième problème est que le framework dispose de nombreux outils d'échafaudage. Par exemple, CloudWeGo a deux échafaudages, Hertz et Kitex, ce qui augmente sans aucun doute le coût d'apprentissage pour les utilisateurs. que nous D'après les problèmes et les commentaires des utilisateurs du groupe d'utilisateurs, nous pouvons constater que nos documents actuels présentent des problèmes tels que des descriptions peu claires et du contenu manquant, ce qui conduit souvent les utilisateurs à rencontrer des problèmes qui ne peuvent souvent pas être résolus rapidement.

En réponse aux problèmes ci-dessus, nous avons développé diverses fonctionnalités pour répondre rapidement aux besoins des utilisateurs.

  1. Prise en charge multi-protocole : La première chose à introduire est que Hertz peut prendre en charge la commutation transparente de plusieurs protocoles. Actuellement, certains frameworks open source prennent déjà en charge le protocole h2/h3, sur la base des capacités d'extension de la couche de protocole Hertz. , nous avons terminé l'implémentation de http2/http3 et l'avons mis sous hertz-contrib. Son utilisation est très simple, il suffit d'enregistrer le protocole correspondant sur le moteur Hertz. Le support du protocole http3 est également similaire, mais nous devons spécifier la couche transport comme couche transport du protocole quic étendu par Hertz. Les autres opérations sont les mêmes que pour http2.

  1. Détournement de Response Writer : Ensuite, permettez-moi de vous présenter la capacité de piratage de Response Writer. Avant de présenter le piratage de Writer, parlons du processus de lecture et d'écriture des messages Hertz (la partie numérique dans la figure lira et analysera d'abord les données de la connexion, puis effectuera la correspondance d'itinéraire, le traitement de la logique métier et créera une réponse). données basées sur le contenu de la demande, et une fois ces tâches terminées, le framework envoie les données au homologue. Cela peut simplifier complètement les opérations des utilisateurs, mais il existe des problèmes dans certains scénarios. Premièrement, les utilisateurs ne peuvent pas contrôler le moment du vidage réel vers l'homologue. Par conséquent, dans certains scénarios où les données sont générées de manière incrémentielle et où les exigences en temps réel sont élevées, les utilisateurs doivent le faire. de nombreuses restrictions.

      Par conséquent, nous avons développé la capacité de piratage de Response Writer. Sur la base du processus d'écriture de réponse d'origine, nous aidons les utilisateurs à détourner le Response Writer dans le gestionnaire métier/middleware et à renvoyer les données de réponse à l' homologue à l'avance pour obtenir des demandes d'écriture plus flexibles. Chemin. Nous avons implémenté des fonctionnalités telles que le vidage du gestionnaire, SSE et le streaming Gzip basées sur les capacités de Response Writer, et nous attendons avec impatience vos contributions à davantage de fonctionnalités.

  1. Reconstruction de liaison de paramètres : après avoir présenté le piratage de Writer, présentons une fonctionnalité importante : la liaison de paramètres. Avant la reconstruction, la liaison des paramètres de Hertz reposait sur des implémentations tierces, ce qui provoquait les problèmes suivants :

      Afin de résoudre ces problèmes, nous avons reconstruit la capacité de liaison de paramètres et placé son implémentation dans Hertz en tant qu'implémentation importante de notre couche d'application. Après la reconstruction, elle prend en charge les mêmes règles de liaison et méthodes d'utilisation qu'auparavant, et a de meilleures performances. complètement mieux qu'avant. En outre, il prend également en charge le classeur et le validateur personnalisés pour permettre aux utilisateurs d'utiliser leur syntaxe familière. De plus, nous consolidons toutes les configurations dans une structure et l'injectons dans le moteur Hertz sous la forme de withOption.

    1. S'appuyant sur une implémentation tierce, les utilisateurs doivent faire appel aux développeurs pour répondre à leurs besoins

    2. Il y a moins d'interfaces fournies et les étudiants qui migrent augmenteront leurs coûts d'apprentissage.

    3. Les performances sont médiocres. L'implémentation précédente est adaptée au modèle de stockage de la bibliothèque http standard nécessite une conversion supplémentaire et les performances sont médiocres.

Les trois caractéristiques ci-dessus sont les caractéristiques les plus importantes de Hertz en termes de facilité d'utilisation.

 

03

Construction écologique

Ensuite, je vous présenterai la construction écologique liée à Hertz.

À l'heure actuelle, nous fournissons des fonctionnalités communes à tous sous la forme d'un middleware, afin que les développeurs puissent mieux se concentrer sur la logique métier et n'aient besoin que d'appeler un middleware pour utiliser ces fonctionnalités communes. Jusqu'à présent, nous avons fourni plus de 20 extensions de middleware, notamment l'authentification/autorisation, la sécurité, les performances, les capacités générales HTTP, les capacités d'expansion de l'observation de la gouvernance, etc., qui peuvent essentiellement répondre à la plupart des besoins des entreprises.

Bien entendu, nous continuerons à investir dans la construction de ces écosystèmes middleware, et tout le monde est invité à participer au développement de notre communauté.

 

04

Optimisation des échafaudages

Ensuite, permettez-moi de vous présenter l'optimisation des outils d'échafaudage.

Hz

Lorsqu'il était open source, l'outil d'échafaudage hz de Hertz offrait déjà la possibilité de générer des serveurs basés sur IDL, c'est-à-dire que nous avons pris en charge les parties 3, 4 et 5 de la figure. Actuellement, les codes d'enregistrement et de gestionnaire de routage peuvent être automatiquement générés en fonction. sur la définition de l'interface d'IDL et d'autres fonctions ; mais en tant que cadre de communication, nous devons également terminer le travail de génération côté client, qui est le processus de 1, 2 et 6 dans la figure, donc hz prend en charge la capacité de. générer du code client après avoir été open source.

L'objectif principal de la génération de client est de bloquer une série d'opérations fixes telles que l'initialisation du client Hertz et l'envoi de requêtes, de fournir aux utilisateurs la possibilité d'envoyer des requêtes HTTP en un clic et de communiquer directement avec le serveur généré par Hz.

CWGO

Ensuite, je présenterai un autre outil cwgo. cwgo est un outil unifié que nous avons lancé pour le framework CloudWeGo Golang.

Comme vous pouvez le voir sur l'image ci-dessous, CloudWeGo dispose de plusieurs outils de génération de code sous Golang. Bien que nos Kitex et Hertz aient fourni une couche d'encapsulation, leur utilisation est encore légèrement différente, ce qui entraîne des coûts d'apprentissage élevés pour les utilisateurs. Ce problème est exactement l’un des problèmes que cwgo souhaite résoudre.

De plus, le projet Go de la communauté CloudWeGo est actuellement confronté aux problèmes suivants :

  1. Les capacités de gestion des API sont relativement faibles. IDL lui-même peut être utilisé comme outil de description/définition d'interface tout au long du processus d'itération de développement commercial. Cependant, CloudWeGo n'a actuellement pas de plan pratique clair pour la connexion avec les utilisateurs de l'entreprise. , le côté commercial doit essentiellement se concentrer sur la gestion liée aux API.

  2. Chaque composant est relativement indépendant et ne peut pas fonctionner de manière transparente lorsqu'il est utilisé ensemble.

  3. Manque de génération et de configuration de code commun pour les tests unitaires, la base de données, etc.

À mesure que le nombre de composants open source CloudWeGo continue d'augmenter à l'avenir, l'expérience utilisateur fragmentée continuera à se fragmenter. C'est pourquoi nous avons publié l'outil tout-en-un CloudWeGo, cwgo, dans le but de résoudre les problèmes ci-dessus dans une perspective globale. Fournissez un formulaire de génération et de gestion de microservices plus simple et plus facile à utiliser.

Présentons plusieurs fonctionnalités de cwgo

  1. cwgo intègre les capacités de l'échafaudage hz/kitex, résume et simplifie leurs commandes, et les affiche uniformément sur l'outil cwgo. Il ouvrira également les structures générées, les annotations, le validateur et d'autres fonctions, que les utilisateurs utilisent RPC ou HTTP, ils peuvent. Offrez aux utilisateurs une expérience de génération de code unifiée

  2. Ligne de commande interactive, cette fonctionnalité est destinée aux utilisateurs débutants. Elle génère du code cible pour les utilisateurs sous une forme interactive, réduisant considérablement les coûts d'apprentissage. Les utilisateurs peuvent terminer la génération de microservices en quelques clics.

  3. Nous générerons des modèles mvc qui répondent mieux aux besoins des entreprises, comme le montre l'image de droite, pour aider au développement et à la mise en œuvre rapides des activités et faciliter les itérations et la maintenance futures. De plus, cwgo prend en charge les modèles personnalisés, l'hébergement de modèles et ; d'autres fonctionnalités, facilitant la gestion complète des modèles et leur remplacement rapide.

  4. Nous proposons un nouveau formulaire de déploiement de microservices sur cwgo, actuellement nommé hex plan, qui est l'abréviation de Hertz et Kitex. L'objectif du plan Hex est de permettre aux microservices de surveiller simultanément les requêtes HTTP/RPC sur le même port, d'obtenir une distribution des requêtes sans surcharge basée sur le reniflage de protocole et de distribuer les requêtes à Hertz et Kitex pour traitement. Cela peut résoudre les nombreux compromis en matière d'efficacité, de complexité et de performances de R&D lorsque les entreprises doivent fournir des interfaces API HTTP pour les services rpc. Actuellement, cette fonctionnalité a été officiellement publiée dans cwgo et tout le monde peut en faire l'expérience à la demande.

 

05

Optimisation de l'expérience utilisateur

Optimisation des documents : Depuis l'open source, les projets sous CloudWeGo ont toujours prêté attention aux problèmes de documents, mais chaque fois qu'il y a un problème, il est résolu quelque part et le problème ne peut pas être résolu de manière globale.

Nous avons donc participé au projet CCF GLCC et lancé un projet spécial d'optimisation de documents. Dans ce projet spécial, nous avons principalement effectué les travaux suivants :

  1. Revivre le document de manière globale, y compris le code, les images, le contenu, etc., et enregistrer les problèmes associés

  2. Sur la base des problèmes associés enregistrés, nous avons dédié du personnel pour optimiser les documents, en résolvant certains problèmes tels que la logique confuse et les descriptions peu claires, et en nous concentrant sur l'optimisation des documents couramment utilisés tels que les didacticiels pour les nouveaux arrivants et les fonctionnalités de base de Hertz. Selon les commentaires, la documentation optimisée peut déjà résoudre pratiquement tous les problèmes courants.

  3. De plus, nous avons également apporté des ajustements unifiés au format du document et à la structure des répertoires pour offrir une meilleure expérience visuelle.

Actuellement, ce projet d'optimisation est actuellement réalisé dans le cadre d'autres projets CloudWeGo. Nous invitons tout le monde à nous faire part de ses commentaires sur les problèmes de documents.

Bibliothèque d'exemples de codes : Deuxièmement, nous fournissons une riche bibliothèque d'exemples de codes.

Actuellement, nous fournissons des bibliothèques de codes hertz-example et kitex-example, qui contiennent des exemples d'utilisation exécutables de toutes les fonctionnalités couramment utilisées et sont régulièrement mises à jour et entretenues.

De plus, afin de permettre aux entreprises d'utiliser le projet CloudWeGo pour terminer plus rapidement le développement de la logique métier, nous avons fourni plusieurs démos de scénarios réels. Actuellement, les démos suivantes sont fournies. Les codes commerciaux suivants sont développés à l'aide de Hertz et Kitex Ou refactor. , vous pouvez étendre votre logique métier sur cette base pour achever le lancement rapide de l'entreprise.

  1. Bookinfo : Réimplémenter IstioBookinfo avec Hertz+Kitex

  2. Easy Note : implémentez un service de notes à l'aide des microservices Hertz+Kitex

  3. Librairie : Utilisez Hertz+Kitex pour mettre en œuvre un exemple de commerce électronique

  4. Plateforme de paiement ouverte : utilisez Hertz+Kitex pour mettre en œuvre une plateforme de paiement ouverte prenant en charge plusieurs commerçants

Activités CSG : Nous organisons également régulièrement des activités CSG. Les activités CSG sont conçues pour aider les développeurs à comprendre le code source et à utiliser au mieux le framework.

Jusqu'à présent, les événements CSG ont eu lieu 5 fois. Ils ont présenté de nombreux codes sources et meilleures pratiques du framework Hertz/kitex/volo pour aider les développeurs à mieux comprendre et utiliser le framework. Vous pouvez consulter les introductions de numéros et les rediffusions des activités précédentes dans les numéros de l'entrepôt cloudwego/community.

 

06

Perspectives

 

À l'avenir, nous continuerons à investir et à améliorer la facilité d'utilisation de Cloudwego pour offrir aux utilisateurs une meilleure expérience de R&D.

  • Processus de R&D universel : fournissez aux utilisateurs un ensemble de processus de R&D au niveau de l'entreprise qui peuvent être directement utilisés et collaborez avec divers cadres pour mener à bien l'ensemble du processus de développement commercial efficace.

    • Gestion centralisée des API : unifiez la méthode de gestion des API du projet CloudWeGo et complétez l'ensemble du processus de description, de développement et de test en un seul guichet.

    • Gestion IDL distribuée : les produits IDL et les codes métiers sont gérés séparément pour réduire les coûts de maintenance.

  • CWGO x LLM : fournir des capacités d'assistance plus intelligentes basées sur LLM

    • Génération de code intelligente : ajoutez une description commerciale dans IDL et combinez LLM pour remplir la logique du code métier lors de la génération du code

    • Automatisation des documents : rédaction automatique de documents, optimisation, traduction, correction d'erreurs, etc.

 


adresse du projet

GitHub:https://github.com/cloudwego

Site officiel : www.cloudwego.io

 

Les ressources piratées de "Celebrating More Than Years 2" ont été téléchargées sur npm, obligeant npmmirror à suspendre le service unpkg. L'équipe chinoise d' IA de Microsoft a fait ses valises et s'est rendue aux États-Unis, impliquant des centaines de personnes. La bibliothèque de visualisation frontale et le projet open source bien connu de Baidu, ECharts - "aller à la mer" pour soutenir les escrocs Fish ont utilisé TeamViewer pour transférer 3,98 millions ! Que doivent faire les fournisseurs de postes de travail à distance ? Zhou Hongyi : Il ne reste plus beaucoup de temps à Google. Il est recommandé que tous les produits soient open source. Un ancien employé d'une société open source bien connue a annoncé la nouvelle : après avoir été interpellé par ses subordonnés, le responsable technique est devenu furieux et. a licencié l'employée enceinte. Google a montré comment exécuter ChromeOS sur une machine virtuelle Android. Veuillez me donner quelques conseils, quel rôle joue ici time.sleep(6). Microsoft réagit aux rumeurs selon lesquelles l'équipe chinoise d'IA "fait ses valises pour les États-Unis" Le Quotidien du Peuple commente en ligne la charge de type matriochka des logiciels de bureau : Ce n'est qu'en résolvant activement les "ensembles" que nous pourrons avoir un avenir
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4843764/blog/10332618
conseillé
Classement