grpc 服務呼叫例子

2022-09-23 00:15:22 字數 2643 閱讀 7816

1.建立乙個hello.proto

其實就是定義乙個服務,然後後面需要實現它的介面

syntax = "proto3"

//path 表示生成的go檔案的存放位址,會自動生成目錄的。

//name 表示生成的go檔案所屬的包名

option go_package="./;hello";

package hello;

service helloservice

}message hellorequest

message helloreply

2.編譯

protoc --go_out=plugins=grpc:. *.proto
會在當前資料夾生成hello.pb.go

3.目錄樹

grpctest/

├── client

│ ├── go.mod

│ ├── go.sum

│ ├── main.go

│ └── proto

│ └── hello

│ ├── hello.pb.go

│ └── hello.proto

└── server

├── go.mod

├── go.sum

├── handler

│ └── handler.go

├── proto

│ └── hello

│ ├── hello.pb.go

│ └── hello.proto

└── service.go

4.實現並啟動定義的服務

mkdir server

cd server

go mod init server

在server/handler/handler.go檔案中定義乙個結構體,然後實現剛剛的sayhello方法

package handler

import (

"context"

"fmt"

hellopb "server/proto/hello"

"time"

)type hellosrv struct {}

func newhellosrv() hellopb.helloserviceserver

}func (*hellosrv)sayhello(ctx context.context, in *hellopb.hellorequest) (*hellopb.helloreply, error) , nil

}

在server/service.go檔案中編寫啟動服務

package main

import (

"fmt"

"net"

hellopb "server/proto/hello"

"server/handler"

"google.golang.org/grpc"

)const (

port = ":7778"

)func main()

grpcservice := grpc.newserver()

//註冊服務

hellopb.registerhelloserviceserver(grpcservice, handler.newhellosrv())

if err := grpcservice.serve(lis); err != nil

}

啟動服務

go run service.go

5.客戶端呼叫服務

mkdir client

cd client

go mod init client

需要將上面編譯生成的hello.pb.go檔案copy過來先,接著在client/main.go中呼叫服務

package main

import (

hellopb "client/proto/hello"

"google.golang.org/grpc"

"context"

"fmt"

)const (

address = "127.0.0.1:7778"

)func main()

defer conn.close()

client := hellopb.newhelloserviceclient(conn)

resp, err := client.sayhello(context.background(), &hellopb.hellorequest)

if err != nil

fmt.println(resp.time)

}

測試一下

go run main.go

client輸出:

2020-03-31 16:46:04.018755957 +0800 cst m=+5.300707152
server輸出:

姓名: lubenwei 年齡: 21

gRPC的簡單Go例子

grpc是乙個高效能 通用的開源rpc框架,其由google主要面向移動應用開發並基於http 2協議標準而設計,基於protobuf protocol buffers 序列化協議開發,且支援眾多開發語言。grpc提供了一種簡單的方法來精確地定義服務和為ios android和後台支援服務自動生成可...

1 gRPC使用例子

grpc使用例子說明syntax proto3 service helloservice message hellorequest message helloresponseprotoc go out plugins grpc 生成的核心 如下 client 根據helloservice生成的客戶端...

通過gRPC讓PHP呼叫Go的服務

由於篇幅限制,本文只能提供乙個簡單的使用流程,不會對具體的概念深入解釋 你至少需要了解的基本知識 php,composer,go,protobuf,grpc 第一步 編寫 proto 檔案 在本例中,我們定義乙個計算器類,擁有相加,相減兩個方法,以及定義引數和返回值的型別 syntax proto3...