美文网首页
什么是gRPC

什么是gRPC

作者: SasukeBo | 来源:发表于2019-11-06 19:15 被阅读0次

sasuke.cn
gRPC官网文档学习笔记。主要是翻译。

概览

gRPC客户端可以直接调用另一台机器上运行的gRPC服务提供的方法,就如同调用本地方法一样,让构建分布式应用和服务变得更简单。
gRPC的设计理念和众多RPC系统一样,定义服务,提供方法,远程调用时只需要提供方法名,参数和返回值类型。服务端需要实现这些接口,
并启动一个gRPC服务,处理客户端的请求。客户端有一个stub,作为服务端定义的方法存根,供客户端调用。

WX20191106-191452@2x.png

gRPC客户端和服务器可以在很多环境下互相通信。例如上图,可以用C++实现客户端,用Java、Ruby、Go或Python等语言实现客户端。

使用 Protocol Buffers

gRPC默认使用protocol buffers,谷歌开源的一种成熟的序列化数据结构的语法机制。
当然gRPC也支持其他数据格式,例如JSON。

使用protocol buffers首先需要在proto文件中定义一个数据结构,这种结构被称为message,每个message中包含了很多键值对,它们被称作fields

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

然后使用你擅长的语言的protocol buffer编译器--protoc,去生成数据访问类,提供对各field的存储方法,以及序列化整个数据结构为字节流、解析字节流为数据结构的方法。
如果使用的是C++版的protocol buffers编译器,处理上述例子将会生成一个Person类。

再看一个完整的例子:

// 定义greeter服务
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// 请求结构包含了用户的name
message HelloRequest {
  string name = 1;
}

// 返回消息包含了问候语
message HelloReply {
  string message = 1;
}

使用protoc可以根据proto文件生成客户端服务端代码,以及一些用于操作数据的populating, serializingretrieving简单代码。
之后的学习将更细致的分析这些代码。

相关文章

  • 什么是gRPC

    声明 本篇文章是在学习gRPC框架的过程中翻译的官方文档,非作者原创,官方文档参考gRPC,学习gRPC过程中,有...

  • 什么是gRPC?

    本文会介绍gRPC和协议缓冲。gRPC可以使用协议缓冲作为它的IDL和底层信息交换格式。如果你刚接触gRPC或者协...

  • 什么是gRPC

    sasuke.cngRPC官网文档学习笔记。主要是翻译。 概览 gRPC客户端可以直接调用另一台机器上运行的gRP...

  • gRPC入门------gRPC简介

    gRPC基本概念 什么是 gRPC? gRPC 是一种新式的高性能框架,它通过 RPC (远程过程调用) [htt...

  • 分享一下 gRPC- HTTP网关 I

    [TOC] gRPC- HTTP网关 I gRPC是什么?我们再来回顾一下 gRPC是 Google开发的基于HT...

  • gRPC介绍

    [TOC] gRPC gRPC介绍 gRPC是什么? RPC和RESTful的区别是什么? RPC的消息传输可以是...

  • Go语言与gRpc

    1. gRpc 概述 gRpc是什么 ?gRPC是Google开源的可以在任何环境中运行的现代开源高性能RPC框架...

  • golang grpc之etcd服务注册发现

    什么是etcd?什么是grpc?为什么要使用etcd。本文将简单对etcd与grpc介绍与代码实现。 etcd e...

  • 【实战分享】从选型到项目落地,漫谈 gRPC

    什么是 gRPC? gRPC 的几种常见模式 在学习 gRPC 的时候,相信大家对于它的四种模式都有了解,我们来简...

  • grpc-源码-网络模型

    golang 的grpc库是 https://github.com/grpc/grpc-go grpc serve...

网友评论

      本文标题:什么是gRPC

      本文链接:https://www.haomeiwen.com/subject/bflpbctx.html