问道gRPC_v1.0.0
生活随笔
收集整理的這篇文章主要介紹了
问道gRPC_v1.0.0
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 簡介
- 誕生
- 主要用途
- 基礎
- 數據結構
- gRPC如何調用
- gRPC與微服務
- 與SpringCloud整合
- 預配置
- 編碼
- 實現&&配置
- 調用RPC,執行客戶端代碼,即可調用
- 新增字段
- 資源消耗
- 報錯
- 服務提供者不在線
| 問道gRPC | v1.0.0 | 學生宮布 | 8416837 | net-devh-grpc.version 2.7.0.RELEASE grpc.version 1.29.0 protobuf.version 3.4.0 |
簡介
誕生
Google的孩子
主要用途
進程通信
基礎
- 檢測是否安裝protobuf
- 下載 protoc-3.10.1-win64.zip
- 將安裝目錄/bin配置到Win環境變量
數據結構
數據格式Protobuf
查看我寫的protobuf教程
一個簡單的proto文件
安裝編譯插件
go get -u github.com/golang/protobuf/protoc-gen-go
進入該文件目錄使用gitbash編譯該文件
protoc --go_out=. --python_out=. fruit.proto
編譯完畢,說明插件安裝成功:
gRPC如何調用
grpc提供的原生接口服務無法被http模式訪問
- 在golang代碼里調用 查看教程
- 查看GitHub代碼
gRPC與微服務
- 服務消費模式,與FeignClient、Dubbo RPC模式接近
- 路由表 來自注冊中心
- 負載均衡 軟負載 根據路由表輪詢、一致性hash、活躍度等
與SpringCloud整合
- 基礎→ Protocol Buffers教程
- 進入安裝Nacos教程,gRPC服務注冊到Nacos
預配置
- pom.xml 核心配置節選
- 引入插件,可能報紅↓
引入變量就不會報紅了↓
編碼
-
新建目錄src\main\proto
-
編輯Human.proto文件
實現&&配置
- 引入protobuf依賴↓
父項目
子項目
<dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-all</artifactId></dependency>- 編譯 找到Maven插件
執行插件compile && compile-custom命令,或自己打命令(不推薦)
若報錯:
說明缺少依賴
編譯成功
這樣proto就變成了Java類,以備后續使用
- 服務端實現RPC
服務提供者配置
服務端引入依賴包
<net-devh-grpc.version>2.7.0.RELEASE</net-devh-grpc.version><dependency><groupId>net.devh</groupId><artifactId>grpc-client-spring-boot-starter</artifactId><version>${net-devh-grpc.version}</version></dependency><dependency><groupId>net.devh</groupId><artifactId>grpc-server-spring-boot-starter</artifactId><version>${net-devh-grpc.version}</version></dependency>前提是服務端和客戶端都引入RPC相關Java類
上一步只是編譯了RPC結構,并未實現它。因此,可以在服務端(提供者)編寫實現代碼,以備客戶端(消費者)調用。
注意:有些類的名字改成你自己的。這些類主要與proto關聯。
- 客戶端配置文件
- 客戶端代碼,節選,注意區分:
調用RPC,執行客戶端代碼,即可調用
使用REST API觸發客戶端調用服務端RPC,即可完成調用,原理見上述代碼
把RPC調用結果toString后再返回,避免REST Json返回響應時報錯。按上述代碼,實操調用成功。
- 調用成功
新增字段
在proto新增字段之后,執行命令↓
資源消耗
- 開啟grpc Nacos通訊后,Nacos消耗運存情況:
運存占用不多,持續增長中,但是吃cpu,nacos 是1.2.1, 可能是bug, 多方運行核實一下,例如普通的不帶grpc的微服務會不會出現這種大量吃cpu的情況
報錯
服務提供者不在線
報錯:
io.grpc.StatusRuntimeException: UNAVAILABLE: io exceptionat io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:244) ~[grpc-stub-1.29.0.jar:1.29.0]Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s):|_ checkpoint ? org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]解決辦法:開啟服務
總結
以上是生活随笔為你收集整理的问道gRPC_v1.0.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单位共享上网sygate代理服务软件完全
- 下一篇: IE8打不开网页提示sysfader错误