gRPC简介

1、RPC

RPC(Remote Procedure Call),即远程过程调用,过程就是方法,简单来说,它就是一种能够像调用本地方法一样调用远程计算机进程中的方法的技术

2、RPC和HTTP

HTTP 是一种传输协议,RPC 应该是比 HTTP 更高层级的概念。完整的 RPC 实现包含有 传输协议 和 序列化协议,不是同一层次的概念

3、RPC演变过程

 RPC 实现的局限性,SOAP(简单对象访问协议)应运而生,SOAP 是 SOA(面向服务的架构)中的标准通信技术,能够基于任意底层通信协议进行通信,最常用的是 HTTP,序列化协议使用的是 XML。

REST(描述性状态转移)是 ROA(面向资源的架构)的基础,REST 的通用实现是 HTTP + JSON,通过 HTTP 将应用程序建模为能够通过唯一标识符表示的资源集合,状态变更操作会采用 HTTP 动作(GET,POST,PUT,DELETE等),REST 的通用实现是 HTTP + JSON,通过 HTTP 将应用程序建模为能够通过唯一标识符表示的资源集合,状态变更操作会采用 HTTP 动作(GET,POST,PUT,DELETE等)

4、RPC局限性

  • 基于文本的消息协议效率太低。REST 服务建立在基于文本的传输协议 HTTP1.x 上,使用人类可读的文本格式如 JSON,但是,很多时候我们并不需要这种可读性,如果能够直接发送映射服务和客户端业务逻辑的二进制内容,将大大提高效率
  • 缺乏强类型接口。开发 REST 服务时,应用程序之间并不需要共享服务定义和类型定义,我们要么通过网络查看文本格式,要么通过 API 文档,构建这种分散的应用程序时,会遇到很多不兼容、运行时错误和互操作等问题
  • REST架构风格难以实施。REST 架构风格有很多 “好的实践”,遵循这些实践能构建出真正好用的 REST 服务,但是,它们并没有作为协议的一部分进行强制要求,事实上,大多数 REST 服务不过是通过网络公开的 HTTP 服务,并没有很好地遵循基础的架构风格

由于 REST 的局限性,出现了许多新兴的 RPC 技术,较为流行的有 gRPC、Thrift、GraphQL等

5、gRPC简介

gRPC 是一个现代化的开源 RPC 框架,一开始由 google 开发,是一款语言中立、平台中立、的 RPC 系统,与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个 服务,指定能够被远程调用的 方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个gRPC 服务器来处理客户端调用,在客户端拥有一个 stub 连接服务端上的方法

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

gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特

《gRPC 官方文档中文版》:gRPC 官方文档中文版_V1.0

 6、gRPC的优点

  • 提供高效的进程间通信。使用一个基于 protocol buffers 的二进制协议而不是文本格式与客户端通信,同时在 HTTP2 上实现,拥有更好的性能
  • 具有简单且定义良好的服务接口。契约优先,必须首先定义服务接口,然后才能去处理细节,简单一致,可扩展
  • 强类型。服务契约清晰地定义了应用程序间通信所使用的类型,分布式应用程序的开发更加稳定
  • 支持多语言。基于 protocol buffers 的服务定义是语言中立的,可以选择任意一种语言具体实现
  • 支持双工流。与传统的 REST 相比,gRPC 能够同时构建传统的请求-响应风格的消息以及客户端流和服务端流
  • 具备内置的商业化特性。如认证、加密、弹性时间、元数据交换、压缩、负载均衡以及服务发现等
  • 与云原生生态进行了集成。gRPC 是 CNCF(云原生计算基金会)的一部分,大多数现代框架和技术都对 gRPC 提供了原生支持
  • 与云原生生态进行了集成。gRPC 是 CNCF(云原生计算基金会)的一部分,大多数现代框架和技术都对 gRPC 提供了原生支持

7、gRPC的缺点

  • gRPC 不太适合面向外部的服务。gRPC 具有契约驱动、强类型等特点,这会限制向外部暴露服务的灵活性,对客户端有诸多限制,所以更适合用在内部服务器之间通信
  • 避免巨大的服务定义变更。如果出现巨大的服务定义变更,通常需要重新生成客户端代码和服务端代码,会让整个开发生命周期变得复杂,需要小心引入破坏性的变更
  • 生态系统相对较小。与传统 REST 等协议相比,gRPC 仍然处于起步阶段,浏览器和移动应用程序对 gRPC 的支持

来源

Introduction to gRPC | gRPC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值