CloudWeGo-Usability-Konstruktion: Der Weg zur Verbesserung der Effizienz des Go-Sprach-Cloud-Native-Engineerings

Dieser Artikel ist der zweite in der Reihe zur Feier zum zweiten Jubiläum von CloudWeGo.

In dieser Austauschsitzung erhalten Sie zunächst einen kurzen Hintergrund über die Usability-Konstruktion von CloudWeGo, dann stellen wir Ihnen vor, was wir für die Usability-Konstruktion getan haben, und schließlich freuen wir uns auf die zukünftige Arbeit.

 

01

Hintergrund

CloudWeGo ist eine Reihe von Open-Source-Middleware, die vom ByteDance Infrastructure Service Framework-Team bereitgestellt wird und schnell eine Cloud-native Microservice-Architektur auf Unternehmensebene aufbauen kann. Projekte unter CloudWeGo weisen drei Hauptmerkmale auf: hohe Leistung , hohe Skalierbarkeit und hohe Zuverlässigkeit . Nach Open Source legen wir auch mehr Wert auf Benutzerfreundlichkeit . Wir sind uns bewusst, dass Benutzerfreundlichkeit viele Benutzer in die Community einbeziehen kann. und somit schafft es eine aktive Community-Atmosphäre und fördert die nachhaltige Entwicklung der Community. Seine Benutzerfreundlichkeit kann Benutzern helfen, die Entwicklung der Geschäftslogik schnell abzuschließen und die Effizienz zu verbessern.

Was die Benutzerfreundlichkeit betrifft, haben wir viel Arbeit in den Bereichen Forschung und Entwicklung, Benutzererfahrung und Community-Förderung geleistet. Lassen Sie mich sie im Folgenden einzeln vorstellen. Darüber hinaus wird sich dieser Austausch hauptsächlich auf Hertz und den Usability-Aufbau rund um cwgo konzentrieren.

 

02

Benutzerfreundlichkeit. Feature-Konstruktion

 

Als HTTP-Framework auf Unternehmensebene war die Benutzerfreundlichkeit von Hertz schon immer ein Aspekt, auf den wir großen Wert legen, da sie das Forschungs- und Entwicklungserlebnis erheblich verbessern kann. Daher legen wir seit Open Source stets großen Wert auf die verschiedenen Vorschläge der Benutzer zur Benutzerfreundlichkeit und haben Folgendes zusammengefasst: Das erste Problem besteht darin, dass sich unsere Verwendung einiger Funktionen etwas von den gängigen Frameworks unterscheidet, was zu einer Migration führt. Benutzer sind möglicherweise nicht daran gewöhnt. Das zweite Problem besteht darin, dass das Framework über zwei Gerüste verfügt, Hertz und Kitex, was zweifellos die Lernkosten für Benutzer erhöht. Aus den Problemen und dem Benutzerfeedback der Benutzergruppe können wir erkennen, dass unsere aktuellen Dokumente Probleme wie unklare Beschreibungen und fehlende Inhalte aufweisen, die häufig dazu führen, dass Benutzer auf Probleme stoßen, die oft nicht schnell gelöst werden können.

