当前位置:首页 » 编程软件 » 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

热点内容
android请求超时 发布:2025-07-15 07:56:57 浏览:528
修改linux的主机名 发布:2025-07-15 07:52:46 浏览:905
天龙八部自动挖矿脚本怎么写 发布:2025-07-15 07:42:01 浏览:648
本地编译器怎么运行 发布:2025-07-15 07:42:00 浏览:995
加密狗会坏吗 发布:2025-07-15 07:38:32 浏览:563
jdbc读取数据库 发布:2025-07-15 07:38:23 浏览:322
华为手机如何设置隐私密码锁 发布:2025-07-15 07:36:09 浏览:980
java怎么导入jar 发布:2025-07-15 07:22:02 浏览:397
雷蛇键盘配置文件怎么设置完整视频 发布:2025-07-15 07:20:31 浏览:412
存储器1b 发布:2025-07-15 07:09:03 浏览:978