gRpc遠(yuǎn)程調(diào)用系統(tǒng)

gRPC官網(wǎng):http://doc.oschina.net/grpc?t=58008

一、RPC 是什么爽柒?

????????在 gRPC 里客戶端應(yīng)用可以像調(diào)用本地對象一樣直接調(diào)用另一臺(tái)不同的機(jī)器上服務(wù)端應(yīng)用的方法,使得您能夠更容易地創(chuàng)建分布式應(yīng)用和服務(wù)哑姚。與許多 RPC 系統(tǒng)類似羹唠,gRPC 也是基于以下理念:定義一個(gè)服務(wù)志鹃,指定其能夠被遠(yuǎn)程調(diào)用的方法(包含參數(shù)和返回類型)。在服務(wù)端實(shí)現(xiàn)這個(gè)接口信轿,并運(yùn)行一個(gè) gRPC 服務(wù)器來處理客戶端調(diào)用晃痴。在客戶端擁有一個(gè)存根能夠像服務(wù)端一樣的方法残吩。


二、使用 protocol buffers

????????gRPC 默認(rèn)使用 protocol buffers倘核,這是 Google 開源的一套成熟的結(jié)構(gòu)數(shù)據(jù)序列化機(jī)制(當(dāng)然也可以使用其他數(shù)據(jù)格式如 JSON)泣侮。

? ??????例子內(nèi)使用的卻一種名叫 proto3 的新風(fēng)格的 protocol buffers,它擁有輕量簡化的語法紧唱、一些有用的新功能活尊,并且支持更多新語言。

? ??????我們通常建議你在 gRPC 里使用 proto3漏益,因?yàn)檫@樣你可以使用 gRPC 支持全部范圍的的語言蛹锰,并且能避免 proto2 客戶端與 proto3 服務(wù)端交互時(shí)出現(xiàn)的兼容性問題,反之亦然绰疤。

三铜犬、Hello word

????????現(xiàn)在你已經(jīng)對 gRPC 有所了解,了解其工作機(jī)制最簡單的方法是看一個(gè)簡單的例子轻庆。 Hello World 將帶領(lǐng)你創(chuàng)建一個(gè)簡單的客戶端——服務(wù)端應(yīng)用癣猾,向你展示:

通過一個(gè) protocol buffers 模式,定義一個(gè)簡單的帶有 Hello World 方法的 RPC 服務(wù)余爆。

用你最喜歡的語言(如果可用的話)來創(chuàng)建一個(gè)實(shí)現(xiàn)了這個(gè)接口的服務(wù)端纷宇。

用你最喜歡的(或者其他你愿意的)語言來訪問你的服務(wù)端。

1.定義服務(wù)

????????一個(gè) RPC 服務(wù)通過參數(shù)和返回類型來指定可以遠(yuǎn)程調(diào)用的方法龙屉。就像你在 概覽 里所看到的呐粘, gRPC 通過 protocol buffers 來實(shí)現(xiàn)。

? ??????我們使用 protocol buffers 接口定義語言來定義服務(wù)方法转捕,用 protocol buffer 來定義參數(shù)和返回類型∷衾客戶端和服務(wù)端均使用服務(wù)定義生成的接口代碼五芝。

????????這里有我們服務(wù)定義的例子,在 helloworld.proto 里用 protocol buffers IDL 定義的辕万。Greeter 服務(wù)有一個(gè)方法 SayHello 枢步,可以讓服務(wù)端從遠(yuǎn)程客戶端接收一個(gè)包含用戶名的 HelloRequest 消息后,在一個(gè) HelloReply 里發(fā)送回一個(gè) Greeter渐尿。這是你可以在 gRPC 里指定的最簡單的 RPC - 你可以在教程里找到針對你選擇的語言更多類型的例子醉途。

代碼

2、生成 gRPC 代碼

????????一旦定義好服務(wù)砖茸,我們可以使用 protocol buffer 編譯器protoc來生成創(chuàng)建應(yīng)用所需的特定客戶端和服務(wù)端的代碼 - 你可以生成任意 gRPC 支持的語言的代碼隘擎,當(dāng)然 PHP 和 Objective-C 僅支持創(chuàng)建客戶端代碼。生成的代碼同時(shí)包括客戶端的存根和服務(wù)端要實(shí)現(xiàn)的抽象接口凉夯,均包含Greeter所定義的方法货葬。