Als Reaktion auf die oben genannten Probleme haben wir verschiedene Funktionen entwickelt, um Benutzeranforderungen schnell zu erfüllen.

  1. Multiprotokoll-Unterstützung : Das erste, was eingeführt werden muss, ist, dass Hertz den nahtlosen Wechsel mehrerer Protokolle unterstützen kann. Derzeit unterstützen einige Open-Source-Frameworks bereits das h2/h3-Protokoll, basierend auf den Erweiterungsmöglichkeiten der Hertz-Protokollschicht , wir haben die Implementierung von http2/http3 abgeschlossen und unter hertz-contrib gestellt. Die Verwendung ist sehr einfach, Sie müssen lediglich das entsprechende Protokoll auf der Hertz-Engine registrieren. Die Unterstützung für das http3-Protokoll ist ebenfalls ähnlich, wir müssen jedoch die Transportschicht als Transportschicht des von Hertz erweiterten Quic-Protokolls angeben. Die anderen Vorgänge sind die gleichen wie bei http2.

  1. Entführung von Antwortschreibern : Als Nächstes möchte ich Ihnen die Funktion zur Entführung von Antwortschreibern vorstellen. Bevor wir das Writer-Hijacking einführen, wollen wir über den Prozess des Lesens und Schreibens von Nachrichten durch Hertz sprechen (der Zahlenteil in der Abbildung liest und analysiert zuerst die Daten in der Verbindung und führt dann den Routenabgleich, die Geschäftslogikverarbeitung und die Erstellung einer Antwort durch). Warten Sie, bis diese Aufgaben abgeschlossen sind, und sendet das Framework die Daten an den Peer. Dies kann den Benutzerbetrieb vollständig vereinfachen, in einigen Szenarien gibt es jedoch Probleme. Erstens können Benutzer den Zeitpunkt des tatsächlichen Flushs an den Peer nicht steuern. Daher müssen Benutzer in einigen Szenarien, in denen Daten inkrementell generiert werden, dies tun viele Einschränkungen.

      Aus diesem Grund haben wir die Funktion zum Entführen von Antwortschreibern entwickelt. Basierend auf dem ursprünglichen Prozess zum Schreiben von Antworten unterstützen wir Benutzer dabei, den Antwortschreiber im Geschäftshandler/in der Middleware zu kapern und die Antwortdaten im Voraus an den Peer zurückzusenden, um flexiblere Schreibanforderungen zu erhalten. Weg. Wir haben Funktionen wie Handler Flush, SSE und Streaming von Gzip basierend auf den Funktionen von Response Writer implementiert und freuen uns auf Ihre Beiträge zu weiteren Funktionen.

  1. Rekonstruktion der Parameterbindung: Nachdem wir das Writer-Hijacking vorgestellt haben, stellen wir Ihnen eine wichtige Funktion vor: die Parameterbindung. Vor der Rekonstruktion war die Parameterbindung von Hertz auf Implementierungen von Drittanbietern angewiesen, was die folgenden Probleme verursachte:

      Um diese Probleme zu lösen, haben wir die Parameterbindungsfähigkeit rekonstruiert und ihre Implementierung als wichtige Implementierung unserer Anwendungsschicht in Hertz eingefügt. Nach der Rekonstruktion werden dieselben Bindungsregeln und Verwendungsmethoden wie zuvor unterstützt und die Leistung wird verbessert völlig besser als vorher. Darüber hinaus unterstützt es auch benutzerdefinierte Bindemittel und Validatoren, um Benutzern die Verwendung ihrer vertrauten Syntax zu erleichtern. Darüber hinaus konsolidieren wir alle Konfigurationen in einer Struktur und injizieren diese in Form von withOption in die Hertz-Engine.

    1. Da sich Benutzer auf die Implementierung durch Dritte verlassen, müssen sie sich für ihre Bedürfnisse an Entwickler wenden

    2. Es stehen weniger Schnittstellen zur Verfügung, und Studierende, die migrieren, erhöhen ihre Lernkosten.

    3. Die Leistung ist schlecht. Die vorherige Implementierung ist an das Speichermodell der Standard-HTTP-Bibliothek angepasst und erfordert eine weitere Konvertierung .

Die oben genannten drei sind die wichtigsten Merkmale von Hertz im Hinblick auf die Benutzerfreundlichkeit.

 

03

Ökologisches Bauen

Als nächstes stelle ich Ihnen das ökologische Bauen rund um Hertz vor.

Derzeit stellen wir jedem einige gemeinsame Funktionen in Form von Middleware zur Verfügung, sodass sich Entwickler besser auf die Geschäftslogik konzentrieren können und nur Middleware aufrufen müssen, um diese gemeinsamen Funktionen zu nutzen. Bisher haben wir mehr als 20 Middleware-Erweiterungen bereitgestellt, darunter Authentifizierung/Autorisierung, Sicherheit, Leistung, allgemeine HTTP-Funktionen, Erweiterungsfunktionen für Governance-Beobachtung usw., die grundsätzlich die meisten Geschäftsanforderungen erfüllen können.

