Heim Backend-Entwicklung Golang Vom Einstieg bis zur Kompetenz: Beherrschung des Go-Zero-Frameworks

Vom Einstieg bis zur Kompetenz: Beherrschung des Go-Zero-Frameworks

Jun 23, 2023 am 11:37 AM
入门 框架 go-zero

Go-Zero ist ein hervorragendes Go-Sprachframework, das einen vollständigen Lösungssatz bietet, einschließlich RPC, Caching, geplante Aufgaben und andere Funktionen. Tatsächlich ist es sehr einfach, mit Go-Zero einen Hochleistungsdienst aufzubauen, und Sie können sogar in wenigen Stunden vom Anfänger zum Experten werden.

Dieser Artikel soll den Prozess der Erstellung leistungsstarker Dienste mithilfe des Go-Zero-Frameworks vorstellen und den Lesern helfen, die Kernkonzepte des Frameworks schnell zu verstehen.

1. Installation und Konfiguration

Bevor wir mit der Verwendung von Go-Zero beginnen, müssen wir es installieren und einige notwendige Umgebungen konfigurieren.

1. Installation

Die Installation von go-zero ist sehr einfach, führen Sie einfach den folgenden Befehl aus:

$ go get -u github.com/tal-tech/go-zero
Nach dem Login kopieren

Dadurch wird automatisch die neueste Version von go-zero von GitHub heruntergeladen. Es ist jedoch zu beachten, dass die Verwendung von Go 1.13 und höher empfohlen wird.

2. Konfiguration

Bevor wir Go-Zero verwenden, müssen wir einige notwendige Umgebungen dafür konfigurieren. Insbesondere müssen wir das Befehlszeilentool goctl installieren, um Go-Zero zum Erstellen von Diensten verwenden zu können.

$ GO111MODULE=on go get -u github.com/tal-tech/go-zero/tools/goctl
Nach dem Login kopieren

3. Projekt erstellen

Als nächstes müssen wir goctl verwenden, um ein neues Projekt zu erstellen. Wir gehen davon aus, dass das Projekt den Namen Blog trägt und mit dem folgenden Befehl erstellt werden kann:

$ mkdir blog
$ cd blog
$ go mod init blog
$ goctl api new blog
Nach dem Login kopieren

Der obige Befehl erstellt ein neues API-Projekt und generiert einige erforderliche Dateien und Verzeichnisse.

2. Einen Dienst erstellen

Als nächstes können wir mit Go-Zero einen neuen Dienst erstellen. Wir gehen davon aus, dass der Dienstname user-service ist, der durch die folgenden Schritte erstellt werden kann:

1 Dienst generieren

Verwenden Sie goctl, um den Dienstcode von user-service zu generieren:

$ goctl api go -api user.api -dir .
Nach dem Login kopieren

Der obige Befehl generiert einen Benutzer Verzeichnis im aktuellen Verzeichnis, das eine Datei namens user.go enthält, die den Dienstcode von user-service enthält.

2. Handler implementieren

Wir müssen auch eine spezifische Geschäftslogik implementieren, nämlich den Handler.

Zuerst müssen wir ein neues Verzeichnis mit dem Namen handler unter dem Benutzerverzeichnis erstellen und darin eine Datei mit dem Namen userhandler.go erstellen. Diese Datei enthält unseren Handler-Code. Der Code von

userhandler.go lautet wie folgt:

package handler

import (
    "net/http"

    "github.com/tal-tech/go-zero/rest/httpx"
    "blog/service/user/api/internal/logic"
    "blog/service/user/api/internal/svc"
)

func userHandler(ctx *svc.ServiceContext) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        req, err := httpx.NewRequest(r)
        if err != nil {
            httpx.WriteError(w, err)
            return
        }

        l := logic.NewUserLogic(r.Context(), ctx)
        resp, err := l.GetUser(req)
        if err != nil {
            httpx.WriteError(w, err)
            return
        }

        httpx.WriteJson(w, resp)
    }
}
Nach dem Login kopieren

Der obige Code verwendet das von go-zero bereitgestellte rest/httpx-Paket, das einige praktische Funktionen wie NewRequest, WriteError und WriteJSON usw. bereitstellt, was den HTTP-Dienst vereinfacht Schreibprozess.

3. Handler registrieren

Jetzt müssen wir das obige Handlerprogramm im Dienst registrieren.

