Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind Microservices in Golang?

Was sind Microservices in Golang?

青灯夜游
青灯夜游Original
2023-01-03 10:11:544374Durchsuche

In Golang handelt es sich bei Microservices (oder Microservice-Architektur) um einen Software-Architekturstil (Technologie), der die Aufteilung einer einzelnen Anwendung in eine Reihe kleiner Dienste befürwortet. Die Dienste koordinieren und kooperieren miteinander, um Benutzern den ultimativen Mehrwert zu bieten. Jeder Dienst läuft in seinem eigenen unabhängigen Prozess und die Dienste kommunizieren untereinander über einen einfachen Kommunikationsmechanismus (normalerweise eine RESTful-API auf Basis von HTTP). Jeder Dienst ist um ein bestimmtes Unternehmen herum aufgebaut und kann unabhängig, produktionsähnlich, in der Produktionsumgebung bereitgestellt werden Umgebung usw.

Was sind Microservices in Golang?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Was sind Microservices?

Microservices-Architektur ist ein Software-Architekturstil, eine Variante des Service-Oriented Architecture (SOA)-Architekturstils, der die Aufteilung einer einzelnen Anwendung in eine Gruppe befürwortet. Kleine Dienste koordinieren und kooperieren miteinander um Benutzern den ultimativen Mehrwert zu bieten. Jeder Dienst läuft in seinem eigenen unabhängigen Prozess und die Dienste kommunizieren untereinander über einen einfachen Kommunikationsmechanismus (normalerweise eine RESTful-API basierend auf HTTP). Jeder Dienst basiert auf bestimmten Unternehmen und kann unabhängig in Produktionsumgebungen, produktionsähnlichen Umgebungen usw. bereitgestellt werden. Darüber hinaus sollte ein einheitlicher und zentralisierter Dienstverwaltungsmechanismus so weit wie möglich vermieden werden. Für einen bestimmten Dienst sollten geeignete Sprachen und Tools ausgewählt werden, um ihn basierend auf dem Kontext aufzubauen.

Microservices (oder Microservices-Architektur) ist ein Cloud-nativer Architekturansatz, bei dem eine einzelne Anwendung aus vielen kleineren Komponenten oder Diensten besteht, die lose gekoppelt und unabhängig voneinander einsetzbar sind. Diese Dienste

  • haben ihre eigenen Stacks, einschließlich Datenbanken und Datenmodellen

  • kommunizieren miteinander über eine Kombination aus REST-APIs, Ereignisströmen und Nachrichtenbrokern

  • Sie sind nach Geschäftsfunktionen organisiert Die Trennung von Diensten wird oft als begrenzter Kontext bezeichnet.

Während sich viele Diskussionen über Microservices um Architekturdefinitionen und -merkmale drehen, lässt sich ihr Wert allgemeiner anhand eines relativ einfachen geschäftlichen und organisatorischen Vorteils verstehen:

  • Code kann einfacher aktualisiert werden.

  • Teams können unterschiedliche Stapel für unterschiedliche Komponenten verwenden.

  • Komponenten können unabhängig voneinander skaliert werden, wodurch der Aufwand und die Kosten für die Skalierung der gesamten Anwendung reduziert werden, da eine einzelne Funktion möglicherweise einer übermäßigen Belastung ausgesetzt ist.

Warum nutzen wir Microservices?

Diese Architektur hilft uns, die gesamte Anwendung in Teilen und kleinen Modulen zu beschreiben, wodurch sie einfacher zu verstehen, zu entwickeln und zu testen ist und uns hilft, jeden Dienst als unabhängig zu behandeln und seinen Zweck klar anzugeben. Darüber hinaus trägt es dazu bei, die Konsistenz der Projektarchitektur aufrechtzuerhalten (es gibt kaum Unterschiede zwischen der ursprünglich entworfenen Architektur und der tatsächlich entwickelten Architektur). Darüber hinaus können Dienste bereitgestellt und erweitert werden, indem verschiedene unabhängige Teams eingerichtet werden, sodass sich jedes Team parallel weiterentwickeln kann. Das Refactoring von Code ist in dieser Architektur einfacher. Es unterstützt auch kontinuierliche Bereitstellungs- und Bereitstellungsprozesse (CI/CD).