Selbstverständlich werden wir weiterhin in den Aufbau dieser Middleware-Ökosysteme investieren und jeder ist herzlich willkommen, sich an der Entwicklung unserer Community zu beteiligen.

 

04

Gerüstoptimierung

Lassen Sie mich im Folgenden die Optimierung von Gerüstwerkzeugen vorstellen.

Hz

Als es Open Source war, bot das Gerüst-Tool hz von Hertz bereits die Möglichkeit, Server basierend auf IDL zu generieren, das heißt, wir haben die Teile 3, 4 und 5 in der Abbildung unterstützt. Derzeit können Routing-Registrierung und Handler-Codes automatisch generiert werden Zur Schnittstellendefinition von IDL und anderen Funktionen müssen wir jedoch auch die clientseitige Generierungsarbeit abschließen, was in der Abbildung den Prozess 1, 2 und 6 darstellt, sodass hz die Fähigkeit dazu unterstützt Generieren Sie Client-Code, nachdem er Open Source ist.

Der Hauptzweck der Client-Generierung besteht darin, eine Reihe fester Vorgänge wie die Initialisierung des Hertz-Clients und das Senden von Anforderungen zu blockieren, Benutzern die Möglichkeit zu geben, HTTP-Anforderungen mit einem Klick zu senden und direkt mit dem von hz generierten Server zu kommunizieren.

CWGO

Als nächstes werde ich ein weiteres Tool vorstellen, cwgo. cwgo ist ein einheitliches Tool, das wir für das CloudWeGo Golang-Framework eingeführt haben.

Wie Sie im Bild unten sehen können, verfügt CloudWeGo über mehrere Code-Generierungstools unter Golang. Obwohl unsere Kitex- und Hertz-Tools eine Kapselungsebene bereitgestellt haben, unterscheidet sich ihre Verwendung immer noch geringfügig, was zu hohen Lernkosten für Benutzer führt. Dieses Problem ist genau eines der Probleme, die cwgo lösen möchte.

Darüber hinaus steht das Go-Projekt in der CloudWeGo-Community derzeit vor folgenden Problemen:

  1. Die API-Verwaltungsfunktionen sind relativ schwach und können während des gesamten Geschäftsentwicklungsiterationsprozesses als Schnittstellenbeschreibungs-/Definitionstool verwendet werden. Allerdings verfügt CloudWeGo derzeit nicht über einen klaren praktischen Plan für die Verbindung mit Unternehmensbenutzern Die Geschäftsseite muss sich grundsätzlich auf die IDL-API-bezogene Verwaltung konzentrieren

  2. Jede Komponente ist relativ unabhängig und kann bei gemeinsamer Verwendung nicht nahtlos funktionieren.

  3. Fehlen einer gemeinsamen Codegenerierung und -konfiguration für Unit-Tests, DB usw.

Da die Anzahl der Open-Source-Komponenten von CloudWeGo in Zukunft weiter zunimmt, wird die fragmentierte Benutzererfahrung weiter fragmentieren. Deshalb haben wir das CloudWeGo-All-in-One-Tool cwgo veröffentlicht, mit dem Ziel, die oben genannten Probleme aus globaler Sicht zu lösen. Stellen Sie ein einfacheres und benutzerfreundlicheres Formular zur Generierung und Verwaltung von Microservices bereit.

