首页 > 解决方案 > GRPC服务与应用

GRPC服务与应用

点击次数:513 更新时间:2023-11-15
  远程过程调用(RPC)系统在工业界的应用非常广泛,该系统使得客户端(Client)可以像调用本地方法一样调用远程服务端(Service)提供的方法,而不需要关心底层的通信细节。
 
  REST是一种灵活的体系结构,它定义了对实体资源的基于CRUD的操作, 客户端使用请求/响应通信模型跨HTTP与资源进行交互。在它的基础上,一种新的通信技术GRPC已在各个生态中获得巨大的动力。
 
  GRPC是RPC框架的一种,是一个高性能、开源和通用的RPC框架,基于ProtoBuf(Protocol Buffers) 序列化协议开发,支持众多开发语言,面向服务端和移动端,基于 HTTP/2 设计,支持诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等。
 
主流的GRPC框架:
 
  支持多语言的GRPC框架,比较成熟的有Google的GRPC、Apache(Facebook)的Thrift;
 
  只支持特定语言的RPC框架,例如新浪微博的Motan;
 
  支持服务治理等服务化特性的分布式服务框架,例如阿里的Dubbo。
 
基本通讯流程:
 
  1、客户端(GRPC Stub)调用A方法,发起RPC调用。
 
  2、对请求信息使用Protobuf进行对象序列化压缩(IDL)。
 
  3、服务端(GRPC Server)接收到请求后,解码请求体,进行业务逻辑处理并返回。
 
  4、对响应结果使用Protobuf进行对象序列化压缩(IDL)。
 
  5、客户端接受到服务端响应,解码请求体。回调被调用的A方法,唤醒正在等待响应(阻塞)的客户端调用并返回响应结果。
 
GRPC的特性:
 
  支持C++、Java、Go、Python、Ruby、C#、Node.js、Android Java、Objective-C、PHP等编程语言;
 
  基于IDL ( 接口定义语言(Interface Define Language))文件定义服务,通过 proto3 工具生成指定言的数据结构、服务端接口以及客户端Stub;
 
  基于标准的HTTP/2设计,支持双向流、消息头压缩、单TCP多路复用、服务端推送等特性,这些特性使得GRPC在移动端设备上更加省电和节省网络流量;
 
  序列化支持PB(Protocol Buffer)和JSON,PB是一种语言无关高性能序列化框架,基于 HTTP/2 + PB, 保障了RPC调用的高性能。
 
GRPC通常适合以下应用场景:
 
  点对点实时通信 - GRPC对双向流媒体提供出色的支持,GRPC服务可以实时推送消息而无需轮询。
 
  多语言混合开发环境 - GRPC工具支持所有流行的开发语言,使GRPC成为多语言开发环境的理想选择。
 
  网络受限环境 - 使用Protobuf(一种轻量级消息格式)序列化GRPC消息,GRPC消息始终小于等效的JSON消息。
 
  GRPC服务的优势是能够为每个独立的服务(即多语言)使用不同的技术。每个服务都同意 API 来交换数据、数据格式、错误模式、负载平衡等。由于 GRPC 允许以二进制格式描述合约,可以有效地用于独立于语言的服务通信。
 
  工业协议网关所承载的就是一种基于工业现场的服务应用!
 
  对于这种新型的工业场景应用,铁牛智能网关已经开始布局,并且已经在客户实际现场开发对接使用、并逐步走向成熟!