久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

五分鐘學會gRPC,你學會了嗎?

2022-10-04    分類: 網站建設

介紹

我猜測大部分長期使用 Java 的開發者應該較少會接觸 gRPC,畢竟在 Java 圈子里大部分使用的還是 Dubbo/SpringClound 這兩類服務框架。

我也是近段時間有機會從零開始重構業務才接觸到 gRPC 的,當時選擇gRPC 時也有幾個原因:五分鐘學會 gRPC,你學會了嗎?

基于云原生的思路開發部署項目,而在云原生中 gRPC 幾乎已經是標準的通訊協議了。 開發語言選擇了 Go,在 Go 圈子中 gRPC 顯然是更好的選擇。 公司內部有部分業務使用的是 Python 開發,在多語言兼容性上 gRPC 支持的非常好。

經過線上一年多的平穩運行,可以看出 gRPC 還是非常穩定高效的;rpc 框架中最核心的幾個要點:

序列化 通信協議 IDL(接口描述語言)

這些在 gRPC 中分別對應的是: 基于 Protocol Buffer 序列化協議,性能高效。 基于 HTTP/2 標準協議開發,自帶 stream、多路復用等特性;同時由于是標準協議,第三方工具的兼容性會更好(比如負載均衡、監控等)。

編寫一份 .proto 接口文件,便可生成常用語言代碼。 HTTP/2

學習 gRPC 之前首先得知道它是通過什么協議通信的,我們日常不管是開發還是應用基本上接觸到最多的還是 HTTP/1.1 協議。五分鐘學會 gRPC,你學會了嗎?

由于 HTTP/1.1 是一個文本協議,對人類非常友好,相反的對機器性能就比較低。

需要反復對文本進行解析,效率自然就低了;要對機器更友好就得采用二進制,HTTP/2 自然做到了。

除此之外還有其他優點: 多路復用:可以并行的收發消息,互不影響。

HPACK 節省 header 空間,避免 HTTP1.1 對相同的 header 反復發送。 Protocol

gRPC 采用的是 Protocol 序列化,發布時間比 gRPC 早一些,所以也不僅只用于 gRPC,任何需要序列化 IO 操作的場景都可以使用它。

它會更加的省空間、高性能;之前在開發 https://github.com/crossoverJie/cim 時就使用它來做數據交互。package order.v1; service OrderService{ rpc Create(OrderApiCreate) returns (Order) {} rpc Close(CloseApiCreate) returns (Order) {} // 服務端推送 rpc ServerStream(OrderApiCreate) returns (stream Order) {} // 客戶端推送 rpc ClientStream(stream OrderApiCreate) returns (Order) {} // 雙向推送 rpc BdStream(stream OrderApiCreate) returns (stream Order) {} } message OrderApiCreate{ int64 order_id = 1; repeated int64 user_id = 2; string remark = 3; repeated int32 reason_id = 4; }

使用起來也是非常簡單的,只需要定義自己的 .proto 文件,便可用命令行工具生成對應語言的 SDK。

具體可以參考官方文檔:https://grpc.io/docs/languages/go/generated-code/ 調用 protoc --go_out=. --go_opt=paths=source_relative \ --go-grpc_out=. --go-grpc_opt=paths=source_relative \ test.proto

五分鐘學會 gRPC,你學會了嗎?

