gRPC框架学习:1、gRPC框架简介

400 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. 前言

之前我们学了很多的基于Go语言的包,从这里开始我们会接触并总结一些框架,目前我们项目中接触并用到的一个框架是gRPC框架,简单理解可以当成gRPC是对rpc的一种扩展,存在多种语言版本,使得rpc服务和客户端可以跨多种语言进行交互。

2. gRPC简介

grpc官网:

grpc.io/

gRPC (gRPC Remote Procedure Calls) 是Google发起的一个开源远程过程调用 (Remote procedure call) 系统。该系统基于 HTTP/2 协议传输,使用Protocol Buffers 作为接口描述语言。

gRPC是可以在任何环境中运行的现代开源高性能远程过程调用(RPC)框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。

其他功能:

  • 认证( authentication)
  • 双向流(bidirectional streaming)
  • 流控制(flow control)
  • 超时(timeouts)

最常见的应用场景是:

  • 微服务框架下,多种语言服务之间的高效交互。
  • 将手机服务、浏览器连接至后台
  • 产生高效的客户端库

在这里插入图片描述

默认情况下,gRPC使用协议缓冲区(Protocol Buffers),这是谷歌成熟的用于序列化结构化数据的开源机制(尽管它可以用于其他数据格式,如JSON)。这里简单介绍一下它是如何工作的。

3. Protocol Buffers简介

Protocol Buffers(简称:ProtoBuf)是一种序列化数据结构的协议。对于透过管道(pipeline)或存储资料进行通信的程序开发上是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,用于将这些数据结构产生或解析资料流。

语言支持 proto2提供一个程序产生器,支持C++、Java和Python。

第三方实现支持JavaScript。

proto3提供一个程序产生器,支持C++、Java (包含JavaNano)、Python、Go、Ruby、Objective-C和C#.从 3.0.0 Beta 2 版开始支持JavaScript。

第三方实现支持Perl、PHP、Dart、Scala和Julia.

developers.google.com/protocol-bu…

4. 最后

接下来我们先熟悉proto相关内容,然后对gRPC如何结合proto进行使用做总结。