Warum Go zum Erstellen von Microservices verwenden?

Bevor wir uns mit diesem Thema befassen. Lassen Sie mich zunächst über die Vorteile von Golang sprechen. Obwohl Golang eine neue Sprache ist, hat sie im Vergleich zu anderen Sprachen viele Vorteile. In Golang geschriebene Programme sind robuster. Sie sind in der Lage, der hohen Belastung standzuhalten, die Programme mithilfe laufender Dienste aufbauen. Golang eignet sich eher für Multiprozessorsysteme und Webanwendungen. Darüber hinaus lässt es sich problemlos in GitHub integrieren, um dezentrale Codepakete zu verwalten. Der Nutzen der Microservice-Architektur zeigt sich vor allem dann, wenn das Programm skalierbar sein muss. Wenn es eine Sprache gibt, die vollständig standardkonform ist, dann ist es Golang. Der Grund dafür ist, dass es von der C-Familie der Programmiersprachen erbt und in Golang geschriebene Komponenten einfacher mit Komponenten kombiniert werden können, die in anderen Sprachen derselben Familie geschrieben wurden.

Obwohl Go aus der C-Familie stammt, ist es effizienter als C/C++. Es hat eine einfachere Syntax, ähnlich wie Python. Seine Syntax ist stabil und hat sich seit der ersten öffentlichen Veröffentlichung kaum verändert, was bedeutet, dass es abwärtskompatibel ist. Dadurch hat Golang im Vergleich zu anderen Sprachen die Oberhand. Darüber hinaus ist die Leistung von Golang viel höher als die von Python und Java. Das Tüpfelchen auf dem i ist, dass es so einfach wie C/C++ und gleichzeitig leicht zu lesen und zu verstehen ist, was es zu einer hervorragenden Wahl für die Entwicklung von Microservice-Anwendungen macht.

Microservice-Architektur-Framework in Golang

Im Folgenden besprechen wir die Frameworks, die für die Microservice-Architektur verwendet werden können. Es gibt folgende Frameworks:

Go Micro

Go Micro ist das beliebteste RPC-Framework, das mir bisher begegnet ist. Es handelt sich um ein steckbares RPC-Framework. Go Micro bietet uns die folgenden Funktionen:

  • Service Discovery: Programme registrieren sich automatisch beim Service Discovery-System

  • Load Balancing: Es bietet clientseitigen Lastausgleich, der dabei hilft, Anfragen zwischen Service-Instanzen auszugleichen

  • Synchronische Kommunikation: Bietet Anforderungs-/Antwort-Transportschicht

  • Asynchrone Kommunikation: Verfügt über integrierte Veröffentlichungs- und Abonnementfunktionen

  • Nachrichtenkodierung: Sie können den Content-Type im Header zum Kodieren und Dekodieren verwenden

  • RPC-Client-End-/Serverseite: Nutzen Sie die oben genannten Funktionen und stellen Sie die Schnittstellen bereit, die zum Aufbau von Microservices erforderlich sind.

Die Go-Micro-Architektur besteht aus drei Schichten. Die erste Abstraktionsebene ist die Serviceschicht. Die zweite Schicht ist die Client-Server-Modellschicht. Der Server besteht aus Blöcken zum Schreiben von Diensten, während der Client uns eine Schnittstelle zur Verfügung stellt, deren einziger Zweck darin besteht, Anfragen an im Servermodell geschriebene Dienste zu stellen.

Die dritte Ebene verfügt über die folgenden Arten von Plug-Ins:

  • Broker: Stellt eine Schnittstelle für Nachrichtenbroker (Message Broker) in der asynchronen Kommunikation bereit.

  • Codec: Wird zum Verschlüsseln oder Entschlüsseln von Nachrichten verwendet.

  • Registrierung : Bietet Dienste Suchfunktion

  • Selektor: Lastausgleich basiert auf Register

  • Transport: Transport ist eine Kommunikationsschnittstelle für synchrone Anfragen/Antworten zwischen Diensten