生成代碼之后編寫服務端就非常簡單了,只需要實現生成的接口即可。func (o *Order) Create(ctx context.Context, in *v1.OrderApiCreate) (*v1.Order, error) { // 獲取 metadata md, ok := metadata.FromIncomingContext(ctx) if !ok { return nil, status.Errorf(codes.DataLoss, "failed to get metadata") } fmt.Println(md) fmt.Println(in.OrderId) return &v1.Order{ OrderId: in.OrderId, Reason: nil, }, nil }

五分鐘學會 gRPC,你學會了嗎?

客戶端也非常簡單,只需要依賴服務端代碼,創建一個 connection 然后就和調用本地方法一樣了。

這是經典的 unary(一元)調用,類似于 http 的請求響應模式,一個請求對應一次響應。五分鐘學會 gRPC,你學會了嗎?

Server stream

gRPC 除了常規的 unary 調用之外還支持服務端推送,在一些特定場景下還是很有用的。五分鐘學會 gRPC,你學會了嗎?

func (o *Order) ServerStream(in *v1.OrderApiCreate, rs v1.OrderService_ServerStreamServer) error { for i := 0; i < 5; i++ { rs.Send(&v1.Order{ OrderId: in.OrderId, Reason: nil, }) } return nil }

服務端的推送如上所示,調用 Send 函數便可向客戶端推送。 for { msg, err := rpc.RecvMsg() if err == io.EOF { marshalIndent, _ := json.MarshalIndent(msgs, "", "\t") fmt.Println(msg) return } }

客戶端則通過一個循環判斷當前接收到的數據包是否已經截止來獲取服務端消息。

為了能更直觀的展示這個過程,優化了之前開發的一個 gRPC 客戶端,可以直觀的調試 stream 調用。五分鐘學會 gRPC,你學會了嗎?

上圖便是一個服務端推送示例。

Client Stream五分鐘學會 gRPC,你學會了嗎?

除了支持服務端推送之外,客戶端也支持。

客戶端在同一個連接中一直向服務端發送數據,服務端可以并行處理消息。// 服務端代碼func (o *Order) ClientStream(rs v1.OrderService_ClientStreamServer) error { var value []int64 for { recv, err := rs.Recv() if err == io.EOF { rs.SendAndClose(&v1.Order{ OrderId: 100, Reason: nil, }) log.Println(value) return nil } value = append(value, recv.OrderId) log.Printf("ClientStream receiv msg %v", recv.OrderId) } log.Println("ClientStream finish") return nil } // 客戶端代碼 for i := 0; i < 5; i++ { messages, _ := GetMsg(data) rpc.SendMsg(messages[0]) } receive, err := rpc.CloseAndReceive()

代碼與服務端推送類似,只是角色互換了。五分鐘學會 gRPC,你學會了嗎?

Bidirectional Stream五分鐘學會 gRPC,你學會了嗎?

同理,當客戶端、服務端同時都在發送消息也是支持的。// 服務端func (o *Order) BdStream(rs v1.OrderService_BdStreamServer) error { var value []int64 for { recv, err := rs.Recv() if err == io.EOF { log.Println(value) return nil } if err != nil { panic(err) } value = append(value, recv.OrderId) log.Printf("BdStream receiv msg %v", recv.OrderId)

分享名稱:五分鐘學會gRPC,你學會了嗎?
鏈接分享:http://www.js-pz168.com/news28/201728.html

成都網站建設公司_創新互聯,為您提供響應式網站動態網站手機網站建設電子商務服務器托管建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
调教+趴+乳夹+国产+精品| www.亚洲色图| 91麻豆精品视频| 欧美日韩亚洲一区二区三区在线观看| 制服国产精品| 日韩欧美亚洲另类制服综合在线| 国产精品激情偷乱一区二区∴| 日韩精品乱码免费| www.99精品| 欧美一区二区三区四区五区六区 | 亚洲精品视频观看| 九色综合狠狠综合久久| 99re6热在线精品视频播放速度| 亚洲国产一区二区在线| 欧美mv日韩mv| 亚洲成人资源在线| 成人国产精品免费观看动漫| 欧美美乳视频网站在线观看| 91精品国产综合久久精品性色| 亚洲天堂久久久久久久| 国产麻豆精品视频| 蜜桃网站成人| 日韩欧美123| 性做久久久久久久免费看| av在线播放成人| 色综合天天做天天爱| 国产欧美综合在线| 久久精品99国产精品日本| 国产亚洲福利社区| 欧美美女直播网站| 一区二区不卡在线播放 | 国产性色一区二区| 麻豆freexxxx性91精品| 国产亚洲一区在线播放| 在线不卡a资源高清| 一区二区三区在线看| 不卡一区中文字幕| 在线视频一区二区三区| 中文字幕一区视频| 国产精品白丝av| 亚洲欧美综合一区| 国产精品美女久久久久久久久久久| 九一久久久久久| 日韩精品第一页| 国产日产欧美一区| 国产乱淫av一区二区三区| 日韩欧美精品在线不卡| 国产目拍亚洲精品99久久精品| 激情综合网激情| 日韩欧美精品一区二区| 亚洲国产成人私人影院tom| 国产老妇另类xxxxx| 一区二区三区免费看| 国产精品国产三级国产aⅴ入口| 国产不卡免费视频| 色女孩综合影院| 亚洲久草在线视频| 超碰97在线资源| 日韩欧美一级片| 久久精品国产99| 亚洲精品中文字幕在线| 中文字幕一区二区三区不卡 | 日韩三级电影| 中文字幕va一区二区三区| 国产不卡视频一区| 欧美专区亚洲专区| 亚洲aaa精品| 精品久久蜜桃| 国产色婷婷亚洲99精品小说| 国产91在线看| 欧美三级日韩在线| 日韩国产精品大片| 天天好比中文综合网| 国产精品美女一区二区在线观看| a亚洲天堂av| 国产在线日韩欧美| 色婷婷综合久久久久中文| 一区二区三区在线播放| 国语精品免费视频| 国产日产欧美一区二区三区| proumb性欧美在线观看| 91精品国产91久久久久久一区二区| 青青草91视频| 一本一道久久a久久精品综合| 亚洲精选一二三| 久久国产主播精品| 中文字幕在线不卡| 国产一区二区免费电影| 国产色爱av资源综合区| 18成人在线| 久久久久亚洲蜜桃| 91丨九色丨国产丨porny| 欧美成人性战久久| 成人性生交大片免费看中文| 正在播放一区二区| 国产乱码一区二区三区| 欧美精品久久99| 国产麻豆视频精品| 欧美精品少妇一区二区三区| 精品午夜久久福利影院| 欧美日韩三级一区二区| 久热成人在线视频| 欧美三级三级三级爽爽爽| 九九视频精品免费| 精品视频123区在线观看| 九九视频精品免费| 欧美精品高清视频| 国产精品18久久久久久vr| 欧美日韩国产系列| 激情深爱一区二区| 欧美另类高清zo欧美| 国产精品正在播放| 日韩视频一区二区三区在线播放 | 久久大香伊蕉在人线观看热2| 国产精品国产三级国产普通话99 | 亚洲素人一区二区| 欧美日本韩国在线| 亚洲网友自拍偷拍| 亚洲欧美综合一区| 蜜桃av一区二区三区电影| 欧美日韩在线电影| 国产成人免费高清| 26uuu精品一区二区| 成人永久免费| 成人欧美一区二区三区白人 | 91精品国产综合久久精品图片 | 久久国产精品一区二区三区四区| 一区二区在线电影| 亚洲人成网站在线观看播放| 日本中文字幕一区二区有限公司| 欧美色偷偷大香| 成人一级黄色片| 久久九九国产精品| 久久亚洲一区二区| 视频一区国产视频| 欧美日韩高清一区二区三区| 成人黄色网址在线观看| 国产欧美日韩综合| 欧美日韩精品免费观看视一区二区| 亚洲成人久久影院| 欧美日韩免费电影| 91在线观看免费视频| 中文字幕亚洲一区二区va在线| 日韩videos| 久久电影网电视剧免费观看| 欧美一级理论性理论a| 99理论电影网| 亚洲一二三四在线观看| 欧美写真视频网站| 91同城在线观看| 一区二区视频免费在线观看| 色8久久精品久久久久久蜜| 国产99久久久精品| 国产精品美女久久久久久久久久久| 色99中文字幕| 国产剧情一区二区| 中文字幕的久久| 亚洲一区二区三区欧美| 国产精品亚洲综合一区在线观看| 国产视频一区二区在线| 色就是色欧美| 国产精品资源站在线| 中文无字幕一区二区三区 | 97免费高清电视剧观看| 一区二区在线电影| 欧美日本韩国一区二区三区视频 | 亚洲一区不卡在线| 国产aⅴ精品一区二区三区色成熟| 国产精品亲子伦对白| 色综合色狠狠综合色| www.亚洲在线| 亚洲国产精品综合小说图片区| 欧美精品v国产精品v日韩精品| 国产91一区二区三区| 日韩福利视频导航| 久久众筹精品私拍模特| 午夜一区二区三区| 成人激情小说乱人伦| 一区二区三区四区亚洲| 91精品国产综合久久久蜜臀粉嫩| 激情视频在线观看一区二区三区| 日本免费在线视频不卡一不卡二| 精品国产区一区| 日本不卡一区二区三区在线观看| 国产精品综合久久| 亚洲欧美日韩小说| 69av一区二区三区| 免费av一区二区三区| 国产一区福利在线| 日韩一区欧美小说| 777色狠狠一区二区三区| 久久av一区二区三区漫画| 国内精品视频666| 亚洲欧美乱综合| 日韩亚洲欧美在线| 亚洲欧美电影在线观看| 91社区在线播放| 欧美aaa在线| 亚洲欧洲av另类| 日韩午夜中文字幕|