Lassen Sie uns einige Funktionen von cwgo vorstellen

  1. cwgo integriert die Funktionen des hz/kitex-Gerüsts, abstrahiert und vereinfacht ihre Befehle und zeigt sie einheitlich im cwgo-Tool an. Außerdem werden die generierten Strukturen, Anmerkungen, Validatoren und andere Funktionen geöffnet Bieten Sie Benutzern eine einheitliche Erfahrung bei der Codegenerierung

  2. Interaktive Befehlszeile, diese Funktion ist für Einsteiger gedacht. Sie generiert Zielcode für Benutzer in interaktiver Form, wodurch die Lernkosten erheblich gesenkt werden. Benutzer können die Generierung von Microservices mit nur wenigen Klicks abschließen.

  3. Wir werden MVC-Vorlagen generieren, die den Anforderungen von Unternehmen besser entsprechen, wie im Bild rechts gezeigt, um die schnelle Entwicklung und Implementierung von Unternehmen zu unterstützen und zukünftige Iterationen und Wartung zu erleichtern. Darüber hinaus unterstützt cwgo benutzerdefinierte Vorlagen, Vorlagen-Hosting und Weitere Funktionen erleichtern die vollständige Verwaltung und den schnellen Austausch von Vorlagen.

  4. Wir stellen auf cwgo ein neues Microservice-Bereitstellungsformular zur Verfügung, das derzeit als Hex-Plan bezeichnet wird, was die Abkürzung für Hertz und Kitex ist. Das Ziel des Hex-Plans besteht darin, Mikrodiensten die gleichzeitige Überwachung von HTTP/RPC-Anfragen auf demselben Port zu ermöglichen, eine Anfrageverteilung ohne Overhead auf Basis von Protokoll-Sniffing zu erreichen und Anfragen zur Verarbeitung an Hertz und Kitex zu verteilen. Dies kann die vielen Kompromisse in Bezug auf F&E-Effizienz, Komplexität und Leistung lösen, wenn Unternehmen HTTP-API-Schnittstellen für RPC-Dienste bereitstellen müssen. Derzeit wurde diese Funktion offiziell in cwgo veröffentlicht und kann von jedem auf Anfrage genutzt werden.

 

05

Optimierung der Benutzererfahrung

Dokumentenoptimierung : Seit Open Source haben Projekte unter CloudWeGo immer auf Dokumentprobleme geachtet, aber jedes Mal, wenn ein Problem auftritt, wird es irgendwo behoben und das Problem kann nicht umfassend gelöst werden.

Aus diesem Grund haben wir am CCF GLCC-Projekt teilgenommen und ein spezielles Dokumentoptimierungsprojekt gestartet. In diesem speziellen Projekt haben wir hauptsächlich die folgenden Arbeiten durchgeführt:

  1. Erleben Sie das Dokument umfassend, einschließlich Code, Bildern, Inhalt usw., und zeichnen Sie damit verbundene Probleme auf

  2. Basierend auf den erfassten damit verbundenen Problemen verfügen wir über spezielles Personal, das die Dokumente optimiert, einige Probleme wie verwirrende Logik und unklare Beschreibungen löst und sich auf die Optimierung häufig verwendeter Dokumente wie Tutorials für Neueinsteiger und Hertz-Kernfunktionen konzentriert. Laut Rückmeldungen können mit der optimierten Dokumentation bereits grundsätzlich alle gängigen Probleme gelöst werden.

  3. Darüber hinaus haben wir auch einheitliche Anpassungen am Dokumentformat und der Verzeichnisstruktur vorgenommen, um ein besseres visuelles Erlebnis zu bieten.

Derzeit wird dieses Optimierungsprojekt im Rahmen anderer CloudWeGo-Projekte durchgeführt. Wir freuen uns über jeden, der uns Feedback zu Dokumentenproblemen gibt.

Beispielcodebibliothek : Zweitens stellen wir eine umfangreiche Beispielcodebibliothek zur Verfügung.

Derzeit stellen wir Hertz-Example- und Kitex-Example-Codebibliotheken bereit, die ausführbare Anwendungsbeispiele aller häufig verwendeten Funktionen enthalten und regelmäßig aktualisiert und gepflegt werden.

Damit Unternehmen das CloudWeGo-Projekt schneller nutzen können, haben wir mehrere Demos realer Szenarien bereitgestellt. Derzeit werden die folgenden Geschäftscodes mit Hertz und Kitex entwickelt Auf dieser Basis können Sie Ihre Geschäftslogik erweitern, um den schnellen Start des Geschäfts abzuschließen.

  1. Bookinfo : Implementieren Sie IstioBookinfo erneut mit Hertz+Kitex

  2. Easy Note : Implementieren Sie einen Notizdienst mithilfe der Mikroservices von Hertz+Kitex

  3. Buchladen : Nutzen Sie Hertz+Kitex zur Umsetzung eines E-Commerce-Beispiels

  4. Offene Zahlungsplattform : Nutzen Sie Hertz+Kitex, um eine offene Zahlungsplattform zu implementieren, die mehrere Händler unterstützt