(假如你沒有在系統(tǒng)里安裝 gRPC 插件和 protoc 采幌,并且僅僅是要看一下這個(gè)例子,你可以跳過這一步震桶,直接到下一步來查看生成的代碼休傍。)


代碼

3.寫一個(gè)服務(wù)器

? ??????現(xiàn)在讓我們寫點(diǎn)代碼!首先我們將創(chuàng)建一個(gè)服務(wù)應(yīng)用來實(shí)現(xiàn)服務(wù)(你會(huì)記起來蹲姐,我們可以是使用除了Objective-C and PHP 外的其他所有語言來實(shí)現(xiàn))


服務(wù)實(shí)現(xiàn)定義


服務(wù)實(shí)現(xiàn)代碼

????????在這里我們創(chuàng)建了合理的 gRPC 服務(wù)器磨取,將我們實(shí)現(xiàn)的 Greeter 服務(wù)綁定到一個(gè)端口。然后我們啟動(dòng)服務(wù)器:服務(wù)器現(xiàn)在已準(zhǔn)備好從 Greeter 服務(wù)客戶端接收請求柴墩。我們將在具體語言對應(yīng)的文檔里更深入地了解這所有的工作是怎樣進(jìn)行的忙厌。

4.寫一個(gè)客戶端

????????客戶端的 gRPC 非常簡單。在這一步拐邪,我們將用生成的代碼寫一個(gè)簡單的客戶程序來訪問我們在上一節(jié)里創(chuàng)建的 Greeter 服務(wù)器慰毅。

連接服務(wù)


調(diào)用

五、試一下


試一試

四扎阶、完整代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汹胃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子东臀,更是在濱河造成了極大的恐慌着饥,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惰赋,死亡現(xiàn)場離奇詭異宰掉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赁濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門轨奄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拒炎,你說我怎么就攤上這事挪拟。” “怎么了击你?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵玉组,是天一觀的道長。 經(jīng)常有香客問我丁侄,道長惯雳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任鸿摇,我火速辦了婚禮石景,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己鸵钝,他們只是感情好糙臼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恩商,像睡著了一般变逃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怠堪,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天揽乱,我揣著相機(jī)與錄音,去河邊找鬼粟矿。 笑死凰棉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陌粹。 我是一名探鬼主播撒犀,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掏秩!你這毒婦竟也來了或舞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蒙幻,失蹤者是張志新(化名)和其女友劉穎映凳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邮破,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诈豌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抒和。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矫渔。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摧莽,靈堂內(nèi)的尸體忽然破棺而出蚌斩,到底是詐尸還是另有隱情,我是刑警寧澤范嘱,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站员魏,受9級特大地震影響丑蛤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撕阎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一受裹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦棉饶、人聲如沸厦章。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袜啃。三九已至,卻和暖如春幸缕,著一層夾襖步出監(jiān)牢的瞬間群发,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工发乔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熟妓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓栏尚,卻偏偏與公主長得像起愈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子译仗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.簡介 在gRPC中抬虽,客戶端應(yīng)用程序可以直接調(diào)用不同計(jì)算機(jī)上的服務(wù)器應(yīng)用程序上的方法,就像它是本地對象一樣古劲,使您...
    第八共同體閱讀 1,878評論 0 6
  • gRPC 是啥 A high performance, open-source universal RPC fra...
    專職跑龍?zhí)?/span>閱讀 4,083評論 0 4
  • 最近有朋友問我有沒有用過GRPC 斥赋,我一直以為RESTful的流行讓 RPC(Remote Procedure C...
    dimsky閱讀 10,708評論 8 12
  • 摘要 一、遠(yuǎn)程調(diào)用技術(shù)簡史 二产艾、gRPC 簡介 三疤剑、gRPC 示例代碼 自從產(chǎn)業(yè)界發(fā)明機(jī)器聯(lián)網(wǎng)的那一天就已經(jīng)開始探...
    RiboseYim閱讀 2,595評論 1 7
  • RPC與restful 什么是restful REST就是一種設(shè)計(jì)API的模式隘膘。最常用的數(shù)據(jù)格式是JSON。由于J...
    jepril閱讀 1,559評論 0 1