grpc是google出品,支援多種語言,但是國內安裝會有點問題,下面整理一下,方便今後配環境的複習。
go get google.golang.org/grpc
結果出現了如下錯誤:
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: get dial tcp 216.239.37.1:443: i/o timeout)
參考 可以使用如下方式進行安裝。
make install漫長等待後,就完事了。不過這次還沒完,好像是需要將乙個環境變數加到path中。
export ld_library_path=/usr/local/lib
helloworld.proto
放到$gopath/src/helloworld
目錄下,方便自己待會的引用。
syntax = "proto3";
package grpcusage;
service hello
}message hellorequest
message helloreply
然後通過protoc 根據此模板來生成對應的golang的grpc**
#格式 protoc --go_out=plugins=grpc:
protoc --go_out=plugins=grpc:./ ./helloworld.proto
package main
import (
"golang.org/x/net/context"
pb "helloworld"
"net"
"log"
"google.golang.org/grpc"
"fmt"
)const (
port = ":50051"
)type server struct {}
func (s *server) sayhello(ctx context.context, in *pb.hellorequest) (*pb.helloreply, error) , nil
}func main()
fmt.println("grpc server listening at: 50051 port")
server := grpc.newserver()
pb.registerhelloserver(server, &server{})
server.serve(conn)
}
package main
import (
"google.golang.org/grpc"
"log"
pb "helloworld"
"os"
"context"
"fmt"
)const (
address = "localhost:50051"
defaultname = "郭璞"
)func main()
defer conn.close()
client := pb.newhelloclient(conn)
name := defaultname
if len(os.args) > 1
request, err := client.sayhello(context.background(), &pb.hellorequest)
if err != nil
fmt.println(request.message)
}
啟動server端程式。
➜ grpcusage go run server.go
grpc server listening at: 50051 port
啟動client程式
➜ client go run client.go
hello 郭璞
➜ client
如此便實現了grpc在golang中的簡單使用,暫且記錄下,以備不時之需。 遠端過程呼叫
遠端過程呼叫 rpc remote procedure call protocol 遠端過程呼叫協議 它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。為通訊程式之間攜帶資訊資料。採用客戶端 伺服器方式 請求 響應 三種主流的實現方式 rest soap xmlrpc xml...
遠端過程呼叫 RPC
rpc是遠端過程呼叫 remote procedure call 的縮寫。就是一台伺服器上的服務通過引數傳遞的方式呼叫另一台服 務器的服務,並獲取返回結果。比如有兩台伺服器a b,a上的服務想要呼叫b上的函式或方法,由於不在同乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料...
Hadoop 遠端過程呼叫
hadoop ipc類圖如下 連線 font size 14px 為了提高通訊效率,連線是可以復用的,通過connectionid來區分不同的連線 class connectionid connectionheader類是客戶端和服務端tcp連線建立之後交換的第一條訊息,包括connectionid...