Grpc简介

Posted 神的孩子都在歌唱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grpc简介相关的知识,希望对你有一定的参考价值。

前言

最近公司要使用grpc写公共服务(可以在每个参产品都能用得上),本文参考了其他文章写了grpc简介,后面会发布python和java两种语言如何使用grpc做通信

Grpc简介

一. 了解gRPC

  1. gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,可以在任何地方运行。它使客户端和服务器应用程序能够透明地通信,并使构建连接系统变得更加容易。.

  2. gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

1.1 为什么使用

主要使用场景:

  • 低延迟、高度可扩展的分布式系统。
  • 开发与云服务器通信的移动客户端。
  • 设计一个需要准确、高效和独立于语言的新协议。
  • 分层设计以实现扩展,例如。身份验证,负载平衡,日志记录和监控等。

二. protobuf作用

  1. grpc传输协议传输的数据类型为protobuf数据.ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。压缩和传输效率高,语法简单,表达力强。所以grpc都是和protobuf一块使用。
  2. protobuf Buffers叫做协议缓冲区语言(包括 .proto 文件语法),使用它构建协议缓冲区数据,从 .proto 文件中生成数据访问类使用。

2.1 .proto文件示例

syntax = "proto3";

service Greeter 
  rpc SayHello (HelloRequest) returns (HelloReply) 

// 请求消息。
message HelloRequest 
  string name = 1;

// 响应信息
message HelloReply 
  string message = 1;

2.2 标量值类型

标量消息字段可以具有以下类型之一:该表显示 .proto 文件中指定的类型,以及自动生成的类中的相应类型:

本人只拿了python,java,c,go的类型

.proto TypeNotesJava/Kotlin Type[1]Python Type[3]Go TypeC# Type
doubledoublefloatfloat64double
floatfloatfloatfloat32float
int32使用可变长度的编码。对负数的编码效率低下 - 如果您的字段可能包含负值,请改用 sint32。intintint32int
int64使用可变长度的编码。对负数的编码效率低下 - 如果字段可能有负值,请改用 sint64。longint/long[4]int64long
uint32使用可变长度的编码。int[2]int/long[4]uint32uint
uint64使用可变长度的编码。long[2]int/long[4]uint64ulong
sint32使用可变长度的编码。有符号整数值。与常规 int32 相比,这些函数可以更高效地对负数进行编码。intintint32int
sint64使用可变长度的编码。有符号整数值。与常规 int64 相比,这些函数可以更高效地对负数进行编码。longint/long[4]int64long
fixed32始终为 4 个字节。如果值通常大于 228,则比 uint32 更高效。int[2]int/long[4]uint32uint
fixed64始终为 8 个字节。如果值通常大于 256,则比 uint64 更高效。long[2]int/long[4]uint64ulong
sfixed32始终为 4 个字节。intintint32int
sfixed64始终为 8 个字节。longint/long[4]int64long
boolbooleanboolboolbool
string字符串必须始终包含 UTF-8 编码或 7 位 ASCII 文本,并且长度不得超过2的32次幂。Stringstr/unicode[5]stringstring
bytes可以包含任意长度的 2的32次幂 字节。ByteStringstr (Python 2) bytes (Python 3)[]byteByteString

三. 参考文章

grpc官方文档中文

protocol buffers 中文文档

grpc文档

本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。

以上是关于Grpc简介的主要内容,如果未能解决你的问题,请参考以下文章

grpc入门 --- 1 grpc简介

Grpc简介

Grpc简介

Grpc简介

gRPC——简介与Hello World

grpc & opentrace 简介