gRPC简介

前提

谈到gRPC,我们不得不说一下RPC,RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。

RPC模式

RPC采用客户端/服务端的模式,通过request-response消息模式实现

Understanding RPCs - Part I - cat /dev/random | Prakhar Srivastav

通过上图可以了解到RPC模式和WebApi其实是一样的,都是服务端模式,也就是客户端call服务端的形式。但是这里是否有区别呢,我们下面慢慢探索。

Java和.NET平台中常见的通信技术

Java中支持的包括:

技术简介是否支持跨平台
Corbra90年代产物,已被淘汰不支持
RMIEJB时代产物,已逐渐被淘汰不支持
WebService基于Http SOAP,效率低,逐渐被淘汰支持
Hessain基于Http,二进制序列化,效率高,使用广泛支持
Rest(spring mvc等)支持Http Rest,广泛应用于无线API,开放平台等支持
JMS、开源MQJava消息服务(消息中间件),使用广泛支持
Socket基于Mina、Netty(NIO、AIO高效通信)理论上支持

.NET中包括:

技术简介是否支持跨平台
WebService基于Http SOAP,效率低,逐渐被WCF整合淘汰支持
.NET Remoting通信效率尚可,使用复杂,逐渐被WCF整合淘汰不支持
WCF SOAP整合了原有的WebService,通信效率低支持
WCF NET.TCP通信效率高,部分.NET项目内部服务在使用不支持
WCF Rest使用较少,已经被Web Api逐渐取代支持
Web Api支持Http Rest,广泛应用于无线API,开放平台等支持
MSMQ、开源MQ微软自己的消息中间件或者其他开源MQ支持(MSMQ除外)
Hessain .NET基于Http,二进制序列化,效率高,使用较少支持
Socket通过Socket网络编程方式实现系统通信理论上支持

gRPC

谷歌开源的一套 RPC 协议框架,默认基于Protobuf协议进行数据输出。

Protobuf(Protocol Buffers 编码)

Protobuf 是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化数据。

proto3

第一行第一句syntax = "proto3";,如何html5的第一句一样,都是为了定义版本和语义

定义类型
message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 results_per_page = 3;
}

关于更多proto3的语法请查阅语言指南(原型 3) |协议缓冲区文档 (protobuf.dev)

C#版本的proto3协议基础知识查阅协议缓冲区基础知识:C# |协议缓冲区文档 (protobuf.dev)

gRPC 的优势

gRPC 使用 HTTP/2 作为传输协议。 虽然与 HTTP 1.1 也能兼容,但 HTTP/2 具有许多高级功能:

  • 用于数据传输的二进制组帧协议 - 与 HTTP 1.1 不同,HTTP 1.1 是基于文本的。
  • 对通过同一连接发送多个并行请求的多路复用支持 - HTTP 1.1 将处理限制为一次处理一个请求/响应消息。
  • 双向全双工通信,用于同时发送客户端请求和服务器响应。
  • 内置流式处理,支持对大型数据集进行异步流式处理的请求和响应。
  • 减少网络使用率的标头压缩。

gRPC 是轻量型且高性能的。 其处理速度可以比 JSON 序列化快 8 倍,消息小 60% 到 80%。 在 Microsoft Windows Communication Foundation (WCF) 中,gRPC 的性能超过经过高度优化的 NetTCP 绑定的速度和效率。 与偏向于 Microsoft 堆栈的 NetTCP 不同,gRPC 是跨平台的。

gRPC .net6 demo

.NetCore gRpc 客户端与服务端的单工通信Demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: RPC(Remote Procedure Call)和 gRPC 是两种不同的远程过程调用协议。RPC是一种通过网络从远程计算机程序上请求服务的协议,它可以实现不同节点之间的通信。而gRPC是一种基于RPC协议的框架,它使用了Google开发的Protocol Buffers作为序列化和协议编解码器,以及HTTP/2作为网络传输协议。\[1\]\[2\]\[3\] 区别在于,gRPC相比传统的RPC框架具有以下特点: 1. 序列化和协议编解码器:gRPC使用Protocol Buffers作为默认的序列化和协议编解码器,它可以高效地序列化和传输数据。 2. 网络传输协议:gRPC使用HTTP/2作为网络传输协议,可以提供更高的性能和更低的延迟。 3. 多语言支持:gRPC支持多种编程语言,包括C++、Java、Python等,可以方便地在不同的语言之间进行通信。 4. 异步支持:gRPC支持异步调用,可以提高系统的并发性能。 5. 服务定义:gRPC使用Protocol Buffers定义服务接口和消息类型,可以自动生成客户端和服务端的代码,简化开发过程。 总之,gRPC是一种基于RPC协议的框架,通过使用Protocol Buffers和HTTP/2等技术,提供了更高效、更灵活的远程过程调用方式。 #### 引用[.reference_title] - *1* *2* *3* [RpcgRpc 简介汇总](https://blog.csdn.net/Jailman/article/details/126056469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值