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

今天聊聊你不知道的gRPC

網絡 網絡管理
相信大家對RPC協議都有一定的了解,并且或多或少都會在項目中涉及,但可能都和小編類似,都是直接使用平臺封裝的插件,對于其中的原理不是很了解,今天借此機會和大家分享下最近接觸的RPC框架-grpc,一同聊聊那些知其然卻不知其所以然的內容。

?大家好,我是指北君。又是一周工作日的最后一天,但也不要忘記努力。

吃得苦中苦,你長大開路虎,少壯不努力,你長大開夏利。

接下來開始進入正題~

?前言

相信大家對RPC協議都有一定的了解,并且或多或少都會在項目中涉及,但可能都和小編類似,都是直接使用平臺封裝的插件,對于其中的原理不是很了解,今天借此機會和大家分享下最近接觸的RPC框架-grpc,一同聊聊那些知其然卻不知其所以然的內容。

?概述

RPC(Remote Procedure Call)遠程過程調用協議,是一種本地可以通過網絡請求遠程計算機,完成計算機間的數據內容的交互的協議,不需要了解網絡底層技術就可以快速上手,使得開發更加容易,同時提升了交互體驗效率。

為了方便開發,有很多基于RPC協議實現的RPC框架,比如Thrift、Dubbo,和本文即將要介紹的gRPC。

?什么是gRPC

  • gRPC是由google開發的一種支跨平臺(語言)、高性能、開源通用的RPC框架。
  • 它是基于HTTP2.0協議的,可以保持客戶端與服務端長連接,基于二進制流(字節流)傳輸數據。
  • 客戶端與服務端交互過程

客戶端(gRPC Sub)調用A方法,發起RPC請求

請求內容使用Protobf進行對象序列化壓縮

服務端(gRPC Server)接收請求,解析請求內容,業務處理后返回

響應結果通過Protobuf進行對象序列化壓縮

客戶端接收響應,解析響應內容,最終完成交互

?實踐案例

小編以java版進行案例展示,其它語言類似,可自行測試

POM依賴

  • gRPC官方提供完成的依賴配置,按照說明直接引用即可(依賴包含插件),版本僅供參考,也可選擇其它版本。

<!-- gRPC配置 -->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.29.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.29.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-services</artifactId>
<version>1.29.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.29.0</version>
</dependency>

<!-- proto插件 -->
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.11.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.29.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

