所有的代码在 https://github.com/xsren/learning_record/tree/master/grpc,欢迎star。
一、先了解几个概念
RPC
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
gRPC
gRPC是一个高性能、通用的开源RPC框架,其由Google主要由开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。
基于HTTP/2协议提供了更好的强的应用性能(节省带宽,减少TCP请求连接数)基于ProtoBuf定义服务,面向接口对服务进行顶层设计支持主流的编程语言,C++,Java,Python,Go,Ruby,Node.js,PHP等, 基于ProtoBuf生成相应的服务端和客户端代码。相比在使用Restful方式完成服务之间的相互访问,GRPC能提供更好的性能,更低的延迟,并且生来适合与分布式系统。同时基于标准化的IDL(ProtoBuf)来生成服务器端和客户端代码, ProtoBuf服务定义可以作为服务契约,因此可以更好的支持团队与团队之间的接口设计,开发,测试,协作等等。
protobuf
protocol buffers(简称protobuf)是google 的一种数据交换的格式,它独立于语言,独立于平台。
protobuf是google开发的一个数据传输格式,类似jsonprotobuf是二进制的、结构化的,所以比json的数据量更小,也更对象化protobuf不是像json直接明文的,