`
tcspecial
  • 浏览: 913790 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

gRPC C++

阅读更多

 

一. 准备编译环境

安装各种依赖库,详见: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教程

详见:gRPC C++ Hello World

 

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

 

5. 协议分析

grpc使用http2作为通信协议,http2使用多路复用,二进制帧进行数据传输,效率更高。

http2 报文详见:RFC 7540 HTTP/2

 

6.1 setting

每个stream固定9个字节头 + Payload,用于设置连接参数。

setting frame

 

 

 6.2 HEADERS

打开一个流,发起http请求。

http/1中的 method: POST\r\n,http2为len + :method + len + :post,且各头部字段均为小写。

header frame

 

 6.3 DATA

http1 header与data通过\r\n分隔,http2则为各个独立的stream。

data frame

 

 

 参考链接:

grpc cpp demo

http/2 详解

 

 

 

 

 

  • 大小: 383.8 KB
  • 大小: 363.2 KB
  • 大小: 424.4 KB
分享到:
评论

相关推荐

    grpc c++示例

    标题中的“gRPC C++示例”指的是使用gRPC框架编写的一个C++应用程序示例。gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议并支持多种语言,包括C++。在这个示例中,开发者使用gRPC的C++库...

    GRPC C++静态库,头文件

    GRPC源码编译,v1.48.0-prel分支 git clone https://github.com/grpc/grpc 按照grpc/src/cpp/BUILDING.MD编译。 供源码不好获取,编译困难,又想使用或学习的同学。

    编译GRPC的环境C++

    在本文中,我们将深入探讨如何在C++环境中编译gRPC,这是一个强大的开源框架,用于构建高性能、跨语言的服务间通信。gRPC基于HTTP/2协议,利用Protocol Buffers(protobuf)作为接口定义语言,提供了丰富的客户端和...

    windows grpc c++ 静态库

    grpc静态库包含了32位 debug release版本;64位 debug release版本。 编译不容易,收取少量积分。 具体编译过程,请参考:https://blog.csdn.net/ManagerUser/article/details/126736076?spm=1001.2014.3001.5501

    基于c++实现的GRPC服务端demo

    在本文中,我们将深入探讨如何使用 C++ 实现一个简单的 gRPC 服务端 demo。首先,我们需要了解 gRPC 的核心概念和工作原理。 1. **gRPC 基本概念** - **RPC**:远程过程调用,允许一个程序调用另一个位于不同地址...

    在windows环境下编译的grpc c++ 静态库

    本资源提供了在Windows上编译的gRPC C++静态库,适用于64位系统,并包含了Debug和Release两种配置。 gRPC的核心概念之一是Remote Procedure Call(RPC),这是一种通信协议,允许程序调用远程计算机上的函数或方法...

    grpc c++ 编译工具

    grpc c++ 编译工具

    异步grpc c++代码例子

    异步grpc c++代码服务端例子,包括stream流

    GRPC C++源码及第三方库

    GRPC C++源码及第三方库

    VS2019 编译gRPC C++ x64版本

    在本文中,我们将深入探讨如何使用Visual Studio 2019 (VS2019) 编译gRPC C++库的x64版本。gRPC是一个高性能、开源的通用RPC框架,它基于HTTP/2协议,支持多种编程语言,包括C++。在这个过程中,我们将涉及CMake构建...

    gRPC C++ x64-windows基于vcpkg包管理下载安装的gRPC做的一个例子

    gRPC C++ x64-windows基于vcpkg包管理下载安装的gRPC做的一个例子, 帮助大家了解gRPC和vcpkg的用法,cmakelist的书写方式,gRPC的接口实现和调用,包含服务器端代码和客户端代码。

    gRPC windows VS2019 C++

    Windows10、VS2019、C++ gRPC例子。包含所有需要的包。32位Debug模式编译,下载后可以独立运行。 操作步骤: https://blog.csdn.net/danxingxian_go/article/details/104176878 ...

    grpc - c++版本_release_32,vs2017编译

    **grpc - C++ 版本 Release 32 及 VS2017 编译详解** `gRPC` 是一个高性能、开源且通用的 RPC(远程过程调用)框架,由 Google 推出并维护。它基于 HTTP/2 协议,支持多种编程语言,包括 C++, Java, Python, Go 等...

    grpc_vs2019_lib.zip

    grpc c++ vs2019 内容,相关文档及demo请查看以下地址 https://blog.csdn.net/xie1xiao1jun/article/details/110959234 https://github.com/gmsec/cmsec

    gRPC C++快速序列号跨平台库

    gRPC是轻量型且高性能的。 其处理速度可以比JSON序列化快 8 倍,消息小60%到 80%。 在Microsoft Windows Communication Foundation (WCF) 中,gRPC的性能超过经过高度优化的NetTCP绑定的速度和效率。 与偏向于...

    c++grpc实现代码c++grpc实现代码

    **C++ gRPC 实现详解** gRPC 是一个高性能、开源和通用的 RPC(远程过程调用)框架,由 Google 开发并维护。它支持多种语言,包括 C++,并且在微服务架构中广泛使用。gRPC 基于 HTTP/2 协议,采用 Protocol Buffers...

    grpc-c++ v1.60.0源码,包含各个子模块

    在 GRPC-C++ v1.60.0 版本中,我们可以深入理解其核心概念和实现细节。 首先,GRPC 使用 Protocol Buffers(protobuf)作为接口定义语言,它允许开发者定义服务接口和数据结构。在源码中,你会看到 `.proto` 文件,...

    grpc头文件和库VS2015-win32_x64-Debug(MDd)_Release(MD).rar

    标题 "grpc头文件和库VS2015-win32_x64-Debug(MDd)_Release(MD).rar" 涉及的核心知识点主要围绕gRPC、Visual Studio 2015、Windows平台以及C++编程语言。下面将详细阐述这些关键领域的相关内容。 gRPC 是一个高性能...

    gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码.rar

    gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码.;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例...

Global site tag (gtag.js) - Google Analytics