远程过程调用开源框架--gRPC

一、概述

        gRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2.0协议标准而设计,同时支持大多数流行的编程语言。gRPC通过高度封装使远程过程调用变得更加简单,在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法。官方对其的描述为:

gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently, and simplifies the building of connected systems.

二、RPC和gRPC

        RPC是Remote Procedure Call的简称,中文叫远程过程调用,目标就是让远程服务调用更加简单、透明,RPC框架下服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。

RPC架构

        gRPC 是一种现代开源高性能远程过程调用 (RPC) 框架,可以在任何环境中运行。gRPC使客户机和服务器应用程序能够透明地通信,并简化了连接系统的构建。 

   gRPC多设备通信

gRPC具有如下优点:

  • 强大的IDL特性: gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化、或者说序列化。它很适合做数据存储或RPC数据交换格式。可以用于即时通讯、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。通过protobuf提供的机制,服务端与服务端之间只需要关注接口方法名(service)和参数(message)即可通信,而不需关注繁琐的链路协议和字段解析,极大降低了服务端的设计开发成本。不过,当前gRPC仅支持 Protobuf ,且不支持在浏览器中使用。
  • 多语言支持:gRPC支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前,在GitHub上已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它语言的版本正在积极开发中,其中 grpc支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等语言,grpc-java已经支持Android开发。
  • HTTP2.0标准设计:由于gRPC基于HTTP/2标准设计,所以相对于其他RPC框架,gRPC带来了更多强大功能,如双向流、头部压缩、多复用请求等。这些功能给移动设备带来重大益处,如节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。同时,gRPC还能够提高了云端服务和Web应用的性能。gRPC既能 够在客户端应用,也能够在服务器端应用,从而以透明的方式实现客户端和服务器端的通信和简化通信系统的构建。

三、RPC通信流程

         RPC主要包括两个核心部分,分别是存根进程(Stub)和RPC Runtime,存根进程主要是服务的提供方和调用方的代理来屏蔽底层的一些实现细节,这些实现细节主要包括调用参数的序列化和网络传输的一些过程;RPC Runtime主要任务是承担服务提供方(Server)和调用方(Client)之间进行数据传输的一些网络调用。RPC的主要应用场景是内部系统的同步调用。 

RPC通信流程

        RPC就是整个处理流程中Client Stub到Server Stub的过程的一个封装,对于调用方而言,它所感知的就是一个本地调用的一个过程,而底层的一些网络传输和各种实现细节都被RPC框架屏蔽。RPC通信的基本流程:

  • 服务调用方(Client)调用调用方的存根进程(Client Stub),此处会对调用信息(服务名称、调用方法、参数列表、返回参数)进行序列化;

  • 调用方通过RPC Runtime通过网络将打包好的结果发送给服务的提供方机器;

  • Server Stub对接收的调用信息进行反序列化得到相应的信息;

  • 在Server的机器上进行方法的调用并得到一个返回结果;

  • 将返回结果通过Server Stub进行序列化;

  • 通过Server的RPC Runtime将结果返回给调用方的Client的机器;

  • Client Stub将返回结果进行反序列化并将结果返回给Client。

        RPC就是整个处理流程中Client Stub到Server Stub的过程的一个封装,对于调用方而言,它所感知的就是一个本地调用的一个过程,而底层的一些网络传输和各种实现细节都被RPC框架屏蔽。由此可以看出RPC框架有以下特点:

  • 通过网络从远程计算机上请求服务;

  • 不需要了解底层网络技术的协议;

  • 跨越了应用层和传输层。

 四、参考链接

gRPC 官方文档中文版_V1.0http://www.grpc.io/docs/http://doc.oschina.net/grpc?t=56831

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值