Gunakan Consul untuk melaksanakan pendaftaran dan penemuan perkhidmatan dalam Beego
Consul ialah alat penemuan dan konfigurasi perkhidmatan yang dibangunkan oleh HashiCorp Anda boleh menggunakannya untuk melaksanakan penemuan perkhidmatan, pemeriksaan kesihatan, penghalaan dan fungsi perkhidmatan mikro yang lain. Beego ialah rangka kerja web yang dibangunkan berdasarkan bahasa Go, menyediakan fungsi dan kebolehskalaan yang kaya. Artikel ini akan memperkenalkan cara menggunakan Konsul untuk melaksanakan fungsi pendaftaran perkhidmatan dan penemuan dalam Beego.
Mula-mula anda perlu memasang Consul. Anda boleh memuat turun fail binari Konsul dari tapak web rasmi dan unzipnya, atau anda boleh menggunakan alat pengurusan pakej untuk memasangnya. Berikut ialah arahan untuk memuat turun dan menyahmampat.
Selepas memasang persekitaran bahasa Go dan rangka kerja Beego, anda boleh menggunakan alat baris arahan yang disediakan oleh Beego untuk mencipta projek baharu. Masukkan arahan berikut pada baris arahan:
bee new myproject
dengan myproject
ialah nama projek. Melaksanakan arahan ini akan mencipta projek baharu bernama myproject
dalam direktori semasa.
Untuk memasang alat klien bahasa Go Consul, anda boleh menggunakan arahan berikut:
go get github.com/hashicorp/consul/api
Selepas memperkenalkan Konsul pakej, anda boleh memasangnya dalam API Go Consul digunakan dalam program yang ditulis dalam bahasa.
Buat objek klien Konsul dalam kod dan sambungkan ke pelayan Konsul.
config := api.DefaultConfig() config.Address = "127.0.0.1:8500" // Consul服务器地址 client, err := api.NewClient(config) if err != nil { log.Fatal(err) }
Buat perkhidmatan HTTP dan kemudian daftarkan perkhidmatan dengan Konsul.
service := &api.AgentServiceRegistration{ ID: "beego-service", Name: "beego", Address: "127.0.0.1", Port: 8080, } check := &api.AgentServiceCheck{ HTTP: "http://127.0.0.1:8080/health", Timeout: "3s", Interval: "5s", DeregisterCriticalServiceAfter: "60s", } service.Check = check err = client.Agent().ServiceRegister(service) if err != nil { log.Fatal(err) }
Buat objek service
dalam kod dan tetapkan ID, nama, alamat dan port perkhidmatan. Anda juga boleh menetapkan sifat perkhidmatan lain, seperti label, pengimbangan beban, dsb. check
Objek mewakili pemeriksaan kesihatan perkhidmatan Anda boleh menetapkan protokol HTTP atau TCP, atau anda boleh menyesuaikan fungsi semakan. Akhir sekali, daftar service
dengan pelayan Konsul.
Mendapatkan perkhidmatan daripada pelayan Konsul adalah sangat mudah. Hanya buat objek pertanyaan perkhidmatan dan panggil kaedah Catalog().Service()
.
services, _, err := client.Catalog().Service("beego", "", nil) if err != nil { log.Fatal(err) } for _, service := range services { fmt.Println(service.ServiceID) }
Dalam kod di atas, objek pertanyaan perkhidmatan bernama beego
dicipta. Gunakan kaedah Catalog().Service()
untuk mendapatkan semua perkhidmatan didaftarkan sebagai beego
. Lelaran melalui senarai perkhidmatan dan keluarkan ID setiap perkhidmatan.
Langkah terakhir ialah menggunakan penemuan perkhidmatan untuk memanggil API dalam Beego. Dalam pengawal Beego, anda boleh menggunakan kod berikut untuk mendapatkan alamat dan port perkhidmatan daripada pelayan Konsul:
config := api.DefaultConfig() config.Address = "127.0.0.1:8500" client, err := api.NewClient(config) if err != nil { log.Fatal(err) } services, _, err := client.Catalog().Service("beego", "", nil) if err != nil { log.Fatal(err) } if len(services) == 0 { log.Fatal("no available beego services") } service := services[0] url := fmt.Sprintf("http://%s:%v", service.Address, service.Port) req, err := http.NewRequest("GET", url, nil) if err != nil { log.Fatal(err) } resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } c.Ctx.WriteString(string(body))
Gunakan kaedah Catalog().Service()
untuk mendapatkan senarai perkhidmatan yang didaftarkan sebagai beego
. Pilih salah satu perkhidmatan dan dapatkan alamat dan pelabuhannya. Kemudian gunakan fungsi dalam pustaka net/http
untuk memulakan permintaan HTTP dan mendapatkan hasil tindak balas perkhidmatan.
Setakat ini, kami telah berjaya menggunakan Konsul untuk melaksanakan fungsi pendaftaran dan penemuan perkhidmatan Beego. Sebagai alat penemuan perkhidmatan yang ringan, Consul menyediakan API yang ringkas dan mudah digunakan, yang boleh memberikan bantuan tertentu untuk pengurusan seni bina perkhidmatan. Menggunakan Konsul, kami boleh mengurus kesihatan, penghalaan, pengimbangan beban dan fungsi perkhidmatan lain dengan mudah.
Atas ialah kandungan terperinci Menggunakan Konsul untuk melaksanakan pendaftaran perkhidmatan dan penemuan di Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!