當前位置:首頁 » 編程軟體 » ubuntu編譯grpc

ubuntu編譯grpc

發布時間: 2023-04-13 09:10:47

Ⅰ 對GRPC的通用封裝

通過封裝將grpc的技術使用難度降低到普通java程序的開發。
cn.com.yd.commons.grpc提供了4種形式的服務介面定義以適應不同的應用場景。
cn.com.yd.commons.grpc將請求參數和響應參數定義為bytes以統一因業務不同而導致的差異性;使用cglib進行動態代理,在grpc的方法中執行具體的業務處理。
在具體應用中應將此工程使用Maven打包後作為依賴引入目標工程中。

JDK:1.8
GRPC:1.6.1
Protobuf:3.3.0
cglib:3.2.5
IDE:開發工具IDEA

IDEA自帶插件支持grpc開發,所以開發工具選擇IDEA。在正式開始之前需要先安裝Protobuf Support插件。
依次點擊Intellij中的「File」-->"Settings"-->"Plugins"-->"Browse repositories",如圖

輸入Protobuf,如下所示

在main目錄下新建一個名為proto的隱鋒文件夾,請森肢確保文件夾的所處位置以及名稱都正確,否則將不能進行編譯,而且不報任何錯誤。

proto文件編寫完成灶春晌後進行編譯以生成對應的class文件,編譯後的效果大致如圖

其中包含了Request、Response與JSONObject之間的轉換等,主要是對應用的輔助。

暫不公開。

Ⅱ android集成Grpc,使用grpc進行數據交互網路通信

集成
1、首先在project的gradle文件中的dependencies里進行如下配置

2、在app的gradle文件中操作
在最頂部添加

添加protobuf編譯器

添加grpc的相關引用

ok好了至此已經集成完畢了,接下來就是使用了含逗
proto生成Java文件
(1) 把自己的proto文件復制粘貼到芹老讓main/proto目錄下,點擊Android Studio中的Build菜單下的Rebuild Project即可
(2) Java文件生成位置:app/build/generated/source/proto/……
(3) 將Java文件嫌局復制出來即可使用

Ⅲ go語言grpc的stream 使用

之前我們講了 grpc 怎麼簡單的使用 ,這次講講 grpc 中的 stream,srteam 顧名思義 就是 一種 流,可以源源不斷的 推送 數據,很適合 傳輸一些大數據,或者 服務端 和 客戶端 長時間 數據交互,比如 客戶端 可以向 服務端脊棚 訂閱 一個數據,服務端 就 可以利用 stream ,源源不斷地 推送數據。

其實這個流 已經 基本退化成 tcp了,grpc 底層為我們 分包了,所以真的很方便。

我們在 protobuf 裡面 定義 要提供的服務,如果 你想把哪個數據 源源不斷的 推高早送 就在前面加個stream 就好了,定義好記得編譯。

知識點:

client 調用 流的函櫻念則數, 就會 返回一個 流對象,只要 不斷地 對它進行讀取或者寫入,對應方就能收到。

grpc 的 stream 和 go的協程 配合 簡直完美。通過流 我們 可以更加 靈活的 實現自己的業務。如 訂閱,大數據傳輸等。

Ⅳ electron(electron-vue)環境下配置gRPC

1.package.json添加以下依賴

2.安裝依賴

3.編譯gRPC

Ⅳ grpc proto 文件 c++ java 可以共用嗎