CSG-Aktivitäten : Wir veranstalten auch regelmäßig CSG-Aktivitäten, um Entwicklern zu helfen, den Quellcode zu verstehen und das Framework optimal zu nutzen.

Bisher fanden fünf Mal CSG-Veranstaltungen statt, bei denen viele Quellcodes und Best Practices des Hertz/Kitex/Volo-Frameworks vorgestellt wurden, um Entwicklern ein besseres Verständnis und eine bessere Nutzung des Frameworks zu ermöglichen. Sie können Einführungen in die Issues und Wiederholungen früherer Aktivitäten in den Issues im Cloudwego/Community Warehouse ansehen.

 

06

Ausblick

 

Wir werden auch in Zukunft weiter in die Benutzerfreundlichkeit von Cloudwego investieren und diese verbessern, um den Benutzern ein besseres F&E-Erlebnis zu bieten.

  • Universeller F&E-Prozess: Stellen Sie Benutzern eine Reihe von F&E-Prozessen auf Unternehmensebene zur Verfügung, die direkt verwendet werden können, und arbeiten Sie mit verschiedenen Frameworks zusammen, um den gesamten Prozess der effizienten Geschäftsentwicklung abzuschließen.

    • API-Verwaltung aus einer Hand: Vereinheitlichen Sie die API-Verwaltungsmethode des CloudWeGo-Projekts und schließen Sie den gesamten Prozess der Beschreibung, Entwicklung und Prüfung aus einer Hand ab

    • Verteilte IDL-Verwaltung: IDL-Produkte und Geschäftscodes werden separat verwaltet, um die Wartungskosten zu senken.

  • CWGO x LLM: Bereitstellung intelligenterer Assistenzfunktionen auf Basis von LLM

    • Intelligente Codegenerierung: Fügen Sie eine Geschäftsbeschreibung in IDL hinzu und kombinieren Sie LLM, um beim Generieren von Code die Geschäftscodelogik auszufüllen

    • Dokumentenautomatisierung: automatisches Schreiben von Dokumenten, Optimierung, Übersetzung, Fehlerkorrektur usw.

 


Projektadresse

GitHub: https://github.com/cloudwego

Offizielle Website: www.cloudwego.io

 

Die Raubkopien von „Celebrating More Than Years 2“ wurden auf npm hochgeladen, was dazu führte, dass npmmirror den Unpkg-Dienst einstellen musste und sich gemeinsam mit Hunderten von Menschen in die USA begab Front-End-Visualisierungsbibliothek und Baidus bekanntes Open-Source-Projekt ECharts – „Going to the Sea“ zur Unterstützung Fischbetrüger nutzten TeamViewer, um 3,98 Millionen zu überweisen! Was sollten Remote-Desktop-Anbieter tun? Zhou Hongyi: Für Google bleibt nicht mehr viel Zeit. Es wird empfohlen, dass alle Produkte Open Source sind. Ein ehemaliger Mitarbeiter eines bekannten Open-Source-Unternehmens brachte die Nachricht: Nachdem er von seinen Untergebenen herausgefordert wurde, wurde der technische Leiter wütend hat die schwangere Mitarbeiterin entlassen. Google hat gezeigt, wie man ChromeOS in einer virtuellen Android-Maschine ausführt. Bitte geben Sie mir einen Rat, welche Rolle time.sleep(6) hier spielt. Microsoft reagiert auf Gerüchte, dass Chinas KI-Team „für die USA packt“. People's Daily Online kommentiert die matroschkaartige Aufladung von Bürosoftware: Nur durch das aktive Lösen von „Sets“ können wir eine Zukunft haben
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/4843764/blog/10332618
Empfohlen
Rangfolge