編寫protobuf文件

  • 小編使用的是proto3版本,需要注意固定的目錄結構(src/proto/*.proto),否則會編譯失敗。
  • proto文件有固定的編寫格式,可以自行上網搜索即可?

syntax = "proto3";
//包所在路徑
option java_package = "com.greatom.dockerdemo.rule";
option java_multiple_files = true;
package rule;
//聲明服務和方法
service RuleService {
//查詢并更新規則
rpc getArchivesDic (RuleRequest) returns (RuleResponse);
//獲取當前規則字典
rpc getRule (Request) returns (Response);
}
//定義請求對象
message RuleRequest {
// message RuleRPCDTO {
// int32 ruleCode = 1;
// string administrativeCost = 2;
// }
Response ruleRPCDTO = 1;
int32 basicId = 2;
}
//定義響應對象
message RuleResponse {
int32 id = 1;
}
message Request {
}
//定義響應消息
message Response {
int32 ruleCode = 1;
string administrativeCost = 2;
}
  • 使用maven插件編譯,雙擊執行(生成Bean,maven->Plugins->protobuf->protobuf:compile;生成具體接口,maven->Plugins->protobuf->protobuf:compile-custom)。
  • 小編只執行protobuf:compile命令,然后在target目錄(\target\generated-sources\protobuf)下就找到了生成的java文件,復制出來粘貼到項目執行目錄下即可。

編寫接口實現類

  • 編譯完后會生成RuleServiceGrpc接口,接下來就是按照自己的業務需求編寫邏輯即可。小編定義的兩個接口分別是 getArchivesDic(更新規則)、getRule(查詢規則)。具體實現如下

// 繼承生成的RuleServiceGrpc.RuleServiceImplBase
// 實現接口具體邏輯
@Component
public class RuleGRPCServer extends RuleServiceGrpc.RuleServiceImplBase {
// 更新規則字典
@Override
public void getArchivesDic(RuleRequest request, StreamObserver<RuleResponse> responseObserver) {
Response ruleRPCDTO = request.getRuleRPCDTO();
RuleDTO ruleDTO = new RuleDTO();
BeanUtils.copyProperties(ruleRPCDTO, ruleDTO);
RuleResponse ruleResponse = RuleResponse.newBuilder().setId(1).build();
responseObserver.onNext(ruleResponse);
responseObserver.onCompleted();
}
// 查詢規則字典
@Override
public void getRule(Request request, StreamObserver<Response> responseObserver) {
Response response = Response.newBuilder().setRuleCode(1)
.setAdministrativeCost("2222").build();
responseObserver.onNext(response);
responseObserver.onCompleted();
}
}

服務端與客戶端

  • 服務端啟動類

public static void main(String[] args) throws Exception {
// 設置service接口.
Server server = ServerBuilder.forPort(9999).addService(new RuleGRPCServiceImpl()).build().start();
System.out.println(String.format("GRpc服務端啟動成功, 端口號: %d.", port));
server.awaitTermination();
}

日志 --- GRpc服務端啟動成功, 端口號: 9999.
  • 客戶端啟動類

 public static void main(String[] args) throws Exception {
// 1. 拿到一個通信的channel
ManagedChannel managedChannel = ManagedChannelBuilder.forAddress("localhost", 9999).usePlaintext().build();
try {
// 2.拿到道理對象
RuleServiceGrpc.RuleServiceBlockingStub rpcDateService = RuleServiceGrpc.newBlockingStub(managedChannel);
Request rpcDateRequest = Request
.newBuilder()
.build();
// 3. 請求
Response rpcDateResponse = rpcDateService.getRule(rpcDateRequest);
// 4. 輸出結果
System.out.println(rpcDateResponse.getRuleCode());
} finally {
// 5.關閉channel, 釋放資源.
managedChannel.shutdown();
}
}

日志:
- 16:05:44.628 [grpc-nio-worker-ELG-1-2] DEBUG io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler - [id: 0x8447cc92, L:/127.0.0.1:60973 - R:localhost/127.0.0.1:9999] INBOUND DATA: streamId=3 padding=0 endStream=false length=12 bytes=0000000007086f1203323232
- 16:05:44.648 [grpc-nio-worker-ELG-1-2] DEBUG io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler - [id: 0x8447cc92, L:/127.0.0.1:60973 - R:localhost/127.0.0.1:9999] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[grpc-status: 0] padding=0 endStream=true
- 輸出結果-----111
- 16:05:44.664 [grpc-nio-worker-ELG-1-2] DEBUG io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler - [id: 0x8447cc92, L:/127.0.0.1:60973 - R:localhost/127.0.0.1:9999] OUTBOUND GO_AWAY: lastStreamId=0 errorCode=0 length=0 bytes=

客戶端日志輸出結果即表示客戶端通過gRPC調用服務端成功,并返回結果。

?總結

gRPC本質上就是傳統的C|S模型,這樣看角色分的清楚,也很容易理解。

還有就是它很聰明的點是基于HTTP2.0協議的,而不是自己制定,這就對未來的網絡開發很友好,降低了門檻。

比較難上手的點在于proto文件的編寫和使用,這部分需要插件等依賴,過程相對復雜,但也可能會出現工具或腳本,可以簡化下這部分。但生成代碼確實是真香~ 減少了一部分工作量。?

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2021-02-01 23:23:39

FiddlerCharlesWeb

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2019-06-26 09:00:53

Windows 10Windows便箋

2009-12-10 09:37:43

2022-10-13 11:48:37

Web共享機制操作系統

2011-09-15 17:10:41

2010-08-23 09:56:09

Java性能監控

2020-09-15 08:35:57

TypeScript JavaScript類型

2021-10-17 13:10:56

函數TypeScript泛型

2021-12-29 11:38:59

JS前端沙箱

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2015-06-19 13:54:49

2020-08-11 11:20:49

Linux命令使用技巧

2012-11-23 10:57:44

Shell

2019-11-20 10:25:06

sudoLinux

2017-03-02 14:05:42

AndroidAndroid Stu調試技巧

2023-12-21 14:40:09

Python編程語言

2014-03-12 09:23:06

DevOps團隊合作

2012-06-26 15:49:05

點贊
收藏

51CTO技術棧公眾號

韩国成人福利片在线播放| 国产欧美三级电影| 亚洲三级视频在线观看| 国产精品日韩欧美一区二区| 中文字字幕在线中文| 国产欧美日韩一区二区三区四区| 日韩欧美在线观看| 福利在线小视频| 日本一级在线观看| 久久99精品久久久久久久久久久久| 欧美激情亚洲国产| 极品蜜桃臀肥臀-x88av| 欧美日本三级| 在线观看欧美精品| 欧美精品自拍视频| 蜜桃视频网站在线观看| 成人一二三区视频| 成人信息集中地欧美| 久久久久久久久影院| 国产电影一区二区在线观看| 日韩激情第一页| 亚洲av毛片在线观看| 美女网站视频一区| 天天影视涩香欲综合网| 国内自拍中文字幕| 1769在线观看| 国产天堂亚洲国产碰碰| 国产视色精品亚洲一区二区| 国产日韩欧美视频在线观看| 日本中文字幕不卡| 欧美在线性爱视频| 中文字幕一区二区三区手机版 | 欧美日韩大片在线观看| 欧美a级成人淫片免费看| 精品中文字幕久久久久久| 麻豆传媒在线看| 丰满少妇一区| 在线观看网站黄不卡| 欧美 激情 在线| 黄色在线免费观看网站| 亚洲国产综合色| 日韩中文字幕在线不卡| 久草资源在线| 国产精品对白交换视频| 婷婷精品国产一区二区三区日韩 | 亚洲成av人片在线观看www| 欧美日韩精品电影| 在线观看亚洲色图| 亚洲综合av一区二区三区| 精品色蜜蜜精品视频在线观看| 天堂av免费看| 污视频在线免费观看网站| 亚洲色欲色欲www| 红桃一区二区三区| av免费在线免费观看| 亚洲欧美国产三级| 一本色道久久88亚洲精品综合| 人妻一区二区三区| 北条麻妃一区二区三区| 国产美女在线精品免费观看| 欧美 日韩 综合| 91丝袜美腿高跟国产极品老师 | 国产精品久久91| 无码任你躁久久久久久久| 日韩二区三区在线观看| 国产精品欧美在线| 91av国产精品| 国产成人免费视频| 精品国产乱码一区二区三区四区| 亚洲欧洲成人在线| 国产午夜亚洲精品羞羞网站| 亚洲一区二区免费视频软件合集 | 丰满人妻一区二区三区四区53| 国产99精品国产| 狠狠色噜噜狠狠狠狠色吗综合| 无码国产精品一区二区色情男同 | 亚洲 欧美 变态 另类 综合| 在线一区电影| 91精品国产精品| 波多野结衣黄色| 国产在线播放一区三区四| www.成人三级视频| 欧美午夜黄色| 亚洲婷婷综合久久一本伊一区| 久久久99精品视频| 综合日韩av| 欧美三电影在线| 久草免费资源站| 国产欧美一区| 欧美巨乳美女视频| 中文字幕黄色片| 国产一区不卡精品| 欧美日韩在线观看一区| 黄视频在线观看网站| 天天av天天翘天天综合网色鬼国产| 男人插女人下面免费视频| 99视频这里有精品| 亚洲欧美精品suv| 国产一区二区三区在线视频观看| 国产亚洲午夜| 亚洲伊人成综合成人网| 深夜福利视频在线观看| 亚洲乱码日产精品bd| 久久精品99国产| 日韩一区二区三区色| www.com操| 色视频免费在线观看| 国产精品每日更新在线播放网址| 久久人妻无码一区二区| 欧美三级精品| 亚洲国产成人精品久久| 人与动物性xxxx| 性欧美xxxx大乳国产app| 亚洲free嫩bbb| 精品美女视频在线观看免费软件| 亚洲九九爱视频| 在线观看免费成人av| 国产成人精品亚洲线观看| 日韩最新免费不卡| 欧美a视频在线观看| 处破女av一区二区| 国产手机视频在线观看| 性高爱久久久久久久久| 亚洲国产中文字幕久久网| 任我爽在线视频| 日韩福利电影在线| 欧美日韩另类综合| 成人免费图片免费观看| 日韩一区和二区| 美国黄色特级片| 久久av最新网址| 国外成人在线视频网站| a毛片在线播放| 欧美精品99久久久**| 337人体粉嫩噜噜噜| 男人的天堂亚洲在线| 久久视频在线观看中文字幕| 国产蜜臀av在线播放| 精品少妇一区二区三区日产乱码| 免费看特级毛片| 久久99精品久久久久婷婷| 涩涩涩999| 日本综合视频| 一区二区福利视频| 高潮毛片又色又爽免费| 91蝌蚪porny| 三级4级全黄60分钟| 日韩啪啪网站| 欧洲中文字幕国产精品| 性感美女福利视频| 精品人伦一区二区三区蜜桃免费| 国产精品无码电影| 中文在线一区| 美媛馆国产精品一区二区| 中文字幕不卡三区视频| 亚洲男人天堂手机在线| 波多野结衣啪啪| 中文字幕+乱码+中文字幕一区| 美女喷白浆视频| 日韩精品二区| 亚洲综合日韩中文字幕v在线| 91小视频xxxx网站在线| 日韩限制级电影在线观看| 国产尤物在线播放| 国产不卡视频在线播放| 日韩黄色片在线| 久久精品凹凸全集| 人妖精品videosex性欧美| 成人网视频在线观看| 欧美色图天堂网| 国产又粗又硬又长又爽| 国产成人精品免费网站| 日本在线xxx| 国产探花一区| 国产日韩精品在线播放| 2021国产在线| 精品亚洲永久免费精品| 在线观看av大片| 亚洲精品国产a| 在线观看国产免费视频| 日韩国产精品久久| 只有这里有精品| 精品三级av| 国产精品27p| 在线观看免费视频你懂的| 亚洲精品国产suv| 中文字幕在线观看精品| 一级中文字幕一区二区| 3d动漫精品啪啪一区二区下载| 美女视频黄频大全不卡视频在线播放 | 天堂网中文字幕| 自拍偷拍国产精品| 人妻丰满熟妇av无码久久洗澡| 三级欧美韩日大片在线看| www.亚洲一区二区| 亚洲欧美tv| 91午夜理伦私人影院| 日本在线啊啊| 美女精品视频一区| 可以在线观看的av网站| 日韩欧美一卡二卡| 中文字幕 亚洲视频| 亚洲一区二区欧美日韩| 国产探花视频在线播放| a在线欧美一区| 99九九精品视频| 久久精品人人| av在线播放天堂| 天天做天天爱天天综合网| 老牛影视免费一区二区| 亚洲日本视频在线| 国产精自产拍久久久久久| 中文字幕 在线观看| 欧美成人在线影院| 在线免费观看黄色| 亚洲人在线视频| 欧美特级特黄aaaaaa在线看| 6080yy午夜一二三区久久| 99re国产在线| 欧美午夜精品在线| 久久久久无码国产精品| 中文字幕一区二区三区视频| 欧美多人猛交狂配| 国产91丝袜在线观看| 亚洲18在线看污www麻豆| 免费亚洲一区| 免费看一级大黄情大片| 激情五月***国产精品| 伊人色综合久久天天五月婷| 亚洲人成网77777色在线播放 | 国产黄色av网站| 欧美色综合网站| 亚洲 欧美 日韩 在线| 欧美日韩国产麻豆| 国产在线综合网| 亚洲伊人色欲综合网| 青草草在线视频| 亚洲综合在线第一页| 欧美爱爱小视频| 亚洲美女区一区| 中文字幕手机在线观看| 国产精品白丝在线| 三级黄色录像视频| 国产精品福利一区二区三区| 丁香激情五月少妇| 日本一二三四高清不卡| 先锋影音av在线| 欧美—级在线免费片| 久久精品国产亚洲av久| 久久久久久麻豆| 亚洲精品成人av久久| 欧美高清在线视频| 美女网站视频色| 亚洲欧美一区二区三区久本道91| 人人干在线观看| 亚洲精品成人在线| 国产亚洲精品久久久久久打不开| 一区二区久久久久久| 国产五月天婷婷| 欧美日韩裸体免费视频| 亚洲天堂一区在线| 欧美专区日韩专区| 一区二区www| 日韩一区二区三| 日本精品999| 亚洲欧洲日本专区| 亚洲欧美视频一区二区| 另类专区欧美制服同性| 国产白丝在线观看| 欧美做受高潮1| 玖玖精品在线| 成人在线视频网址| 婷婷精品在线| 亚洲一卡二卡三卡| 国产精品豆花视频| 青青草原av在线播放| 美女脱光内衣内裤视频久久影院| 熟妇无码乱子成人精品| 91在线国产福利| 国产精品麻豆免费版现看视频| 亚洲在线一区二区三区| 天堂中文在线网| 欧美日韩二区三区| 天天操天天干天天| 中文字幕无线精品亚洲乱码一区| 国产网站在线免费观看| 国产做受高潮69| 欧美xxxx性| 久久草.com| 911精品美国片911久久久 | 免费在线中文字幕| 国产不卡av在线| 久久久久九九精品影院| 久久久综合香蕉尹人综合网| 一区二区三区中文| 可以在线看的黄色网址| 国产精品一区二区久久精品爱涩 | 风流老熟女一区二区三区| 国产亚洲视频在线| 欧美性爽视频| 国产精自产拍久久久久久| 精品亚洲自拍| 日日噜噜夜夜狠狠久久丁香五月| 99精品免费| 亚洲热在线视频| 欧美国产精品中文字幕| 在线观看 中文字幕| 666欧美在线视频| 国产污视频在线| 91av网站在线播放| 欧美h版在线观看| 日韩免费av一区二区三区| 亚洲三级影院| 精品人妻人人做人人爽夜夜爽| 国产精品三级视频| 最新中文字幕一区| 亚洲国产另类 国产精品国产免费| 欧美96在线| 国产精品久久婷婷六月丁香| 群体交乱之放荡娇妻一区二区 | 亚洲在线国产日韩欧美| 欧美美女性视频| 亚洲国产精品黑人久久久| 国产午夜性春猛交ⅹxxx| 欧美变态tickling挠脚心| 免费在线看黄网站| 国产精品亚发布| 欧美艳星介绍134位艳星| 免费无码国产v片在线观看| 成人综合婷婷国产精品久久 | 色婷婷久久一区二区三区麻豆| 欧美在线 | 亚洲| 欧美高清不卡在线| 日韩视频一区二区三区四区| 在线观看日韩羞羞视频| 免费观看成人av| 欧美三级视频网站| 色成年激情久久综合| 蜜桃视频在线播放| 欧美自拍大量在线观看| 偷窥自拍亚洲色图精选| 久色视频在线播放| 91丨porny丨在线| 中文字幕国产在线观看| 亚洲久久久久久久久久| 国产精品迅雷| 青娱乐一区二区| 丝袜美腿亚洲一区| 欧美人妻一区二区三区| 欧美性一级生活| 男人天堂久久久| 99久久精品无码一区二区毛片 | 欧美成年人视频在线观看| 中文字幕高清不卡| 91久久久久国产一区二区| 日韩一区二区欧美| 国产精品igao视频网网址不卡日韩| 潘金莲一级淫片aaaaa免费看| 国产精品一区免费在线观看| 久久精品亚洲无码| 精品无人区乱码1区2区3区在线| 范冰冰一级做a爰片久久毛片| 四虎影院一区二区三区 | 免费欧美在线| 国产一二三四视频| 91精品国产欧美日韩| 黄页在线观看免费| 麻豆成人av| 久久99国产精品尤物| 黄色一级视频免费观看| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 国产激情精品一区二区三区| 精品一区二区三区毛片| 国产成人午夜视频| 亚洲欧美精品一区二区三区| 国产一区二区黑人欧美xxxx| 色成人综合网| 国产免费黄色一级片| 久久色.com| 国产伦理吴梦梦伦理| 午夜精品久久久99热福利| 国产一区二区三区四区五区传媒| 国产欧美激情视频| 亚洲福利一区二区三区| 91福利在线视频| 国产女主播一区二区三区| 欧美aⅴ一区二区三区视频| 校园春色 亚洲| 亚洲午夜精品久久久久久久久久久久 | 亚洲第一偷拍| 国产在线观看无码免费视频| 欧美精品日韩一区| 久久男人av资源站| 在线观看日本一区| 91麻豆视频网站| 国产又黄又粗又猛又爽| 欧美性资源免费| 女生裸体视频一区二区三区| 深爱五月激情网| 欧美不卡一区二区|