精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲女同女同女同女同女同69| 黑丝一区二区三区| 欧美性高清videossexo| 中文字幕一区二区三区四区五区六区| 国产精品天天操| 影音国产精品| 亚洲新中文字幕| www.污网站| 1区2区3区在线| 国产亚洲欧洲一区高清在线观看| 国产在线观看不卡| 麻豆视频在线免费看| 51亚洲精品| 色婷婷综合久久久中文字幕| 伊人久久大香线蕉综合75| 亚洲爱爱综合网| 视频一区视频二区在线观看| 国产一区二区三区在线视频| 午夜av中文字幕| 黄色污网站在线观看| 国产免费成人在线视频| 99re国产在线播放| 国产污视频网站| 欧美jjzz| 中文字幕亚洲自拍| 一二三不卡视频| 欧美午夜在线播放| 在线观看亚洲一区| 日韩免费一级视频| av中文字幕在线观看| 久久精品亚洲精品国产欧美kt∨| 操人视频欧美| 国产精选久久久| 肉丝袜脚交视频一区二区| 欧美成人免费大片| 特级西西人体高清大胆| 欧美三级自拍| 精品免费国产二区三区 | 欧美日韩一区自拍 | 成人一区二区电影| 无码人妻丰满熟妇奶水区码| 亚洲第一精品影视| 欧美精品免费看| 国产精品视频在| 蜜桃一区二区三区| 亚洲精品短视频| 亚洲精品激情视频| 亚洲精品在线国产| 91精品国产综合久久福利| 午夜两性免费视频| 国产综合色在线观看| 欧美小视频在线观看| 国产96在线 | 亚洲| 日韩另类在线| 一区二区三区在线视频免费| 一区二区三区日韩视频| 麻豆影院在线观看| 亚洲婷婷综合色高清在线| 亚洲一区二区在线观| 9色在线观看| 国产精品免费免费| 亚洲欧美精品在线观看| 91电影在线播放| 国产精品视频一二三区 | 日韩美女一级视频| 99在线热播精品免费| 精品国产乱码久久久久久丨区2区| 亚洲精品喷潮一区二区三区| 成人三级在线视频| 久久av免费一区| 飘雪影视在线观看免费观看| 国产视频一区在线观看 | 午夜在线观看视频18| 99久久精品国产观看| 欧美激情一区二区三区在线视频| 女人天堂在线| 国产精品伦理在线| 国产911在线观看| 欧美家庭影院| 精品久久在线播放| mm1313亚洲国产精品无码试看| 亚洲精品一区三区三区在线观看| 精品视频在线看| 亚洲AV无码久久精品国产一区| 欧美久久亚洲| 日韩精品免费在线| 久久精品亚洲a| 欧美午夜不卡| 国产成人精彩在线视频九色| 在线观看亚洲一区二区| 国产乱国产乱300精品| 国产伦精品一区二区三区| 日本亚洲欧美| 最新国产成人在线观看| 日本a视频在线观看| 天天综合网站| 欧美一级精品大片| 一本加勒比北条麻妃| 四季av一区二区凹凸精品| 欧美激情国产日韩精品一区18| 在线能看的av| 精品亚洲成a人| 国内精品国语自产拍在线观看| 成人亚洲性情网站www在线观看| 日韩理论片一区二区| 欧美日韩在线视频一区二区三区| 老司机精品视频网| 日韩精品在线观看视频| 日韩激情小视频| 亚洲一区一卡| 97超级碰碰| 草草影院在线观看| 偷偷要91色婷婷| 三级黄色片免费看| 成人嘿咻视频免费看| 久久久久久尹人网香蕉| 中文字幕一区二区三区四区视频 | 日韩中文字幕观看| 国产精品美女久久久久久| 青青草视频在线免费播放| 97久久中文字幕| 亚洲人成在线一二| 国产精品99精品| 精品一区二区精品| 免费99视频| 182在线播放| 欧美一区二区视频网站| 成年人在线免费看片| 亚洲人www| 亚洲综合中文字幕68页| 免费av在线网站| 在线观看av一区二区| 亚洲黄色在线网站| 一区二区视频欧美| 51国偷自产一区二区三区| 亚洲1卡2卡3卡4卡乱码精品| 欧美日韩亚洲激情| 99久久人妻精品免费二区| 综合天堂av久久久久久久| 国产欧美在线观看| aaa日本高清在线播放免费观看| 色婷婷精品大视频在线蜜桃视频| 男女性杂交内射妇女bbwxz| 中文在线日韩| 成人欧美一区二区三区黑人| 在线视频二区| 欧美在线啊v一区| 午夜在线观看一区| 久久久777| 欧美日韩一区二区视频在线| 另类激情视频| 亚洲一区二区福利| 特级西西444www大胆免费看| 久久综合九色综合97婷婷女人| 一二三四视频社区在线| 卡通动漫精品一区二区三区| 久久久久久久久久av| 欧美一级免费片| 亚洲mv在线观看| 中文在线永久免费观看| 99在线精品免费视频九九视| 国产日韩一区二区三区| 国产精品xx| 亚洲精品丝袜日韩| 日韩不卡高清视频| 国产精品免费网站在线观看| 亚洲小视频网站| 婷婷色综合网| 91精品国产91久久久久青草| 男女视频在线| 日韩精品视频在线免费观看 | 国产综合自拍| 国产日韩一区欧美| 中文字幕21页在线看| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 国产精品nxnn| 8090成年在线看片午夜| 黄色av免费在线看| 69久久夜色精品国产69蝌蚪网| wwwav国产| 不卡高清视频专区| 欧美三级午夜理伦三级| 久久精品国产大片免费观看| 91久久精品一区| 黄色在线观看视频网站| 日韩精品中文字幕在线播放| 最近中文在线观看| 亚洲激情图片小说视频| 变态另类丨国产精品| 天堂成人国产精品一区| 国产四区在线观看| 欧美高清视频看片在线观看 | 99国内精品久久久久| 欧美精品久久一区二区| 美女做暖暖视频免费在线观看全部网址91| 欧美视频在线不卡| 久久久无码一区二区三区| 国产成人在线视频播放| 国内性生活视频| 日韩毛片视频| 国产日韩二区| 91精品亚洲一区在线观看| 97精品国产97久久久久久| av在线天堂播放| 亚洲国产成人精品一区二区| 在线观看亚洲国产| 欧美性猛交xxxx富婆弯腰| 欧美做爰爽爽爽爽爽爽| 国产色产综合产在线视频| 精产国品一区二区三区| 水野朝阳av一区二区三区| 黄色网在线视频| 欧美亚洲精品在线| 精品日产一区2区三区黄免费| 欧美xxxx网站| 青青久久av北条麻妃黑人| 亚洲小说区图片| 中日韩午夜理伦电影免费| 四虎永久在线精品免费网址| 欧美二区在线观看| 无码人妻精品一区二区50| 亚洲一区二区三区中文字幕| 天堂а√在线中文在线鲁大师| 26uuu久久天堂性欧美| 国产xxxxhd| 日本欧美大码aⅴ在线播放| 欧美日韩在线一| 欧美区亚洲区| 7777在线视频| 日韩综合在线| 日韩福利影院| 亚洲a级精品| 国产一区二区免费电影| 天堂va欧美ⅴa亚洲va一国产| 国产精品美女久久久久久免费| 日韩激情电影| 国内伊人久久久久久网站视频| 91麻豆国产福利在线观看宅福利| 中文字幕精品一区二区精品| 久草福利在线| 亚洲欧洲激情在线| 三级在线电影| 国产视频精品免费播放| 五月婷婷在线观看视频| 亚洲成人激情图| 好吊色一区二区| 精品sm捆绑视频| 亚洲老妇色熟女老太| 日韩免费看网站| 超碰在线播放97| 日韩欧美国产电影| 精品国自产拍在线观看| 日韩视频免费直播| 懂色av一区二区三区四区| 日韩欧美国产高清| 人妻va精品va欧美va| 亚洲国产三级网| 偷拍精品一区二区三区| 亚洲精品视频网上网址在线观看| 青青草视频在线免费观看| 亚洲天堂男人天堂女人天堂| 国产视频在线看| 综合网日日天干夜夜久久| av午夜在线| 久久精品国产一区| 日韩精品亚洲人成在线观看| 久久久欧美一区二区| 女人让男人操自己视频在线观看 | 草草视频在线| 55夜色66夜色国产精品视频| 深夜福利视频一区二区| 国产成人拍精品视频午夜网站| 成人天堂yy6080亚洲高清| 色综合天天视频在线观看| 999国产在线| 欧美激情三级| 国产一区二区三区无遮挡| 中文字幕av一区二区三区人| 亚洲精美视频| 在线中文字幕第一区| 久久99中文字幕| 丝袜美腿亚洲一区| 成年人三级黄色片| 高清不卡在线观看| 久久久久久国产精品无码| 国产精品乱子久久久久| 久久在线视频精品| 日本乱人伦aⅴ精品| 99国产在线播放| 亚洲成人av片在线观看| av在线电影院| 欧美劲爆第一页| xxxxx.日韩| wwwxx欧美| 欧美女优在线视频| 日韩国产精品毛片| 美女诱惑黄网站一区| 国产九九九视频| 91免费版在线| 成人免费视频网站入口::| 欧美日韩国产精品| 国产毛片毛片毛片毛片| 国产视频欧美视频| caoporm免费视频在线| 日本国产精品视频| 欧美高清一级片| 亚洲欧美丝袜| 99视频精品免费观看| 亚洲精品国产久| 久久久国产一区二区三区四区小说 | 亚洲成人日韩在线| 亚洲欧美另类在线| 无码视频在线观看| 精品国产乱子伦一区| 日本在线观看网站| 欧美中文字幕在线观看| 99这里只有精品视频| 日韩精品一区二区三区外面| 精品91视频| 日韩欧美中文视频| 国产精品丝袜一区| 久久久久久亚洲av无码专区| 欧美精品一区视频| 成人影欧美片| 国产精品无av码在线观看| 三级小说欧洲区亚洲区| 无码人妻aⅴ一区二区三区日本| 日韩精品久久久久久| 风间由美一二三区av片| 亚洲综合在线免费观看| 国产精品一级二级| 中文字幕精品一区二区精品| 另类专区亚洲| 农村寡妇一区二区三区| 99人久久精品视频最新地址| 欧日韩一区二区三区| 福利在线午夜| 91国产美女在线观看| 超碰精品在线| 国产一区 在线播放| 国产麻豆精品视频| 午夜剧场免费在线观看| 欧美日韩精品免费观看视频| jzzjzzjzz亚洲成熟少妇| 日本久久久久久久久久久| 九九免费精品视频在线观看| 18禁免费观看网站| 99综合电影在线视频| 亚洲天堂日韩av| 亚洲精品98久久久久久中文字幕| 2021天堂中文幕一二区在线观| 国产精品一区二区三区免费| 国内精品99| 荫蒂被男人添免费视频| 亚洲成av人在线观看| 免费av一级片| 午夜伦理精品一区| 日本国产精品| 欧洲av无码放荡人妇网站| 久久久久久97三级| 最新在线中文字幕| 日韩中文字幕国产| 高清一区二区三区av| 欧美黄色免费网址| youjizz国产精品| 欧美特黄aaaaaa| 亚洲视频网站在线观看| 粉嫩av一区二区三区四区五区| 亚洲欧美日韩精品久久久| 国产一区二区三区高清播放| 强行糟蹋人妻hd中文| 亚洲第一偷拍网| 中文不卡1区2区3区| 日韩欧美一区二区视频在线播放| 久久99蜜桃精品| 欧美精品一级片| 日韩精品免费在线播放| 国产一区二区精品调教| 国产精品亚洲天堂| av不卡在线播放| 波多野结衣一本一道| 久久五月天综合| 欧美重口另类| 亚洲36d大奶网| 一区二区不卡在线视频 午夜欧美不卡在 | 漂亮人妻被黑人久久精品| 色婷婷av一区二区三区大白胸| 在线观看黄色av| 91免费在线观看网站| 亚洲一区二区三区高清不卡| 一级片黄色录像| 精品成人免费观看| 国产精品99| 国产曰肥老太婆无遮挡| 国产肉丝袜一区二区| 超碰免费在线97| 国产精品第一区| 亚洲国产综合在线看不卡| 日本成人免费视频| 欧美变态tickling挠脚心|