Golang は、効率的で軽量なプログラミング言語として、近年開発者の間でますます人気が高まっています。中でもRPC(Remote Procedure Call)はGolangにおける重要なネットワーク通信技術であり、ネットワークを越えたデータ送信や通信を実現することができます。この記事では、Golang が RPC リクエストを送信する方法を紹介します。
RPC とは何ですか?
RPC は Remote Procedure Call の略で、あるコンピュータ プロセスからネットワークを介して別のコンピュータ プロセスを呼び出すプロセスを指します。 RPC は、異なるコンピュータ間でのプログラム呼び出しを、ネイティブ プログラムの関数呼び出しと同じくらい便利にします。たとえば、あるサーバー上の関数を別のサーバー上で呼び出す必要がある場合があります。 RPC テクノロジーを使用すると、このプロセスを簡単に実装できます。
Golang での RPC
Golang では、RPC を使用してクロスネットワーク通信とデータ送信を実現できます。 Golang では、RPC 経由で通信するときに、他のプロセスに公開して呼び出すメソッドを含むインターフェイスを定義する必要があります。
簡単な例として、サーバー側のインターフェイスを次のように定義します。
type Arithmetic int func (t *Arithmetic) Multiply(args *Args, reply *int) error { *reply = args.A * args.B return nil }
次に、RPC サーバー コードを実装する必要があります。
import ( "net" "net/rpc" ) func main() { // 1.注册服务 arith := new(Arithmetic) rpc.Register(arith) // 2.网络监听 listener, err := net.Listen("tcp", ":1234") if err != nil { fmt.Println("ListenTCP error:", err) return } // 3.启动监听 for { conn, err := listener.Accept() if err != nil { fmt.Println("Accept error:", err) continue } // 4.服务端处理请求 go rpc.ServeConn(conn) } }
次に、クライアントで RPC リクエストを送信する必要があります:
import ( "fmt" "net/rpc" ) type Args struct { A, B int } func main() { // 1.连接rpc服务端 client, err := rpc.Dial("tcp", "127.0.0.1:1234") if err != nil { fmt.Println("Dial error:", err) return } args := &Args{7, 8} var reply int // 2.客户端发送请求 err = client.Call("Arithmetic.Multiply", args, &reply) if err != nil { fmt.Println("Call error:", err) return } fmt.Println("7*8=", reply) }
クライアント コードでは、まず rpc.Dial
関数を通じて RPC サーバーに接続する必要があります。次に、計算する必要がある 2 つの数値を送信するための Args 型の構造体を定義します。 RPC リクエストを送信するときは、client.Call
メソッドを呼び出し、呼び出したい関数名と送信する必要があるパラメーターを渡し、最後に結果を reply
に保存します。 。
概要
Golang において、RPC はネットワークを越えた送信や通信を実現するための重要な技術です。カスタム インターフェイスとメソッドを定義することで、RPC サーバーとクライアントを実装できます。実際のアプリケーションでは、アプリケーションをより効率的かつ安定して実行できるように、実際のニーズに基づいて適切なネットワーク プロトコルと送信方法を選択する必要があります。
以上がgolangはrpcリクエストを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。