Rumah > pembangunan bahagian belakang > Golang > Cara menggunakan Golang untuk melaksanakan RPC

Cara menggunakan Golang untuk melaksanakan RPC

PHPz
Lepaskan: 2023-04-06 09:37:22
asal
682 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap yang terkenal dengan kelebihannya dalam pengurusan konkurensi dan ingatan. Dalam sistem teragih, panggilan prosedur jauh (RPC) adalah cara yang diperlukan untuk mencapai komunikasi antara perkhidmatan yang berbeza. Golang menyediakan pakej rpc terbina dalam untuk melaksanakan komunikasi antara perkhidmatan berasaskan bahasa Go. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan RPC.

  1. Tentukan perkhidmatan RPC

Pertama, kita perlu mentakrifkan perkhidmatan RPC. Definisi perkhidmatan akan menentukan kaedah RPC yang akan dipanggil oleh pelanggan. Ia akan menentukan nama, parameter dan jenis pulangan kaedah RPC. Berikut ialah contoh definisi perkhidmatan:

taip MathService struct{}

taip Args struct {

A int
B int
Salin selepas log masuk

}

taip Reply struct {

Result int
Salin selepas log masuk

}

func (m MathService) Tambah(args Args, balas Balas) ralat {

reply.Result = args.A + args.B
return nil
Salin selepas log masuk

}

Dalam contoh di atas, kami telah menentukan perkhidmatan RPC yang dipanggil MathService yang mempunyai kaedah RPC yang dipanggil Add. Kaedah Tambah mengambil dua parameter int dan mengembalikan jumlahnya. Takrifan struktur Args dan Reply mewakili parameter dan jenis pulangan.

  1. Daftar Perkhidmatan RPC

Setelah kami menentukan perkhidmatan RPC, kami perlu mendaftarkannya supaya pelanggan boleh mengaksesnya. Kami boleh menggunakan kaedah rpc.Register() untuk mendaftarkan perkhidmatan seperti berikut:

func main() {

mathService := new(MathService)
err := rpc.Register(mathService)
if err != nil {
    log.Fatal("Error registering MathService:", err)
}
rpc.HandleHTTP()

err = http.ListenAndServe(":8080", nil)
if err != nil {
    log.Fatal("Error serving:", err)
}
Salin selepas log masuk

}

Dalam contoh di atas, Kami tentukan pembolehubah yang dipanggil mathService dan kaitkan dengan struktur MathService. Kemudian kami mendaftarkannya menggunakan kaedah rpc.Register().

Kaedah rpc.HandleHTTP() mendaftarkan pengendali HTTP RPC kepada Pelayan Lalai. Akhir sekali, kami mengikat titik akhir HTTP perkhidmatan RPC ke nombor port 8080 menggunakan kaedah http.ListenAndServe().

  1. Mencipta Klien RPC

Setelah kami mendaftarkan perkhidmatan RPC, kini kami boleh mencipta klien RPC. Berikut ialah contoh klien RPC:

func main() {

client, err := rpc.DialHTTP("tcp", "localhost:8080")
if err != nil {
    log.Fatal("Error connecting:", err)
}

args := Args{4, 5}
var reply Reply

err = client.Call("MathService.Add", args, &reply)
if err != nil {
    log.Fatal("Error calling MathService.Add:", err)
}

fmt.Printf("%d + %d = %d", args.A, args.B, reply.Result)
Salin selepas log masuk

}

Dalam contoh di atas, kami menyambung menggunakan kaedah rpc.DialHTTP() ke perkhidmatan RPC. Kami menentukan protokol rangkaian (TCP) dan nombor port (8080) titik akhir.

Kemudian, kami menyediakan parameter (struktur Args) yang dihantar kepada kaedah RPC dan mengisytiharkan struktur Balas untuk menyimpan hasil panggilan kaedah jauh. Akhir sekali, kami menggunakan kaedah Panggilan() pelanggan untuk memanggil kaedah RPC jauh.

  1. Jalankan perkhidmatan RPC

Sekarang kami telah menyelesaikan semua persiapan yang diperlukan, kami boleh menjalankan perkhidmatan RPC. Dalam terminal, kami menjalankan arahan berikut:

$ go run main.go

Selepas perkhidmatan berjalan, kami boleh mengakses http://localhost:8080/debug/rpc dalam pelayar , untuk melihat kaedah perkhidmatan yang tersedia.

Ringkasan

Dalam artikel ini, kami mempelajari cara menggunakan pakej rpc Golang untuk melaksanakan RPC. Kami mencipta perkhidmatan RPC dan mendaftarkannya supaya pelanggan boleh menyambung kepadanya. Kami juga mencipta klien RPC dan menggunakannya untuk memanggil kaedah dalam perkhidmatan jauh.

RPC ialah alat yang sangat berkuasa dan berguna yang boleh membantu kami mencapai komunikasi antara perkhidmatan yang berbeza dalam sistem yang diedarkan. Dengan mempelajari artikel ini, anda kini mempunyai pengetahuan asas untuk melaksanakan perkhidmatan RPC menggunakan Golang.

Atas ialah kandungan terperinci Cara menggunakan Golang untuk melaksanakan RPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan