Rumah >pembangunan bahagian belakang >Golang >Menggunakan Konsul untuk melaksanakan pendaftaran perkhidmatan dan penemuan di Beego

Menggunakan Konsul untuk melaksanakan pendaftaran perkhidmatan dan penemuan di Beego

WBOY
WBOYasal
2023-06-23 10:10:461470semak imbas

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.

  1. Pasang Consul

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.

  1. Buat projek Beego

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.

  1. Perkenalkan pakej Konsul

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.

  1. Sambung ke pelayan Konsul

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)
}
  1. Daftar Perkhidmatan

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. checkObjek mewakili pemeriksaan kesihatan perkhidmatan Anda boleh menetapkan protokol HTTP atau TCP, atau anda boleh menyesuaikan fungsi semakan. Akhir sekali, daftar service dengan pelayan Konsul.

  1. Mendapatkan perkhidmatan

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.

  1. Menggunakan 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn