精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用gRPC構建實際的微服務

譯文
開發 架構
早期的微服務實現利用了代表性狀態傳輸(REST)架構作為事實上的通信技術。然而,充分利用REST的服務常常適用于面向外部的服務,這些服務直接暴露給消費者。我們在本文中將更深入地介紹為什么gRPC是構建微服務間通信的一種出色選擇。

【51CTO.com快譯】早期的微服務實現利用了代表性狀態傳輸(REST)架構作為事實上的通信技術。然而,充分利用REST的服務常常適用于面向外部的服務,這些服務直接暴露給消費者。由于它們基于傳統的基于文本的消息傳遞(JSON、XML和CVS over HTTP等)――針對人類進行了優化,因此這些不是內部服務間通信的理想選擇。

相反,使用一種基于文本的消息傳遞協議,我們可以利用針對服務間通信進行優化的二進制協議。云原生計算基金會的gRPC(一種高性能的開源通用遠程過程調用框架)是服務間通信的理想選擇,因為它使用協議緩沖區(protocol buffer)作為服務間通信的二進制數據交換格式。

我們使用不同的技術和編程語言構建多個微服務時,有一種標準的方法來定義服務接口和底層的消息交換格式很重要。gRPC提供了一種簡潔而強大的方法,可以使用協議緩沖區指定服務合約。因此,gRPC可能是最適合構建內部微服務間通信的解決方案。

我們在本文中將更深入地介紹為什么gRPC是構建微服務間通信的一種出色選擇。

gRPC的基礎知識

有了gRPC,客戶可以對不同機器上的服務器應用程序直接調用方法,好像該機器就是本地對象。gRPC立足于傳統的遠程過程調用(RPC)技術的基礎,但是實施在現代技術堆棧(比如HTTP2和協議緩沖區等)上,確保***的互操作性。

gRPC本身支持這種功能:使用gRPC接口定義語言(IDL)來定義服務合約。因此,作為服務定義的一部分,你可以指定可以遠程調用的方法以及參數和返回類型的數據結構。

圖1表明了gRPC的使用,在線零售應用程序作為庫存和產品搜索服務的一部分。 Inventory服務的合約使用gRPC IDL來定義,該IDL在inventory.proto文件中已有指定。因此,Inventory服務的開發人員應先使用該服務來定義所有業務功能,然后利用proto文件生成服務端框架代碼。與之相仿,可以使用同樣的proto文件生成客戶端代碼(存根,stub)。

使用gRPC構建實際的微服務

圖1

由于gRPC與編程語言無關,你可以使用異構語言來構建服務和客戶端。在這個例子中,我們使用Ballerina(ballerina.io)生成了Inventory服務代碼,使用Java生成了客戶端代碼。你可以使用GitHub上的這個源代碼(https://github.com/kasun04/grpc-microservices)來試試該示例。

庫存(inventory.proto)的服務合約如下所示: 

  1. syntax = "proto3"
  2. package grpc_service; 
  3. import "google/protobuf/wrappers.proto"
  4. service InventoryService { 
  5.    rpc getItemByName(google.protobuf.StringValue) returns (Items); 
  6.    rpc getItemByID(google.protobuf.StringValue) returns (Item); 
  7.    rpc addItem(Item) returns (google.protobuf.BoolValue); 
  8. message Items { 
  9.    string itemDesc = 1; 
  10.    repeated Item items = 2; 
  11. message Item { 
  12.     string id = 1; 
  13.     string name = 2; 
  14.     string description = 3; 
  15.  

服務合約易于理解,可以在客戶端和服務之間共享。如果服務合約有任何變化,服務代碼和客戶端代碼都要重新生成。

比如說,以下代碼片段顯示了為Ballerina生成的gRPC服務的代碼。 對于我們在gRPC服務定義中的每個操作,都會生成相應的Ballerina代碼。(Ballerina提供了開箱即用的功能,使用“ballerina grpc –input inventory.proto –output service-skeleton –mode service”或“ballerina grpc –input inventory.proto –output bal-client –mode client”,生成服務代碼或客戶端代碼)。 

  1. import ballerina/grpc; 
  2. import ballerina/io; 
  3. endpoint grpc:Listener listener { 
  4.    host:"localhost"
  5.    port:9000 
  6. }; 
  7. @grpc:ServiceConfig 
  8. service InventoryService bind listener { 
  9.    getItemByName(endpoint caller, string value) { 
  10.        // Implementation goes here. 
  11.        // You should return a Items 
  12.    } 
  13.    getItemByID(endpoint caller, string value) { 
  14.        // Creating a dummy inventory item 
  15.        Item requested_item; 
  16.        requested_item.id = value; 
  17.        requested_item.name = "Sample Item " + value ; 
  18.        requested_item.description = "Sample Item Desc for " + value; 
  19.        _ = caller->send(requested_item); 
  20.        _ = caller->complete(); 
  21.    } 
  22.    addItem(endpoint caller, Item value) { 
  23.        // Implementation goes here. 
  24.        // You should return a boolean 
  25.    } 
  26.  

至于客戶端,再次用Inventory服務的gRPC服務定義來生成產品搜索服務,這是一個Java(Spring Boot)服務。你可以使用maven插件為Spring Boot/Java服務生成客戶端存根(客戶端代碼嵌入在Spring Boot服務中)。調用生成的客戶端存根的客戶端代碼如下所示: 

  1. package mfe.ch03.grpc; 
  2. import com.google.protobuf.StringValue; 
  3. import io.grpc.ManagedChannel; 
  4. import io.grpc.ManagedChannelBuilder; 
  5. public class InventoryClient { 
  6.    public static void main(String[] args) { 
  7.        ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", 9000) 
  8.                .usePlaintext() 
  9.                .build(); 
  10.        InventoryServiceGrpc.InventoryServiceBlockingStub stub 
  11.                = InventoryServiceGrpc.newBlockingStub(channel); 
  12.        Inventory.Item item = stub.getItemByID( 
  13. StringValue.newBuilder().setValue("123").build()); 
  14.        System.out.println("Response : " + item.getDescription()); 
  15.    } 
  16.  

底層的通信

客戶端調用服務時,客戶端gRPC庫使用協議緩沖區,并編組(marshal)遠程過程調用,該調用隨后通過HTTP2來發送。在服務器端,請求解組(un-marshalled),使用協議緩沖區執行相應的過程調用。響應遵循從服務器到客戶端的類似的執行流程。

使用gRPC開發服務和客戶端的主要優點是,你的服務代碼或客戶端代碼不需要為解析JSON或類似的基于文本的消息格式(在代碼內或隱含在Jackson等底層庫中,對服務代碼而言隱藏起來)操心。二進制格式解組、轉換成對象。此外,我們要處理多個微服務并確保和維護互操作性時,對通過IDL定義服務接口給予***支持是強大的功能。

用gRPC構建微服務的實例

基于微服務的應用程序由多個服務組成,并使用眾多編程語言構建?;跇I務使用場景,你可以選擇最合適的技術來構建服務。gRPC在這種多語言架構中起到非常重要的作用。如圖2所示,產品搜索服務與另外多個服務進行通信,這些服務是使用gRPC作為通信協議構建的。因此,我們可以為每個服務定義服務合約:庫存、電子品類和服裝品類等?,F在,如果你想要打造一種多語言架構,可以使用不同的實現技術來生成服務框架。

圖2顯示了用Ballerina lang編寫的庫存服務、用Golang編寫的電子服務和用Vert.x(Java)編寫的服裝服務??蛻舳诉€可以為這每個服務合約生成存根。

圖2

仔細研究圖2中的微服務通信風格,可以看出gRPC用于所有內部通信,而面向外部的通信可以基于REST或GraphQL。我們將REST用于面向外部的通信時,大多數外部客戶端可以將服務用作API(利用Open API等API定義技術),因為大多數外部客戶端知道如何與充分利用REST的HTTP服務進行通信。此外,我們可以使用GraphQL之類的技術,讓消費者可以根據特定的客戶需求來查詢服務,這是無法用gRPC提供便利的。

因此作為一般實踐,我們可以將gRPC用于內部微服務之間的所有同步通信。其他同步消息傳遞技術(比如充分利用REST的服務和GraphQL)更適合面向外部的服務。

作者簡介:WSO2架構團隊負責該公司集成平臺的開發工作,Kasun Indrasiri是該團隊的重要成員。之前,他作為產品主管參與開發了WSO2企業服務總線(ESB)。他撰有《WSO2 ESB入門》一書,并與人合著了《企業級微服務》。他是Apache軟件基金會的當選成員,還是Apache Synapse開源ESB項目的項目管理委員會成員和提交者。

原文標題:Build Real-World Microservices with gRPC,作者:Kasun Indrasiri

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2022-06-07 08:19:30

gRPCBallerina微服務

2017-08-07 08:41:13

Java微服務構建

2024-09-30 14:38:47

2023-06-01 15:14:55

架構Python微服務

2022-09-05 08:00:00

Java微服務AuraDB

2020-02-17 16:28:49

開發技能代碼

2025-02-04 13:53:18

NixGogRPC

2021-12-29 08:30:48

微服務架構開發

2023-01-11 15:17:01

gRPC.NET 7

2018-04-23 14:31:02

微服務GraphQLBFF

2018-09-12 09:00:00

數據庫Redis微服務

2022-08-22 07:26:32

Node.js微服務架構

2022-10-10 08:00:00

微服務Spring Boo容器

2022-02-20 22:10:20

微服務框架gRPC

2022-10-17 00:14:55

微服務稅mock代理服務

2022-09-12 15:58:50

node.js微服務Web

2016-06-03 09:59:43

微服務架構敏捷

2021-12-05 23:14:24

微服務GolanggRPC

2022-03-29 10:36:32

技術架構微服務

2018-07-09 09:27:10

Spring Clou微服務架構
點贊
收藏

51CTO技術棧公眾號

亚洲大片免费观看| 亚洲欧美自拍视频| www.xxxx欧美| 一区二区高清| 91论坛在线播放| 91国产美女在线观看| 亚洲激情 欧美| 涩涩在线视频| 国产精品美女久久久久久2018| 成人黄色片在线| 精品无码久久久久久久久| 女人抽搐喷水高潮国产精品| 色综合久久久久综合99| 亚洲一区不卡在线| 国产尤物在线视频| 日韩久久电影| 欧美大黄免费观看| 日本成年人网址| 美女写真理伦片在线看| 国产91丝袜在线播放九色| 91产国在线观看动作片喷水| 私密视频在线观看| 日韩成人亚洲| 亚洲黄色免费电影| 久久精品丝袜高跟鞋| 亚洲美女av在线播放| 无遮挡又爽又刺激的视频| 在线激情免费视频| 国产精品888| 欧美在线一级va免费观看| 少妇一级黄色片| 国产一区丝袜| 欧美人与性动xxxx| 免费在线观看视频a| 亚洲图片88| jlzzjlzz国产精品久久| 国产欧美在线播放| 日韩和一区二区| 一区二区在线影院| 亚洲男人的天堂在线| 一级黄色片国产| 日产福利视频在线观看| 亚洲欧美aⅴ...| 日本一区二区三区视频在线观看| 亚洲成人黄色片| 久久精品国产精品青草| 日韩免费观看网站| 中文字幕一区二区三区精品| 久久久久国产精品| 永久免费精品影视网站| 午夜福利三级理论电影| 日韩黄色在线| 欧美三级日韩三级国产三级| 日本免费黄视频| 久草在线视频福利| 亚洲女同女同女同女同女同69| 欧美人与物videos另类| 欧美 日韩 中文字幕| 国产乱国产乱300精品| 国产精品女人网站| 人人草在线观看| 一区二区动漫| 午夜精品久久久久久久99黑人| www日韩在线| 水蜜桃久久夜色精品一区| 亚洲欧美日韩久久久久久| 日韩视频免费直播| 无码人妻h动漫| 超碰在线最新网址| 香蕉影视欧美成人| 日本十八禁视频无遮挡| 国产秀色在线www免费观看| 国产精品三级电影| 日韩欧美亚洲在线| 国产在线日本| 中文字幕不卡三区| 亚洲人成网站在线观看播放| 大地资源中文在线观看免费版| 久久视频一区二区| 就去色蜜桃综合| 色视频免费在线观看| 国产99久久久久| 亚洲一区二区在线播放| 99久久国产免费| 国产一区二区在线免费观看| 成人激情av在线| 国产不卡精品视频| 国产精品系列在线观看| 99久久无色码| 国产富婆一级全黄大片| 久久精品国产一区二区三| 91中文精品字幕在线视频| 国产视频一区二区三区四区五区| 国产成人精品午夜视频免费 | 日本少妇做爰全过程毛片| 国产日本在线| 中文字幕亚洲精品在线观看| 日韩av电影免费观看| 在线看av的网址| 亚洲综合清纯丝袜自拍| 九色自拍视频在线观看| 欧美色网在线| 欧美日韩国产小视频在线观看| 日本黄色三级网站| 青青草这里只有精品| 亚洲一区二区久久久| 永久免费看mv网站入口| 亚洲经典三级| 国产精品午夜国产小视频| 国产国语亲子伦亲子| xf在线a精品一区二区视频网站| 日本高清视频一区二区三区| 激情在线小视频| 欧美日韩激情视频| 激情文学亚洲色图| 性欧美xxxx免费岛国不卡电影| 在线成人激情黄色| 久久久久久久国产精品毛片| 日韩一区精品视频| 亚洲在线一区二区| 日本一区视频| 亚洲综合免费观看高清完整版在线| 国产亚洲天堂网| 国产精久久久| 亚洲欧美一区二区三区久久 | 91精品91久久久中77777老牛| 欧美亚洲色综久久精品国产| 99久久久成人国产精品| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 鲁一鲁一鲁一鲁一澡| 日韩成人综合网站| 日韩经典中文字幕| 国产精品精品软件男同| 久久中文在线| 99re视频在线播放| 9i精品一二三区| 午夜精品久久久久久久| 手机av在线网站| 日本欧美国产| 欧美中文字幕视频在线观看| 国产高清在线观看视频| 国产精品国产三级国产普通话三级| 日本一本草久p| 精品乱码一区二区三区四区| 日韩欧美国产电影| 日本二区三区视频| 开心九九激情九九欧美日韩精美视频电影| 精品视频在线观看| 国产探花视频在线观看| 欧美精品vⅰdeose4hd| 日本乱子伦xxxx| 亚洲在线一区| 久久久久网址| 日本性爱视频在线观看| 欧美一区二区在线看| 日韩精品欧美专区| 久久久久久久久黄色| 黄色国产网站在线播放| 精品日韩一区| 欧美激情二区三区| 中文字幕乱码人妻二区三区| 久久久精品综合| 日韩在线综合网| 国语一区二区三区| 久久免费视频在线| 天天干天天操av| 精品毛片三在线观看| 岛国精品资源网站| 日韩天天综合| 久久久精品动漫| 第84页国产精品| 尤物99国产成人精品视频| 激情视频网站在线观看| 久久久不卡网国产精品二区| 成人一区二区三| 亚洲系列另类av| 国产成人精品a视频一区www| 国产精品视频二区三区| 狠狠做深爱婷婷久久综合一区| 中文在线永久免费观看| 噜噜噜躁狠狠躁狠狠精品视频 | 日韩精品欧美专区| 黄色成人在线视频| y97精品国产97久久久久久| www.久久视频| 国产精品色噜噜| www.com黄色片| 亚洲视频电影在线| 福利视频久久| 性国裸体高清亚洲| 中文字幕日韩欧美在线| 97精品人妻一区二区三区| 最近国产精品视频| 亚洲黄一区二区三区| 色偷偷中文字幕| 国产欧美日韩一区二区三区在线| 亚洲自拍偷拍欧美| 韩日视频在线观看| 韩日一区二区三区| 91视频免费在线观看| 大胆人体一区| 欧美成人午夜剧场免费观看| 欧美少妇另类| 日韩免费性生活视频播放| 欧美日韩a v| 亚洲最新在线观看| 成年人视频软件| 99精品视频一区| 天堂网成人在线| 日本va欧美va瓶| 91九色在线观看视频| 亚洲理论电影网| 色综合久久久久久久久五月| 国产精品中文字幕制服诱惑| 成人网在线观看| 欧美日韩五区| 欧美一区三区三区高中清蜜桃| 国产欧美黑人| 一区国产精品视频| 深夜福利在线看| 欧美一级淫片007| 伊人久久亚洲综合| 色老汉av一区二区三区| 国产视频91在线| 亚洲一级二级在线| 麻豆一区产品精品蜜桃的特点| 一区视频在线播放| 青青青视频在线播放| 久久久电影一区二区三区| 日本一级片在线播放| 高清在线观看日韩| aaaaaaaa毛片| 国产精品一区免费视频| 日本成人在线视频网址| 伦av综合一区| 午夜视频在线观看一区二区| 欧美成人aaa片一区国产精品| 国产精品的网站| 日本成人免费在线观看 | 国内精品久久99人妻无码| 成人午夜在线视频| 成人做爰www看视频软件| 国产成人综合自拍| 麻豆传媒在线看| 国产精品一卡二卡| 国产一精品一aⅴ一免费| 国产成人亚洲精品青草天美| 中文字幕在线视频一区二区| 国产一级精品在线| 四虎1515hh.com| 丰满白嫩尤物一区二区| 国产69视频在线观看| gogo大胆日本视频一区| 你懂的在线观看网站| 99久免费精品视频在线观看| 亚洲精品中文字幕在线播放| 91香蕉视频mp4| 成人免费网站黄| 国产欧美一区二区精品性色超碰| 麻豆av免费观看| 国产精品免费视频网站| 国产美女久久久久久| 一区二区三区视频在线看| 久久国产在线视频| 黑人狂躁日本妞一区二区三区| 亚洲AV无码成人精品区东京热| 黑人欧美xxxx| 综合久久中文字幕| 亚洲人体偷拍| 国产在线欧美日韩| 米奇777超碰欧美日韩亚洲| 亚洲国产精品久久久久婷婷老年| 久久激情电影| 国产片侵犯亲女视频播放| 亚洲激情成人| 波多结衣在线观看| 国产精品亚洲一区二区三区妖精| 色哟哟网站在线观看| 久久女同互慰一区二区三区| 免费看一级黄色| 亚洲高清视频在线| 成人黄色三级视频| 日韩精品中文字幕一区二区三区| 天堂网在线播放| 色偷偷91综合久久噜噜| 97在线超碰| 国产精品视频区| 亚洲一区电影| 亚洲精品在线视频观看| 欧美激情综合色综合啪啪| 国产精品99久久免费黑人人妻| 国产一区二区福利| 国产偷人妻精品一区| 亚洲欧美影音先锋| 欧美啪啪小视频| 日韩一区二区麻豆国产| 精品视频一二区| 欧美激情中文字幕乱码免费| 久久久人成影片一区二区三区在哪下载 | 日韩精品资源二区在线| 牛牛澡牛牛爽一区二区| 欧美激情女人20p| 激情久久一区二区| 精品视频免费观看| 欧美日本不卡| 粉色视频免费看| 久久久午夜精品理论片中文字幕| 美女毛片在线观看| 欧美日韩国产乱码电影| 神马午夜在线观看| 欧美成人午夜激情视频| 成人久久网站| 欧美亚洲精品日韩| 天堂中文在线观看视频| 日韩久久免费av| 黄色网页在线观看| 国产精品久久久久影院日本| 另类ts人妖一区二区三区| 大桥未久一区二区三区| 免费高清成人在线| 最近中文字幕免费| 欧美日韩在线第一页| 亚洲男人天堂久久| 欧美成人第一页| 日本黄色成人| 日韩美女一区| 午夜亚洲影视| 野花社区视频在线观看| 亚洲国产精品久久久久秋霞影院| 国产精品国产av| 丝袜美腿精品国产二区 | 91精品国产综合久久男男 | 欧美高清一级片| 亚洲AV无码成人精品一区| 麻豆精品一区二区三区| 久久日免费视频| 欧美日韩一区二区三区四区| 国产大片在线免费观看| 国产不卡在线观看| 精品产国自在拍| 亚洲精品中文字幕无码蜜桃| 久久久高清一区二区三区| 免费看污视频的网站| 一本一道久久a久久精品逆3p| 桃子视频成人app| 日韩少妇中文字幕| 奇米在线7777在线精品| 黄色国产在线播放| 欧美日韩国产片| 激情在线小视频| 97视频热人人精品| 亚洲午夜极品| 182在线视频| 一本久道久久综合中文字幕| 欧美男男同志| 国产精品久久久久久超碰| 成人同人动漫免费观看| 污污动漫在线观看| 亚洲天堂a在线| 精品免费久久久| 91成人国产在线观看| 一道本一区二区三区| 伊人国产在线视频| 日韩一区日韩二区| www日本高清| 欧美人在线视频| 日本女人性生活视频| 人体久久天天| 91精品欧美福利在线观看| 大肉大捧一进一出好爽视频| a级影片在线观看| 亚洲精品国久久99热| 亚洲欧美日韩三级| 日韩欧美一区免费| 精品国产_亚洲人成在线| 99热在线精品观看| 51妺嘿嘿午夜福利| 777精品伊人久久久久大香线蕉| 中文字幕中文字幕在线十八区| 国产精品日本一区二区| 久久亚洲电影| 一区二区成人免费视频| 亚洲精品国产品国语在线| 国产亚洲人成a在线v网站| 欧美性猛交内射兽交老熟妇| 久久影音资源网| 99久久久国产精品无码网爆| 97香蕉超级碰碰久久免费软件| 欧美日韩伦理| 国产精品偷伦视频免费观看了| 欧美性xxxx| 自拍亚洲图区| 日本一区免费看| 国产98色在线|日韩| 中文无码av一区二区三区| 欧美国产极速在线| 不卡一区2区| 亚洲色图14p| 日韩一级免费观看| 日本.亚洲电影|