Fügen Sie in der Init-Methode in der Datei user.go den folgenden Code hinzu:

func (s *Service) InitHandlers() {
    s.UserHandler = http.HandlerFunc(handler.UserHandler(s.Context))
}
Nach dem Login kopieren

Der obige Code registriert die userHandler-Funktion als HTTP-Dienst, und wir können auf diesen Dienst zugreifen, indem wir eine Route in der API-Datei definieren.

3. Erstellen Sie eine Vorlage

Wir können über goctl create api eine neue Go-Zero-API generieren, die automatisch einen Ordner mit einigen Initialisierungskonfigurationen erstellt. Wir können unseren eigenen Controller und Dienst entsprechend den Anforderungen von goctl hinzufügen.

Hier erstellen wir eine Vorlagenanwendung, um besser zu lernen, den Quellcode von Go-Zero zu lesen. Die Anwendung enthält ein CRUD-Beispiel, das die Verwendung der allgemeinen Funktionen von Go-Zero demonstriert.

1. Vorlage generieren

Wir können goctl verwenden, um eine Vorlagenanwendung zu generieren, um den Quellcode von Go-Zero besser zu lernen.

$ goctl api template -o app.go
Nach dem Login kopieren

Der obige Befehl erstellt eine Datei namens app.go, die den gesamten Quellcode der Vorlagenanwendung enthält.

2. Datenzugriff implementieren

Wir gehen davon aus, dass MySQL zur Datenspeicherung verwendet wird. Vor dem Start muss MySQL installiert und konfiguriert werden. Auf dieser Basis können wir go-sql verwenden, das von go-zero bereitgestellt wird, um die Datenbankzugriffsschicht aufzubauen.

Konkret können wir goctl verwenden, um den Code der Datenzugriffsschicht zu generieren:

$ goctl model mysql datasource "root:123456@tcp(127.0.0.1:3306)/test" -table user -dir .
Nach dem Login kopieren

Der obige Befehl generiert eine userModel.go-Datei, die das Benutzerdatenmodell für den Datenzugriff enthält.

3. Geschäftslogik implementieren

Als nächstes müssen wir die Geschäftslogik implementieren und sie in Verbindung mit der Datenzugriffsschicht verwenden. Konkret können wir eine Datei namens userLogic.go erstellen, die Geschäftslogik für die Benutzerverwaltung enthält. Der

userLogic.go-Code lautet wie folgt:

package logic

import (
    "context"
    "github.com/tal-tech/go-zero/core/logx"
    "github.com/tal-tech/go-zero/core/stores/sqlx"
    "blog/service/user/model"
    "blog/service/user/api/internal/svc"
    "blog/service/user/api/internal/types"
)

type UserLogic struct {
    ctx context.Context
    svcCtx *svc.ServiceContext
    logx.Logger
}

func NewUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) UserLogic {
    return UserLogic{
        ctx: ctx,
        svcCtx: svcCtx,
        Logger: logx.WithContext(ctx),
    }
}

func (l *UserLogic) GetUser(req types.GetUserRequest) (*types.GetUserResponse, error) {
    //Todo
}
Nach dem Login kopieren

Im obigen Code haben wir die SQLX-, Stores- und LogX-Pakete eingeführt, wobei SQLX Teil des Go-Zero-Frameworks ist und speziell für Datenbankoperationen verwendet wird. Stores ist die Datenspeicherschicht des Go-Zero-Frameworks. Das Logx-Paket ist eine vom Go-Zero-Framework bereitgestellte Protokollierungsbibliothek, die uns bei der Aufzeichnung wichtiger Ereignisse helfen kann.

4. Integrieren Sie ETCD usw.

Mit dem Go-Zero-Framework können wir einige häufig verwendete Tools und Dienste wie ETCD, Redis, ZooKeeper usw. problemlos integrieren. Konkret können wir die von go-zero bereitgestellten relevanten Bibliotheken in den Code importieren und die relevanten Informationen in der Konfigurationsdatei konfigurieren.

Hier sind einige häufig verwendete Integrationsmethoden:

1. ETCD integrieren

Fügen Sie zunächst die folgenden Informationen in die Konfigurationsdatei ein:

[etcd]
host = "localhost:2379"
Nach dem Login kopieren

Verwenden Sie dann in dem Code, in dem Sie ETCD verwenden möchten, die Funktion clientv3.New um einen neuen etcd-Client zu erstellen.