Es bietet auch eine Funktion namens Sidecar. Mit Sidecar können Sie Dienste integrieren, die in anderen Sprachen als Go geschrieben sind. Es bietet uns auch gRPC-Kodierung/-Dekodierung, Dienstregistrierung und HTTP-Anfrageverarbeitung.

GO Kit

Go Kit ist ein Programmier-Toolkit zum Erstellen von Microservices. Im Gegensatz zu Go Micro handelt es sich um eine Bibliothek, die als Binärpaket importiert werden kann. Die Go-Kit-Regeln sind einfach. Wie folgt:

  • Keine globalen Variablen

  • Deklarative Zusammensetzung

  • Explizite Abhängigkeiten

  • Schnittstelle als Verträge (Schnittstellenverträge)

  • Domain Driven Design (DDD)

Go Kit The Folgende Codepakete werden bereitgestellt:

  • Authentifizierung Authentifizierung: BasicAuth und JWT

  • Transportprotokoll: HTTP, gRPC usw.

  • Protokollierung Protokollierung: Strukturierte Protokollierungsschnittstelle im Dienst

  • Metriken: CloudWatch, Statsd, Graphite und andere Die Die Servicearchitektur von Go Kit sieht wie folgt aus: Gizmo: Gizmo ist ein Microservice-Toolkit der New York Times. Es stellt Pakete bereit, die den Server-Daemon und den Pubsub-Daemon zusammenbringen. Es stellt die folgenden Pakete bereit:

  • Server: Stellt zwei Serverimplementierungen bereit: SimpleServer (HTTP) und RPCServer (gRPC)

  • Server/Kit: Experimentelles Codepaket basierend auf Go Kit

  • Config-Konfiguration: Enthält Konfiguration Funktionen aus JSON-Dateien, JSON-Blobs in Consul k/v oder Umgebungsvariablen

Pubsub: Bietet eine gemeinsame Schnittstelle zum Veröffentlichen und Konsumieren von Daten aus der Warteschlange

Pubsub/pubsubtest: Enthält Herausgeber und Abonnements. Getestete Implementierung des Anbieters Schnittstelle

    Web: Externe Funktionen zum Parsen von Typen aus Anforderungsabfragen und Nutzlasten
  • Pubsub-Paket bietet Schnittstellen für die Handhabung der folgenden Warteschlangen:
  • pubsub/aws: für Amazon SNS /SQS
  • pubsub/ gcp: für Google Pubsub
  • pubsub/kafka: für Kafka-Themen
  • pubsub/http: Benutzer-HTTP-Push
  • Meiner Meinung nach stellt Gizmo also Between Go Micro und Go Kit vor. Es ist keine komplette Blackbox wie das Go Micro. Gleichzeitig ist es nicht so primitiv wie Go Kit. Es stellt höherstufige Baukomponenten wie Konfigurations- und Pubsub-Pakete bereit.

Kite
  • Kite ist ein Framework für die Entwicklung von Microservices in Go. Es macht RPC-Client- und Server-seitige Codepakete verfügbar. Der erstellte Dienst wird automatisch beim Diensterkennungssystem Kontrol registriert. Kontrol ist in Kite geschrieben und selbst ein Kite-Dienst. Das bedeutet, dass Kite-Microservices in ihrer eigenen Umgebung gut funktionieren. Wenn Sie Ihre Kite-Microservices mit einem anderen Service-Discovery-System verbinden müssen, ist eine Anpassung erforderlich. Dies ist einer der wichtigen Gründe, warum ich Kite aus der Liste ausgewählt und beschlossen habe, dieses Framework nicht einzuführen

  • [Verwandte Empfehlungen:
  • Go-Video-Tutorial

    ,

    Programmierunterricht
  • ]

Das obige ist der detaillierte Inhalt vonWas sind Microservices in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn