1.grpc是什麼?
在 grpc裡客戶端應用可以像呼叫本地物件一樣直接呼叫另一台不同的機器上服務端應用的方法,使得您能夠更容易地建立分布式應用和服務。與許多 rpc系統類似, grpc也是基於以下理念:
定義乙個服務,指定其能夠被遠端呼叫的方法(包含引數和返回型別)。在服務端實現這個介面,並執行乙個 grpc伺服器來處理客戶端呼叫。
2.grpc環境安裝
(1)進入gopath/src/目錄下,開啟終端輸入:
$ git clone
$ git clone
(3)測試環境是否安裝完好:
啟動服務端:
$ cd $gopath/src/google.golang.org/grpc/examples/helloworld/greeter_server
$ go run main.go
啟動客戶端:
$ cd $gopath/src/google.golang.org/grpc/examples/helloworld/greeter_client
$ go run main.go
客戶端顯示hello world表示測試成功,如下圖所示:
3.go語言實現grpc遠端呼叫
(1)protobuf協議定義
a.在src目錄下建立grpcproto目錄,進入該目錄下,建立乙個grpcproto.proto檔案,內容如下:
b.呼叫protoc編譯器,生成.pb.go檔案,這裡需要增加grpc外掛程式,如下圖所示:
$ protoc --go_out=plugins=grpc:./ *.proto //新增grpc外掛程式
c.我們開啟grpcproto.pb.go檔案,檢視內容:
(2)grpc服務端
在src目錄下建立grpcgo目錄,進入該目錄下,建立乙個grpcserver.go檔案,內容如下:
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
pd "grpcproto"
"net"
)type server struct {}
//打招呼的服務
//func(物件)函式名(context,客戶端傳送過來的引數)(返回給客戶端的引數,錯誤)
func (this *server) sayhello(ctx context.context, in *pd.helloreq) (out *pd.hellorsp, err error),err
}//說名字的服務
func (this *server) sayname(ctx context.context, in *pd.namereq) (out *pd.namersp,err error),err
}func main()
//建立grpc的服務
ser := grpc.newserver()
//註冊服務
pd.registerhelloserverserver(ser,&server{})
//等待網路連線
fmt.println("等待連線中.....")
err = ser.serve(listener)
if err != nil
}
執行服務端:
(3)grpc客戶端
在src/grpcgo目錄下,建立乙個grpcclient.go檔案,內容如下:
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
pd "grpcproto"
)func main()
defer conn.close()
//獲取grpc控制代碼
c := pd.newhelloserverclient(conn)
//通過控制代碼呼叫函式
req1 ,err := c.sayhello(context.background(),&pd.helloreq)
if err != nil
fmt.println("呼叫sayhello函式:",req1.msg)
req2 ,err := c.sayname(context.background(),&pd.namereq)
if err != nil
fmt.println("呼叫sayname函式:",req2.msg)
}
執行客戶端:
CocoaPods的安裝與使用介紹
sudo gem install cocoapods pod setup 如果你的gem太老,可能也會有問題,可以嘗試如下命令公升級gem sudo gem update system 另外,ruby 的軟體源 因為使用的是亞馬遜的雲服務,所以被牆了,需要更新一下 ruby 的源,使用如下 將官方的...
nginx的介紹與安裝使用
此文 自 安裝與使用 點選進入nginx官網 windows下的nginx安裝只是簡單的解壓即可 方法1 可以通過開啟nginx.exe開啟服務 方法2 進入到nginx的資料夾中,然後cmd開啟 在cmd中輸入start nginx開啟服務 驗證是否開啟服務,在瀏覽器中輸入127.0.0.1,如若...
gRPC使用的分析
看了docker的原始碼就不得不了解一下grpc這個鬼東西。下面借鑑一下別人的例項,讓我這個初次接觸的人做乙個,最直接的分析。首先編譯安裝protobuf 工具。定義將要用到的rpc呼叫方法,引數和返回值都在上面進行了定義 service userservice rpc logout userid ...