使用grpc C++功能
grpc c++开发需要安装相关工具以及框架才能进行开发。
rz 远程上传文件
本地开发环境搭建:
1、编译相关工具 pkg-config autoconf automake Libtool shtool gflags等,后边会进行相关介绍,介绍文章来自于网络。
2、需要安装grpc编译按照后边文章编译并进行安装,protocol buffer建议按照第三方插件安装避免与grpc安装版本不匹配。
3、编译例子程序,能够正确编译运行说明程序没有问题。
4、通过例子程序扩展进行自己业务开发。
线上部署主要docker环境下:
pkg-config:
简介:
https://www.tianmaying.com/tutorial/pkgconfig
makefile文件:
介绍
https://seisman.github.io/how-to-write-makefile/introduction.html
autoconf automake
介绍
http://www.laruence.com/2009/11/18/1154.html
Libtool
介绍
https://zh.wikipedia.org/wiki/Libtool
https://www.ibm.com/developerworks/cn/aix/library/1007_wuxh_libtool/index.html
shtool
介绍
https://www.gnu.org/software/shtool/
gflags
介绍
https://blog.csdn.net/jcjc918/article/details/50876613
Protocol Buffer
介绍
https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html
https://colobu.com/2015/01/07/Protobuf-language-guide/
升级G++版本 通过yum命令升级可能不好用,需要自己安装新版本
https://www.cnblogs.com/wanpengcoder/p/5218583.html
https://blog.csdn.net/centnethy/article/details/81284657
brew是mac下安装工具命令
安装grpc相关
A、https://tcspecial.iteye.com/blog/2437365
一. 准备编译环境
安装各种依赖库,详见:Pre-requisites
- brew install autoconf automake libtool shtool gflags
二. 安装protobuf3
- git clone https://github.com/google/protobuf.git
- cd protobuf
- git checkout v3.5.0
- sh ./autogen.sh
- ./configure --prefix=/usr/local/protobuf/
- make && make install
三. 安装grpc
- git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
- cd grpc
- git submodule update --init
- make && make install
编译成功后会在/usr/local/bin/ 生成grpc各语言插件,如grpc_cpp_plugin,grpc_php_plugin等。
四. helloworld教程
4.1 编译proto
- syntax = "proto3";
- option java_package = "ex.grpc";
- package helloworld;
- // The greeting service definition.
- service Greeter {
- // Sends a greeting
- rpc SayHello (HelloRequest) returns (HelloReply) {}
- }
- // The request message containing the user's name.
- message HelloRequest {
- string name = 1;
- }
- // The response message containing the greetings
- message HelloReply {
- string message = 1;
- }
4.2 生成stub
- protoc --cpp_out=. helloworld.proto
- protoc --grpc_out=. --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin helloworld.proto
4.3 编译运行
Makefile是通过pkg-config方式来查找protobuf, grpc库位置,可直接修改Makefile 指定protobuf, grpc库位置编译。
./greeter_server
./greeter_client
客户端打印hello world
B https://www.jianshu.com/p/3479272f90bb
在着手 C++ 的 TensorFlow serving mnist client 的过程中,不断采坑,被环境安装折磨的不行。现本着学习回顾,特总结,方便后面同学避免在环境搭建上出现问题。本次完全新建了个环境,在新环境上实验成功。系统为: Ubuntu 16.04.
如果你只是单纯的想安装 protobuf 那么对于安装的 protobuf 版本并没有要求。但是如果要安装 gRPC 的话,那么需要和 gRPC 版本有所对应,否则私自安装个 protobuf 并没有太大意义,因为 clone 下来的 grpc 文件夹里就有对应的文件夹,在这里安装 protobuf 可以保证安装 grpc 不出错。安装 grpc 不建议先单独编译安装 protobuf,但是本着学习的目的,下面依次介绍了单独安装 protobuf 和安装 grpc&protobuf 的方法。
安装 protobuf
1.下载 protobuf 并解压。下载地址:https://github.com/google/protobuf/releases
2.进入解压后的文件目录,执行如下操作:
./configure
通常建议安装到 /usr/local 目录下,执行 configure 时,指定 --prefix=/usr/local/protobuf 即可
makemake checksudo make install
3.安装成功后,将它的 bin 和 lib 目录分别加入到 PATH 和 LD_LIBRARY_PATH 环境变量,以方便直接调用。
设置环境变量过程:编辑 /etc/profile,在文件末尾添加:
export PATH=$PATH:/usr/local/protobuf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib
安装 gRPC
1.安装依赖:
首先安装
pkg-config:sudo apt-get install pkg-config然后安装依赖文件:
sudo apt-get install autoconf automake libtool make g++ unzip
sudo apt-get install libgflags-dev libgtest-dev
sudo apt-get install clang libc++-dev
2.下载GRPC
git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init //更新第三方源码
4.安装 protobuf 源码:
cd third_party/protobuf/
git submodule update --init --recursive //确保克隆子模块,更新第三方源码
./autogen.sh //生成配置脚本
./configure //生成Makefile文件,为下一步的编译做准备,可以加上安装路径:--prefix=path
make //从Makefile读取指令,然后编译
make check //可能会报错,但是不影响
sudo make install
从 Makefile 读取指令,安装到指定位置,默认为 /usr/local/,也可以指定安装目录:--prefix=path。卸载的命令为 make uninstall。
相关命令说明:
make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。sudo ldconfig:更新共享库缓存which protoc:查看软件的安装位置protoc --version:检查是否安装成功
5.安装GRPC
cd ../.. //进入 grpc 根目录
make //从Makefile读取指令,然后编译
sudo make install
从 Makefile 读取指令,安装到指定位置,默认为 /usr/local/,具体的位置在 bin 和 lib 目录下。
6.测试
在 gRPC 目录下:
cd examples/cpp/helloworld/
make //编译
./greeter_server //服务器
./greeter_client //客户端
出现 Greeter received: Hello world 则表示安装成功。
作者:郑爽_Shaun
链接:https://www.jianshu.com/p/3479272f90bb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
C:
安装Homebrew mac下集成安装环境
https://blog.csdn.net/yemao_guyue/article/details/80575532
安装protobuf权限问题
https://blog.csdn.net/ccbrid/article/details/79169440
https://blog.csdn.net/qq_25147897/article/details/78544395
D:
编译demo
https://github.com/grpc/grpc/tree/master/examples/cpp/helloworld
编译demo问题
https://www.jianshu.com/p/cdbdda59e99f
拷贝protobuf头文件到usr/local下
mv protoc3/include/* /usr/local/include/
pkg-config编译问题
https://github.com/pjreddie/darknet/issues/916
E:linux下安装grpc
https://www.cnblogs.com/xuelisheng/p/10316431.html
其他:
google 开源项目风格
https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/
redis带注释连接
https://github.com/huangz1990/redis-3.0-annotated
使用grpc C++功能的更多相关文章
- .NET gRPC 核心功能初体验,附Demo源码
gRPC是高性能的RPC框架, 有效地用于服务通信(不管是数据中心内部还是跨数据中心). 由Google开源,目前是一个Cloud Native Computing Foundation(CNCF)孵 ...
- 【译】gRPC vs HTTP APIs
本文翻译自 ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者 Edison Zhou. 写在开头 现在,ASP.NET Core使开发人员可以构建gRPC服务. ...
- Akka-CQRS(9)- gRPC,实现前端设备与平台系统的高效集成
前面我们完成了一个CQRS模式的数据采集(录入)平台.可以预见:数据的产生是在线下各式各样的终端系统中,包括web.桌面.移动终端.那么,为了实现一个完整的系统,必须把前端设备通过某种网络连接形式与数 ...
- gRPC(2):客户端创建和调用原理
1. gRPC 客户端创建流程 1.1 背景 gRPC 是在 HTTP/2 之上实现的 RPC 框架,HTTP/2 是第 7 层(应用层)协议,它运行在 TCP(第 4 层 - 传输层)协议之上,相比 ...
- gRPC趁现在还没大火,抢先了解一下
前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性.功能模块复用性等:各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信 ...
- Postman 支持 gRPC 了!继续领先 ~
最近国产API管理工具比较热,几款产品在API管理层面做得也都还不错,但主要还是对HTTP相关的API管理,毕竟这类API的应用目前还是最为广泛的.但显然,还有不少其他应用场景目前没有覆盖到,DD在之 ...
- 5分钟学会 gRPC
介绍 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架. 我也是近段时间有机会从零开始重 ...
- go grpc: connection reset by peer 的一种解决方案
最近添哥一直反映,他手下的设备以grpc stream的方式向我服务端发送数据.偶然会收到错误.现象如下: 连接已经建立了一段时间,正常使用. 突然client.Send 返回 eof. 客户端有报错 ...
- docker 内部组件结构 -- docker daemon, container,runC
Docker, Containerd, RunC : 从 Docker 1.11 开始, docker 容器运行已经不是简单地通过 Docker Daemon 来启动, 而是集成了Container, ...
随机推荐
- spark存储管理之磁盘存储--DiskStore
DiskStore 接着上一篇,本篇,我们分析一下实现磁盘存储的功能类DiskStore,这个类相对简单.在正式展开之前,我觉得有必要大概分析一下BlockManager的背景,或者说它的运行环境,运 ...
- renren-fast后端源码参考-配置和对应工具
1. renren-fast后端源码参考-配置和对应工具 1.1. 前言 renren-fast是个开源的前后端分离快速开放平台,没有自己框架的同学可以直接使用它的,而我打算浏览一遍它的代码,提取一些 ...
- Vue – 基础学习(1):对生命周期和钩子函的理解
一.简介 先贴一下官网对生命周期/钩子函数的说明(先贴为敬):所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周 ...
- Web前端面试总结(别人的)
http://note.youdao.com/noteshare?id=0bfbe45de0de0bc4735f867e5a6c528f&sub=D52F5C079DDE49F99A5118D ...
- Linux 下的7种文件类型
普通文件类型 (-)Linux中最多的一种文件类型, 包括 纯文本文件(ASCII):二进制文件(binary):数据格式的文件(data);各种压缩文件.第一个属性为 [-] ,这些文件一般是用一些 ...
- JS案例 - 分页
1.html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- httpget请求测试用Java代码的实现方法
原文:http://www.cnblogs.com/johnson-yuan/p/6637906.html 1.首先要在eclipse中导入HttpClient的jar包. 2.新建类并写入一下代码: ...
- MySQL与Oracle的隔离级别
一.事务和隔离级别 事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性. 隔离级别:隔离级别定义了事务与事务之间的隔 ...
- 定制你的“魅力”报告--Allure
“人世间是一个大囚笼,每个人都在狱中,砥砺前行.九狱台中的刺,是生活中所要面对的砥砺,是锋利的刺,将自己肉身刺得千疮百孔,将自己的道心刺得千疮百孔.” ---<牧神记·九狱锁道心> 一.简 ...
- firefox修改user-agent
让firefox对web服务器伪装成任意浏览器,找一个iphone的useragent,瞬间firefox变身iPhone有木有,一般人我不告诉他嘿嘿 1.firefox地址栏中输入about:con ...