ProtoBuf 是一套介面描述語言(IDL)和相關工具集(主要是 protoc,基於 C++ 實現),類似 Apache 的 Thrift)。
用戶寫好 .proto 描述文件,之後使用 protoc 可以很容易編譯成眾多計算機語言(C++、Java、python、C#、Golang 等)的介面代碼。這些代碼可以支持 gRPC,也可以不支持。

Ⅵ 用thrift 或 gRPC 之類的框架做 app 和伺服器的通信合適嗎

完全可以的。
thrift是Facebook開源出來的項目,現在交給了Apache來管理。thrift是用來針對不同語言系統之間數據調用的。thrift支持c,c++,Erlang,java,python,ruby,php等語言。thrift允許定義一個簡單的定義文件中的數據拆賣芹類型和服務介面,這個文件就是IDL(Interface Definition Language),以作為輸入文件,編譯器生成代碼。簡單的說就是thrift定義了統一的文件(對象或配大者結構體,服務接旅畢口),使用thrift的編譯器能夠生成對應語言的代碼文件。thrft之所以是跨語言的原意就是他通過語言無關的自定義語言來生成語言相關的代碼。

Ⅶ Centos6.8編譯grpc總結

由於歷史遺留問題,需要在Centos6.8這個過時世團的系統版本上編譯grpc,總結一下幾個遇到的問題。

來源於 Install SkyWalking PHP Agent

然後參考 https://gcc.gnu.org/wiki/InstallingGCC ,安裝:

並且,stdlibc++的版本也不夠新,那麼在objdir目錄下,安裝:

然後export一下環境變數:

原因是bintuils版本過低,脊返改一樣編譯安裝一個更加新的。

只要在cmake之前加上下面櫻判的環境變數即可

Ⅷ gRPC入坑記

概要

由於gRPC主要是谷歌開發的,由於一些已知的原因,gRPC跑demo還是不那麼順利的。單獨寫這一篇,主要是gRPC安裝過程中的坑太多了,記錄下來讓大家少走彎路。

主要的坑:

本文講解gRPC demo的同時,會介紹如何解決這些坑。本文對應的Github地址:https://github.com/52fhy/grpc-sample 。該倉庫存儲了demo示例,以及部分系統編譯好的二進制包,大家覺得有些步驟里耗時實在太長了,可以直接clone該倉庫,復制二進制包到對應目錄(僅限測試開發,生產環境還是老老實實自己編譯吧)。

升級GCC

gRPC命令行工具編譯需要使用 GCC4.8及以上版本。CentOS6系列的內置版本是GCC4.7。

如果你的系統GCC版本>=4.8,可以忽略本節。如果僅使用golang、java,請忽略本節。

如果需要升級gcc至4.8或更高版本,建議直接採用安裝SCL源之後安裝devtoolset-6(devtoolset-6目前gcc版本為6.3),因為devtoolset-4及之前的版本都已經結束支持,只能通過其他方法安裝。

升級到gcc 6.3:

需要注意的是scl命令啟用只是 臨時 的,退出shell或重啟就會恢復原系統gcc版本。如果要長期使用gcc 6.3的話:

這樣退出shell重新打開就是新版的gcc了。其它版本同理。

升級到gcc 7.3:

已經停止支持的devtoolset4(gcc 5.2)及之前版本的安裝方法,可能比較慢,大家感興趣的話可以嘗試。

編譯gRPC命令行工具

gRPC分C、JAVA、GO、NodeJS版本,C版本包括C++, Python, Ruby, Objective-C, PHP, C#,這些語言都是基於C版本開發的,共用代碼庫一個代碼庫。

如果使用C版本的gRPC,最終要從源碼里編譯出下列工具:

這些工具作為插件供proto編譯器使用。需要先下載 grpc/grpc github上的源碼。

這里有2個坑:

1、grpc/grpc倉庫比較大,鑒於國內訪問的網速,建議使用國內鏡像。碼雲(https://gitee.com)提供了同步更新的鏡像地址:

這樣下載速度提高了不少。

2、git submole update這個命令實際就是在下載.gitmoles文件里定義的第三方依賴項到third_party目錄,這個依賴項有很多,大家可以打開.gitmoles文件查看下詳情。依賴的倉庫都在github上,下載沒幾個小時是下載不下來的,就等著慢慢下載吧。

回頭想想,我們花費了很多時間,結果只是為了得到grpc的proto編譯插件。

PHP相關支持

PHP暫時不支持作為grpc的服務端。作為客戶端是可以的,需要機器安裝:

其中protoc和protobuf c擴展已經在 Protobuf 小試牛刀 介紹過了,這里不再贅述。上一小節里如果安裝成功,那麼grpc_php_plugin也是有了的。下面介紹如何安裝PHP版的gRPC庫。

安裝grpc c擴展:

要求:GCC編譯器需要4.8及以上版本。可以使用pecl安裝:

也可以指定版本:

或者下載源碼(http://pecl.php.net/package/grpc)安裝:

grpc/grpc代碼庫里也有PHP擴展的C源碼,在grpc/src/php/ext/grpc目錄,進去也可以直接編譯。

編譯完成後在php.ini里添加,使用php --ri grpc可以查看信息。

安裝完C擴展後,還需要使用composer安裝grpc的庫:

gRPC示例

編寫gRPC proto

一共定義了三個文件:

其中 User 作為 Model定義,Response 用於 RPC統一返回定義,GreeterService 則是服務介面定義。

限於篇幅,proto文件詳見 https://github.com/52fhy/grpc-sample 倉庫的proto目錄。

GreeterService.proto文件內容如下:

這裡面定義了一個service,相當於定義了一個服務介面,我們把方法名、參數定義好了,後面需要去實現它。由於gRPC不支持PHP作為服務端,這里我們使用Golang作為服務端。

首先需要使用proto工具編譯出golang的代碼:

執行成功,會在 Pb_Go目錄里生成Go代碼:

如果需要生成PHP客戶端的代碼,則需要使用grpc php的命令行工具grpc_php_plugin,前面小結如果執行成功,這個工具已經有了。然後:

最終生成的文件:

注意:編譯那裡如果我們不加--grpc_out=../$out --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin,生成的PHP類是沒有GreeterClient的。這個文件是gRPC編譯工具自動生成的,用於連接gRPC服務端。

go編寫服務

我們用Golang寫服務端。上面雖然生成了Golang的部分代碼,但真正的服務還沒有寫呢。

main.go

首先我們新建個main.go,代碼不多,我直接貼出來:

然後就可以編譯了。

有個大坑:go build main.go的時候會先下載go.mod里定義的依賴(依賴比較多,詳情查看:https://github.com/52fhy/grpc-sample/blob/master/go.mod),其中下面這條非常慢,倉庫太大了,雖然重定向到github:

為了快速下載,我在碼雲上做了鏡像,地址:gitee.com/52fhy/google-api-go-client 。改了之後下載快多了。

編譯成功後,生成了二進制文件main。我們可以直接運行:

go test

為了測試我們寫的服務是否正常,可以寫測試用例:

test_client.go

運行:

運行有點慢,感覺依賴的庫多了。

php客戶端

使用gRPC PHP客戶端,確保你已經安裝了:

示例:

client_test.php

運行後輸出:

常見問題

1、CentOS6使用 go mod獲取第三方依賴包unknown revision xxx錯誤

解決:其實go mod調用鏈中會用到一些git指令,當git版本比較舊時,調用失敗產生錯誤,並給出歧義的提示信息。方法就是升級git版本,CentOS6自帶的git是1.7版本。升級完畢後,再嘗試go mod。

快速升級方法:

centos6:

2、PHP報錯:Fatal error: Class &#' not found

解決:請安裝PHP的protobuf c擴展。

3、PHP報錯:Fatal error: Class 'GrpcBaseStub' not found

解決:使用composer require grpc/grpc安裝grpc。另外對應的grpc C擴展也要安裝。

4、下載 github release包很慢怎麼辦?

解決:下載Mac版 Free Download Manager 下載工具可以解決Github 下載緩慢或失敗問題。速度嗖嗖的。

參考

1、為CentOS 6、7升級gcc至4.8、4.9、5.2、6.3、7.3等高版本

http://www.vpser.net/manage/centos-6-upgrade-gcc.html

2、centos 6.x/7.x使用yum升級git版本 - 夜空

https://blog.slogra.com/post-721.html

3、Protobuf 小試牛刀 - 飛鴻影

https://www.cnblogs.com/52fhy/p/11106670.html

(本文完)

Ⅸ 在windows環境下 編譯pb (protobuf) 文件

protoc  --plugin=protoc-gen-go.exe   --go_out= .     xx.proto

protoc  --plugin=protoc-gen-go.exe 粗伏攔  --go-grpc_out= .     xx.proto

若提示: --go-grpc_out: protoc-gen-go-grpc: 系統找不到指定的文件。

需在 grpc-go-1.31.0\cmd\protoc-gen-go-grpc 進行編譯, go build即可。 把生成的protoc-gen-go-grpc.exe放岩胡到你的廳陪  GOPATH/bin 目錄下

Ⅹ 在Ubuntu的環境下怎麼交叉編譯grpc到cortex-a9架構

1、 解壓工具鏈壓縮
$ cd ~
$ mkdir toolchain
$ cd toolchain
gcc-4.6.4.tar.xz拷貝到toolchain目錄下並解壓
$ tar xvf gcc-4.6.4.tar.xz

2、 環境變數的添加
修改文件/etc/bash.bashrc添加如下內容
export PATH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin
重啟配置文件
$ source /etc/bash.bashrc

熱點內容
聲道數增加存儲容量也相應 發布:2025-07-15 03:16:19 瀏覽:271
誇克緩存在哪裡 發布:2025-07-15 03:16:11 瀏覽:708
座機查通話記錄服務密碼是多少 發布:2025-07-15 03:14:46 瀏覽:342
大學gpa演算法 發布:2025-07-15 03:14:45 瀏覽:922
mx5是安卓哪個版本 發布:2025-07-15 03:05:07 瀏覽:59
linux文件夾剩餘空間 發布:2025-07-15 03:04:24 瀏覽:917
蘋果id密碼如何輸入 發布:2025-07-15 03:01:09 瀏覽:955
reg拒絕訪問 發布:2025-07-15 03:00:26 瀏覽:125
如何訪問pinterest 發布:2025-07-15 02:54:49 瀏覽:301
物種信息資料庫 發布:2025-07-15 02:54:00 瀏覽:475