gRPC初探

本文介绍了gRPC的基本概念,包括强大的接口描述语言Protocol Buffers和基于HTTP2的优势。通过一个Hello World示例,展示了如何定义服务、生成代码、实现服务端和客户端。gRPC支持多种语言,允许跨语言通信,简化分布式应用的开发。
摘要由CSDN通过智能技术生成

概览

在gRPC的官方文档中这样描述grpc的特点:

feature

第一点:强大的接口描述语言(Powerful IDL)
Protocol Buffers是一个强大的二进制序列化工具集和语言,你可以使用Protocol Buffers定义你的接口。
第二点:支持十种语言的类库
为各种语言编写的服务自动生成相应语言的客户端和服务端存根(也就是接口)
第三点:基于HTTP2协议
基于HTTP2标准设计,带了许多诸如双向流、流程控制、头部压缩、单TCP连接上的多路复用请求等特性。
这些特性使得其在移动设备上表现更好,更省电和节省空间占用,同时加速了运行在cloud上的服务和web应用。

那么什么是gRPC呢?

gRPC客户端可以直接调用另外一台机器上服务器应用程序的方法,就像调用本地对象一样,这使得创建分布式的应用和服务更加方便。
和众多RPC系统一样,gPRC的基本思想是:定义一个接口服务,指定服务中可以通过参数和返回值类型进行远程调用的方法。在服务端,实现这个接口,运行一个gRPC服务器来处理客户端调用请求。在客户端,保留了一个存根(指的是某种语言编写的客户端)提供了和服务端一样的方法。

这里写图片描述

进行通信的gRPC客户端和服务端可以运行在不同的环境上—从Google的内置服务到个人桌面应用—可以是任何gRPC支持的语言。所以,举例来说,你可以简单创建一个使用Java编写的gRPC服务,然后使用Go或者Python,或者Ruby编写的客户端去访问。另外,最新的Google APIs将会有gRPC版本,可以使你很方便地在你的应用中使用Google 的功能。

使用Protocol buffers

gRPC默认使用protocol buffers—Google 的成熟开源机制,用来序列化结构化数据(即便如此,它还可以和其他数据结构例如JSON一起使用)。如你所见,我们下边的例子,将使用proto文件定义gRPC服务,其方法参数和返回类型作为protocol buffer的消息类型。

Protocol buffer 版本

虽然protocol buffers已经在开源用户中使用有一段时间了,但是我们给的例子中使用的却是一个新版本的protocol buffers,叫做proto3。proto3有着轻量级的简化语法,一些有用的新特性,支持更多的语言。当前发布的beta版有Java、C++、Python、Objective-C和C#。alpha版本有protocol buffers Github repo上的JavaNano(Android Java),Ruby,C++和JavaScript,还有golang/protobuf Github repo上的Go语言生成器,更多语言正在开发中。你会在proto3语言指南和各种语言的参考文档中找到更多信息,在release note中看到当前版本的主要改进。

一般情况下,当你还停留在proto2的时候(当前默认protocol buffers版本),我们推荐你使用proto3和gRPC一起使用,因为它能让你使用gRPC支持的全部语言,而且能避免proto2客户端与proto3服务端或者proto3客户端与proto2服务端通信时带来的兼容性问题。

Hello gRPC!

既然你已经了解了gRPC,那么接下来,我们需要搞清它的工作原理,最简单的办法是看一个简单的例子。我们的Hello World将想你展示一个简单的gRPC客户端-服务器应用的构成,并教你如何下手:

1.创建一个protocol buffers schema,定一个简单的RPC服务,它只有一个HelloWorld方法。
2.创建一个服务器,用你喜欢的语言实现上边的接口。
3.用你最喜欢的语言编写一个客户端访问你的服务器。

这个例子的完整代码在我们Github仓库的examples目录下。我们使用Git版本控制系统进行代码管理:然而,你不需要知道任何关于Git的知识,除了知道如何安装和执行一些个git命令。

注:我们的服务端代码的例子不是适用于所有语言,比如gRPC PHP和Object-C只是用来做客户端。

这只是一个介绍性的例子,而不是针对某个特定语言的综合教程。你可以在本站找到更多的深入案例和参考文

设置

这个部分介绍如何在你本机上进行设置来运行我们的例子。如果你只是想阅读源代码,你可以直接跳过这个步骤

安装Git

略~

使用Java作为首选语言

1. 获取源码


                
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值