雪花演算法的原理 第一位符號位固定為0,41位時間戳,10位workld,12位序列號,位數可以有不同實現優點: 每個毫秒值包含的ID值很多,不夠可以變動位數來增加,性能佳 (依賴workld的實現)。.時間戳值在高位,中間是固定的機器碼,自增的序列在低位,整個ID是趨勢遞增的。0能夠根據業務場景數據 ...
在gRPC里,客戶端可以像調用本地方法一樣直接調用其他機器上的服務端應用程式的方法,幫助你更容易創建分散式應用程式和服務。與許多RPC系統一樣,gRPC是基於定義一個服務,指定一個可以遠程調用的帶有參數和返回類型的的方法。在服務端程式中實現這個介面並且運行gRPC服務處理客戶端調用。在客戶端,有一個stub提供和服務端相同的方法。
在安裝目錄下
在你的項目目錄下執行以下命令,獲取 gRPC 作為項目依賴。
go get google.golang.org/grpc@latest
安裝Protocol Buffers v3
裝用於生成gRPC服務代碼的協議編譯器,最簡單的方法是從下麵的鏈接:https://github.com/google/protobuf/releases下載適合你平臺的預編譯好的二進位文件
我們需要將下載得到的可執行文件protoc
所在的 bin 目錄加到我們電腦的環境變數中。
安裝GO語言插件
go install google.golang.org/protobuf/cmd/protoc-gen-go
安裝GRPC插件
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
安裝完後執行如下命令,查看是否完成安裝
Grpc的開發步聚
1.編寫protobuf
用如下命令生成GO 文件
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative he
lloworld.proto
生成後的文件如下:
2.編寫服務端文件server.go
package main
import (
"OldPacketTest/grpc_test/proto"
"context"
"google.golang.org/grpc"
"net"
)
type Server struct {
proto.UnimplementedGreeterServerServer
}
func (s *Server) SayHello(ctx context.Context, req *proto.HelloRequest) (*proto.HelloReply, error) {
return &proto.HelloReply{
Message: "hello " + req.Name,
}, nil
}
func main() {
g := grpc.NewServer()
proto.RegisterGreeterServerServer(g, &Server{})
lis, err := net.Listen("tcp", "0.0.0.0:8081")
if err != nil {
panic("failed to listen:" + err.Error())
}
err = g.Serve(lis)
if err != nil {
panic("failed to start grpc:" + err.Error())
}
}
客戶端代碼如下
3.啟動服務,先啟動服務端,再啟動客戶端
服務端啟動後如下:
啟動客戶端
這時候就可以看到響應的結果了。這時候一個完整的GRPC服務就完成了