基于gRPC使用的思考

一、gRPC簡(jiǎn)介

? ? ? gRPC(Remote Produce Call)是google開發(fā)的一個(gè)高性能、開源的通用的RPC框架。

二、gRPC特點(diǎn)

????高性能:

? ??? ??基準(zhǔn)測(cè)試:

????????????????在Java到Java的通信中,使用Protobuf能夠在25毫秒內(nèi)處理5萬個(gè)對(duì)象實(shí)例,而JSON需要150毫秒,性能是6倍(AuthO的基準(zhǔn)

????????????????gRPC速度快了10倍(go基準(zhǔn)測(cè)試

????????????????gRPC速度快10倍(ASP.NET Core WebAPI基準(zhǔn)測(cè)試

? ??? ??Protocol buffers

? ? ? ? ????????gRPC默認(rèn)使用Protocol buffers作為接口定義語言,protocol buffers是google用于序列化結(jié)構(gòu)化數(shù)據(jù)的語言中立、平臺(tái)中立、可擴(kuò)展,相比XML,它更小、更快、更簡(jiǎn)單。

? ? ? ? ????????protocol,json.xml對(duì)比

? ??? ??Http/2:

? ? ?????????特點(diǎn):Header壓縮、多路復(fù)用、使用二進(jìn)制格式傳輸(http 1.x文本格式)、服務(wù)器主動(dòng)推送,減少請(qǐng)求的延遲。

? ? ? ? ?????幀:HTTP/2數(shù)據(jù)通信的最小單位消息:指HTTP/2中邏輯上的HTTP消息。例如請(qǐng)求和響應(yīng)等,消息由一個(gè)或多個(gè)幀組成。

? ? ? ????????流:存在于連接中的一個(gè)虛擬通道。流可以承載雙向消息,每個(gè)流都有一個(gè)唯一的整數(shù)ID。

? ? ? ? ? ????http1.1與http2對(duì)比 :Akamai

????開源:

? ? ????gitee:https://gitee.com/mirrors/grpc-framework

? ? ????github:https://github.com/grpc/grpc

? ? ????C#包:https://github.com/grpc/grpc/tree/master/src/csharp

????通用:

? ? ????支持:C,C++,Node.js,Python,Ruby,Objective-C,PHP,C#,go,java

三、API類型

? ? 一元:rpc GetFeature(Point) returns (Feature){}? ?特點(diǎn):傳入一個(gè)對(duì)象,返回一個(gè)對(duì)象

????客戶端流:rpc RecordRoute(stream Point) returns (RouteSummary){}? 特點(diǎn):傳入多個(gè)對(duì)象,返回一個(gè)對(duì)象

????服務(wù)端流:rpc? ListFeatures(Rectangle) returns (stream Feature){}? 特點(diǎn):傳入一個(gè)對(duì)象,返回多個(gè)對(duì)象

????雙向流:rpc RouteChat(stream RouteNote) returns(stream RouteNote){}? 特點(diǎn):傳入多個(gè)對(duì)象,返回多個(gè)對(duì)象

四、RPC架構(gòu)


? ??RPC工作原理

五、gRPC使用場(chǎng)景

? ? 1.低延遲,高可用的分布式系統(tǒng)

? ? 2.移動(dòng)端與云服務(wù)端的通訊

? ? 3.使用protobuf,獨(dú)立語言的協(xié)議,支持多語言之間的通訊

? ? 4.可以分層擴(kuò)展,如:身份驗(yàn)證,負(fù)載均衡,日志記錄,監(jiān)控等

六、Q&A

1.RPC和http的區(qū)別

????最本質(zhì)區(qū)別,RPC主要是基于TCP/IP協(xié)議的,而HTTP服務(wù)主要是基于HTTP協(xié)議的,HTTP協(xié)議是在傳輸協(xié)議TCP之上的。

2.gRPC,Http/2,ProtoBuf三者之間有什么區(qū)別

? ? gRPC是一種通信框架,http/2是通信協(xié)議,gRPC是基于HTTP/2協(xié)議標(biāo)準(zhǔn)而設(shè)計(jì)。ProtoBuf是由Google開發(fā)的一種數(shù)據(jù)序列化協(xié)議(類似xml,json),gRPC使用ProtoBuf來定義服務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文連接: 一文了解RPC以及gRPC基于Golang和Java的簡(jiǎn)單實(shí)現(xiàn) 一:什么是RPC 簡(jiǎn)介:RPC:Re...
    賈順閱讀 9,094評(píng)論 2 12
  • 一、基礎(chǔ)概念 1.RPC RPC 代指遠(yuǎn)程過程調(diào)用(Remote Procedure Call),它的調(diào)用包含了傳...
    Mr_Michael閱讀 2,129評(píng)論 0 0
  • gRPC是由Google主導(dǎo)開發(fā)的RPC框架,使用HTTP/2協(xié)議并用ProtoBuf作為序列化工具。其客戶端提供...
    CZ_Golang閱讀 82,350評(píng)論 9 71
  • 1.簡(jiǎn)介 在gRPC中,客戶端應(yīng)用程序可以直接調(diào)用不同計(jì)算機(jī)上的服務(wù)器應(yīng)用程序上的方法,就像它是本地對(duì)象一樣,使您...
    第八共同體閱讀 2,099評(píng)論 0 6
  • 原文出處:gRPC gRPC分享 概述 gRPC 一開始由 google 開發(fā),是一款語言中立、平臺(tái)中立、開源的遠(yuǎn)...
    小波同學(xué)閱讀 7,689評(píng)論 0 18

友情鏈接更多精彩內(nèi)容