Go-zero ialah rangka kerja bahasa Go yang sangat baik yang menyediakan set penyelesaian lengkap, termasuk RPC, caching, tugas berjadual dan fungsi lain. Sebenarnya, sangat mudah untuk membina perkhidmatan berprestasi tinggi menggunakan go-zero, malah anda boleh pergi dari pemula kepada mahir dalam beberapa jam.
Artikel ini bertujuan untuk memperkenalkan proses membina perkhidmatan berprestasi tinggi menggunakan rangka kerja go-zero dan membantu pembaca memahami dengan cepat konsep teras rangka kerja tersebut.
1. Pemasangan dan konfigurasi
Sebelum mula menggunakan go-zero, kami perlu memasangnya dan mengkonfigurasi beberapa persekitaran yang diperlukan.
1. Pemasangan
Memasang go-zero adalah sangat mudah, cuma jalankan arahan berikut:
$ go get -u github.com/tal-tech/go-zero
Ini akan memuat turun versi terbaharu go-zero daripada GitHub . Walau bagaimanapun, perlu diingatkan bahawa disyorkan untuk menggunakan Go 1.13 dan ke atas.
2. Konfigurasi
Sebelum menggunakan go-zero, kita perlu mengkonfigurasi beberapa persekitaran yang diperlukan untuknya. Khususnya, kita perlu memasang alat baris arahan goctl untuk menggunakan go-zero untuk mencipta perkhidmatan.
$ GO111MODULE=on go get -u github.com/tal-tech/go-zero/tools/goctl
3. Cipta projek
Seterusnya, kita perlu menggunakan goctl untuk mencipta projek baharu. Kami menganggap bahawa projek itu dinamakan blog dan boleh dibuat dengan arahan berikut:
$ mkdir blog $ cd blog $ go mod init blog $ goctl api new blog
Perintah di atas akan mencipta projek API baharu dan menjana beberapa fail dan direktori yang diperlukan.
2. Buat perkhidmatan
Seterusnya, kita boleh menggunakan go-zero untuk mencipta perkhidmatan baharu. Kami menganggap bahawa nama perkhidmatan ialah perkhidmatan pengguna, yang boleh dibuat melalui langkah berikut:
1 Jana perkhidmatan
Gunakan goctl untuk menjana kod perkhidmatan perkhidmatan pengguna: <🎜. >
$ goctl api go -api user.api -dir .
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) } }
func (s *Service) InitHandlers() { s.UserHandler = http.HandlerFunc(handler.UserHandler(s.Context)) }
$ goctl api template -o app.go
$ goctl model mysql datasource "root:123456@tcp(127.0.0.1:3306)/test" -table user -dir .
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 }
rreee
Kemudian. , dalam Untuk menggunakan kod etcd, gunakan fungsi clientv3.New untuk mencipta klien etcd baharu.[etcd] host = "localhost:2379"
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) }
[redis] host = "localhost:6379" password = "" db = 0
要使用ZooKeeper,我们需要在配置文件中添加以下信息:
[zookeeper] host = "localhost:2181"
然后,在要使用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) }
上述代码将创建一个名为conn的ZooKeeper客户端,它将使用localhost:2181作为ZooKeeper服务器的地址。
五、总结
到目前为止,我们已经深入了解了go-zero框架,并学到了如何使用它来构建高性能服务。
总结一下,要使用go-zero,请先安装和配置相关环境,然后创建一个新的项目,通过goctl命令行工具自动生成模板代码和配置文件。
接着,可以使用go-zero提供的各种功能和服务来逐步完善和扩展我们的应用程序,如集成数据库、ETCD、Redis等。
将go-zero框架用于您的下一个项目吧,它将使您能够构建出更加灵活、高效和可靠的服务!
Atas ialah kandungan terperinci Dari kemasukan kepada kemahiran: Menguasai rangka kerja go-zero. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!