import (
    "go.etcd.io/etcd/clientv3"
)

client, err := clientv3.New(clientv3.Config{
    Endpoints:   []string{"localhost:2379"},
    DialTimeout: 5 * time.Second,
})
if err != nil {
    panic(err)
}
Nach dem Login kopieren

Der obige Code erstellt einen ETCD-Client namens client, der localhost:2379 als Adresse des ETCD-Servers verwendet.

2. Redis integrieren

Um Redis zu verwenden, müssen wir die folgenden Informationen zur Konfigurationsdatei hinzufügen:

[redis]
host = "localhost:6379"
password = ""
db = 0
Nach dem Login kopieren

Dann verwenden Sie in dem Code, in dem Sie Redis verwenden möchten, die Funktion redis.NewClient, um ein neues Redis zu erstellen Kunde.

import (
    "github.com/go-redis/redis"
)

client := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "", // no password set
    DB:       0,  // use default DB
})
Nach dem Login kopieren

Der obige Code erstellt einen neuen Redis-Client, der localhost:6379 als Redis-Serveradresse, kein Passwort und die Standard-Datenbank verwendet.

3. Integrieren Sie ZooKeeper

要使用ZooKeeper,我们需要在配置文件中添加以下信息:

[zookeeper]
host = "localhost:2181"
Nach dem Login kopieren

然后,在要使用ZooKeeper的代码中,使用zk.Connect函数创建一个新的ZooKeeper客户端。

import (
    "github.com/samuel/go-zookeeper/zk"
    "time"
)

conn, _, err := zk.Connect([]string{"localhost:2181"}, time.Second*5)
if err != nil {
    panic(err)
}
Nach dem Login kopieren

上述代码将创建一个名为conn的ZooKeeper客户端,它将使用localhost:2181作为ZooKeeper服务器的地址。

五、总结

到目前为止,我们已经深入了解了go-zero框架,并学到了如何使用它来构建高性能服务。

总结一下,要使用go-zero,请先安装和配置相关环境,然后创建一个新的项目,通过goctl命令行工具自动生成模板代码和配置文件。

接着,可以使用go-zero提供的各种功能和服务来逐步完善和扩展我们的应用程序,如集成数据库、ETCD、Redis等。

将go-zero框架用于您的下一个项目吧,它将使您能够构建出更加灵活、高效和可靠的服务!

Das obige ist der detaillierte Inhalt vonVom Einstieg bis zur Kompetenz: Beherrschung des Go-Zero-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Generieren Sie PPT mit einem Klick! Kimi: Lassen Sie zuerst die „PPT-Wanderarbeiter' populär werden Generieren Sie PPT mit einem Klick! Kimi: Lassen Sie zuerst die „PPT-Wanderarbeiter' populär werden Aug 01, 2024 pm 03:28 PM

Kimi: In nur einem Satz, in nur zehn Sekunden ist ein PPT fertig. PPT ist so nervig! Um ein Meeting abzuhalten, benötigen Sie einen PPT; um einen wöchentlichen Bericht zu schreiben, müssen Sie einen PPT vorlegen, auch wenn Sie jemanden des Betrugs beschuldigen PPT. Das College ähnelt eher dem Studium eines PPT-Hauptfachs. Man schaut sich PPT im Unterricht an und macht PPT nach dem Unterricht. Als Dennis Austin vor 37 Jahren PPT erfand, hatte er vielleicht nicht damit gerechnet, dass PPT eines Tages so weit verbreitet sein würde. Wenn wir über unsere harte Erfahrung bei der Erstellung von PPT sprechen, treiben uns Tränen in die Augen. „Es dauerte drei Monate, ein PPT mit mehr als 20 Seiten zu erstellen, und ich habe es Dutzende Male überarbeitet. Als ich das PPT sah, musste ich mich übergeben.“ war PPT.“ Wenn Sie ein spontanes Meeting haben, sollten Sie es tun

Alle CVPR 2024-Auszeichnungen bekannt gegeben! Fast 10.000 Menschen nahmen offline an der Konferenz teil und ein chinesischer Forscher von Google gewann den Preis für den besten Beitrag Alle CVPR 2024-Auszeichnungen bekannt gegeben! Fast 10.000 Menschen nahmen offline an der Konferenz teil und ein chinesischer Forscher von Google gewann den Preis für den besten Beitrag Jun 20, 2024 pm 05:43 PM

