Dengan pembangunan seni bina perkhidmatan mikro, pendaftaran dan penemuan perkhidmatan menjadi semakin penting. Untuk bahasa Go, disebabkan kecekapan tinggi dan prestasi konkurensi yang sangat baik, ia menjadi semakin popular sebagai bahasa pembangunan untuk perkhidmatan mikro. Artikel ini akan memperkenalkan cara mendaftar dan menemui perkhidmatan dalam bahasa Go.
Pendaftaran dan penemuan perkhidmatan bermakna penyedia perkhidmatan mendaftarkan perkhidmatannya ke pusat pendaftaran perkhidmatan, dan pengguna perkhidmatan mendapatkan senarai perkhidmatan yang tersedia daripada pusat pendaftaran dan menghubungi perkhidmatan yang sepadan. Pendaftaran perkhidmatan boleh menjadi proses bebas atau kelompok bebas yang digunakan untuk menyimpan maklumat pembekal perkhidmatan.
Tujuan utama pendaftaran dan penemuan perkhidmatan adalah untuk memudahkan penggunaan perkhidmatan dan tadbir urus dalam seni bina perkhidmatan mikro.
Consul ialah alat penemuan dan konfigurasi perkhidmatan sumber terbuka yang dibangunkan oleh HashiCorp dan menyokong berbilang platform dan bahasa, termasuk bahasa Go . Di bawah ini kami akan menggunakan Konsul sebagai pusat pendaftaran perkhidmatan untuk memperkenalkan cara mendaftar dan menemui perkhidmatan dalam bahasa Go.
2.1 Pasang Consul
Mula-mula anda perlu memasang Consul Anda boleh memuat turun versi yang sepadan dari tapak web rasminya dan memasangnya.
2.2 Menulis kod pembekal perkhidmatan
Kami perlu menambah beberapa kandungan pada kod pembekal perkhidmatan untuk pendaftaran perkhidmatan, menggunakan fungsi pendaftaran perkhidmatan dan penemuan yang disediakan oleh perpustakaan go-micro.
package main import ( "log" "github.com/micro/go-micro" "github.com/micro/go-micro/server" "github.com/micro/go-plugins/registry/consul" "proto/hello" ) func main() { service := micro.NewService( micro.Name("hello_service"), micro.Registry(consul.NewRegistry()), ) service.Init() err := hello.RegisterHelloHandler(service.Server(), new(HelloHandler)) if err != nil { log.Fatal(err) } if err := service.Run(); err != nil { log.Fatal(err) } } type HelloHandler struct{} func (s *HelloHandler) SayHello(ctx context.Context, req *hello.Request, rsp *hello.Response) error { rsp.Msg = "Hello, " + req.Name return nil }
Dalam kod di atas, kami menggunakan pustaka go-micro untuk mencipta contoh perkhidmatan dan menentukan komponen penemuan perkhidmatan yang digunakannya sebagai Konsul. Selepas perkhidmatan didaftarkan, kami menambah perkhidmatan kami pada pelayan contoh perkhidmatan melalui fungsi RegisterHelloHandler() untuk mengendalikan permintaan daripada pelanggan.
2.3 Menulis kod pengguna perkhidmatan
Kami perlu menambah beberapa kandungan pada kod pengguna perkhidmatan untuk penemuan perkhidmatan, menggunakan fungsi penemuan perkhidmatan yang disediakan oleh perpustakaan go-micro.
package main import ( "context" "fmt" "github.com/micro/go-micro" "github.com/micro/go-micro/client" "github.com/micro/go-plugins/registry/consul" "proto/hello" ) func main() { service := micro.NewService( micro.Name("hello_client"), micro.Registry(consul.NewRegistry()), ) service.Init() client := service.Client() helloService := hello.NewHelloService("hello_service", client) rsp, err := helloService.SayHello(context.Background(), &hello.Request{Name: "user"}) if err != nil { fmt.Println(err) return } fmt.Println(rsp.Msg) }
Dalam kod di atas, kami menggunakan pustaka go-micro untuk mencipta contoh perkhidmatan, dan juga menentukan komponen penemuan perkhidmatan yang digunakannya sebagai Konsul. Kami menggunakan nama perkhidmatan "hello_service" untuk mendapatkan alamat perkhidmatan semasa membuat klien perkhidmatan, dan kemudian menghantar permintaan kepada pembekal perkhidmatan dengan menghubungi kaedah SayHello().
Kelebihan:
Kelemahan:
Dalam seni bina perkhidmatan mikro, pendaftaran dan penemuan perkhidmatan adalah sangat penting. Artikel ini memperkenalkan kod contoh untuk menggunakan Konsul sebagai pusat pendaftaran perkhidmatan dan menganalisis kelebihan dan kekurangan pendaftaran dan penemuan perkhidmatan. Dalam aplikasi praktikal, kami perlu memilih penyelesaian pendaftaran dan penemuan perkhidmatan yang sesuai berdasarkan keperluan perniagaan dan seni bina sistem tertentu, serta membuat pengoptimuman dan pelarasan yang sesuai.
Atas ialah kandungan terperinci Pendaftaran perkhidmatan dan penemuan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!