Am frühen Morgen des 20. Juni (Pekinger Zeit) gab CVPR2024, die wichtigste internationale Computer-Vision-Konferenz in Seattle, offiziell die besten Beiträge und andere Auszeichnungen bekannt. In diesem Jahr wurden insgesamt 10 Arbeiten ausgezeichnet, darunter zwei beste Arbeiten und zwei beste studentische Arbeiten. Darüber hinaus gab es zwei Nominierungen für die beste Arbeit und vier Nominierungen für die beste studentische Arbeit. Die Top-Konferenz im Bereich Computer Vision (CV) ist die CVPR, die jedes Jahr zahlreiche Forschungseinrichtungen und Universitäten anzieht. Laut Statistik wurden in diesem Jahr insgesamt 11.532 Arbeiten eingereicht, von denen 2.719 angenommen wurden, was einer Annahmequote von 23,6 % entspricht. Laut der statistischen Analyse der CVPR2024-Daten des Georgia Institute of Technology befassen sich die meisten Arbeiten aus Sicht der Forschungsthemen mit der Bild- und Videosynthese und -generierung (Imageandvideosyn

Von Bare-Metal bis hin zu einem großen Modell mit 70 Milliarden Parametern finden Sie hier ein Tutorial und gebrauchsfertige Skripte Von Bare-Metal bis hin zu einem großen Modell mit 70 Milliarden Parametern finden Sie hier ein Tutorial und gebrauchsfertige Skripte Jul 24, 2024 pm 08:13 PM

Wir wissen, dass LLM auf großen Computerclustern unter Verwendung umfangreicher Daten trainiert wird. Auf dieser Website wurden viele Methoden und Technologien vorgestellt, die den LLM-Trainingsprozess unterstützen und verbessern. Was wir heute teilen möchten, ist ein Artikel, der tief in die zugrunde liegende Technologie eintaucht und vorstellt, wie man einen Haufen „Bare-Metals“ ohne Betriebssystem in einen Computercluster für das LLM-Training verwandelt. Dieser Artikel stammt von Imbue, einem KI-Startup, das allgemeine Intelligenz durch das Verständnis der Denkweise von Maschinen erreichen möchte. Natürlich ist es kein einfacher Prozess, einen Haufen „Bare Metal“ ohne Betriebssystem in einen Computercluster für das Training von LLM zu verwandeln, aber Imbue hat schließlich erfolgreich ein LLM mit 70 Milliarden Parametern trainiert der Prozess akkumuliert

KI im Einsatz |. AI hat einen Lebens-Vlog eines allein lebenden Mädchens erstellt, der innerhalb von drei Tagen Zehntausende Likes erhielt KI im Einsatz |. AI hat einen Lebens-Vlog eines allein lebenden Mädchens erstellt, der innerhalb von drei Tagen Zehntausende Likes erhielt Aug 07, 2024 pm 10:53 PM

Herausgeber des Machine Power Report: Yang Wen Die Welle der künstlichen Intelligenz, repräsentiert durch große Modelle und AIGC, hat unsere Lebens- und Arbeitsweise still und leise verändert, aber die meisten Menschen wissen immer noch nicht, wie sie sie nutzen sollen. Aus diesem Grund haben wir die Kolumne „KI im Einsatz“ ins Leben gerufen, um detailliert vorzustellen, wie KI durch intuitive, interessante und prägnante Anwendungsfälle für künstliche Intelligenz genutzt werden kann, und um das Denken aller anzuregen. Wir heißen Leser auch willkommen, innovative, praktische Anwendungsfälle einzureichen. Videolink: https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ Vor kurzem wurde der Lebens-Vlog eines allein lebenden Mädchens auf Xiaohongshu populär. Eine Animation im Illustrationsstil, gepaart mit ein paar heilenden Worten, kann in nur wenigen Tagen leicht erlernt werden.

Der leitende NVIDIA-Architekt zählt die 12 Schwachstellen von RAG auf und vermittelt Lösungen Der leitende NVIDIA-Architekt zählt die 12 Schwachstellen von RAG auf und vermittelt Lösungen Jul 11, 2024 pm 01:53 PM

Retrieval-Augmented Generation (RAG) ist eine Technik, die Retrieval nutzt, um Sprachmodelle zu verbessern. Bevor ein Sprachmodell eine Antwort generiert, ruft es insbesondere relevante Informationen aus einer umfangreichen Dokumentendatenbank ab und verwendet diese Informationen dann zur Steuerung des Generierungsprozesses. Diese Technologie kann die Genauigkeit und Relevanz von Inhalten erheblich verbessern, das Problem der Halluzinationen wirksam lindern, die Geschwindigkeit der Wissensaktualisierung erhöhen und die Nachverfolgbarkeit der Inhaltsgenerierung verbessern. RAG ist zweifellos einer der spannendsten Bereiche der Forschung im Bereich der künstlichen Intelligenz. Weitere Informationen zu RAG finden Sie im Kolumnenartikel auf dieser Website „Was sind die neuen Entwicklungen bei RAG, das sich darauf spezialisiert hat, die Mängel großer Modelle auszugleichen?“ Diese Rezension erklärt es deutlich. Aber RAG ist nicht perfekt und Benutzer stoßen bei der Verwendung oft auf einige „Problempunkte“. Kürzlich die fortschrittliche generative KI-Lösung von NVIDIA

So bewerten Sie die Kosteneffizienz der kommerziellen Unterstützung für Java-Frameworks So bewerten Sie die Kosteneffizienz der kommerziellen Unterstützung für Java-Frameworks Jun 05, 2024 pm 05:25 PM

Die Bewertung des Kosten-/Leistungsverhältnisses des kommerziellen Supports für ein Java-Framework umfasst die folgenden Schritte: Bestimmen Sie das erforderliche Maß an Sicherheit und Service-Level-Agreement-Garantien (SLA). Die Erfahrung und das Fachwissen des Forschungsunterstützungsteams. Erwägen Sie zusätzliche Services wie Upgrades, Fehlerbehebung und Leistungsoptimierung. Wägen Sie die Kosten für die Geschäftsunterstützung gegen Risikominderung und Effizienzsteigerung ab.

Kuaishou Keling AI ist weltweit vollständig für interne Tests geöffnet und der Modelleffekt wurde erneut verbessert Kuaishou Keling AI ist weltweit vollständig für interne Tests geöffnet und der Modelleffekt wurde erneut verbessert Jul 24, 2024 pm 08:34 PM

Am 24. Juli gab das Kuaishou-Videogenerations-Großmodell Keling AI bekannt, dass das Basismodell erneut aktualisiert wurde und vollständig für interne Tests geöffnet ist. Kuaishou sagte, dass es von nun an auf der Grundlage vollständig offener interner Tests auch offiziell ein Mitgliedschaftssystem für verschiedene Kategorien einführen wird, um mehr Benutzern die Nutzung von Keling AI zu ermöglichen und den unterschiedlichen Nutzungsbedürfnissen von Erstellern besser gerecht zu werden Mitglieder stellen entsprechende exklusive funktionale Dienste bereit. Gleichzeitig wurde auch das Basismodell von Keling AI erneut aktualisiert, um das Benutzererlebnis weiter zu verbessern. Der Grundmodelleffekt wurde verbessert, um das Benutzererlebnis weiter zu verbessern. Seit seiner Veröffentlichung vor mehr als einem Monat wurde Keling AI mehrfach aktualisiert und iteriert. Mit der Einführung dieses Mitgliedschaftssystems wurde der Grundmodelleffekt einmal verbessert erneut einer Wandlung unterzogen. Erstens wurden die Bildqualität und die visuellen Effekte durch das verbesserte Basismodell deutlich verbessert

Wie wirken sich die Lightweight-Optionen von PHP-Frameworks auf die Anwendungsleistung aus? Wie wirken sich die Lightweight-Optionen von PHP-Frameworks auf die Anwendungsleistung aus? Jun 06, 2024 am 10:53 AM

Das leichte PHP-Framework verbessert die Anwendungsleistung durch geringe Größe und geringen Ressourcenverbrauch. Zu seinen Merkmalen gehören: geringe Größe, schneller Start, geringer Speicherverbrauch, verbesserte Reaktionsgeschwindigkeit und Durchsatz sowie reduzierter Ressourcenverbrauch. Praktischer Fall: SlimFramework erstellt eine REST-API, nur 500 KB, hohe Reaktionsfähigkeit und hoher Durchsatz

See all articles