分布式高并发中,如何发挥gRPC的威力?来看看它的底层实现原理!

gRPC是什么

gRPC是什么可以用官网的一句话来概括:

A high-performance, open-source universal RPC framework

所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。如下图所示就是一个典型的RPC结构图。


gRPC的优点

gRPC和restful API都提供了一套通信机制,用于server/client模型通信,而且它们都使用http作为底层的传输协议(严格地说, gRPC使用的http2.0,而restful api则不一定)。不过gRPC还是有些特有的优势,如下:

  • gRPC可以通过protobuf来定义接口,从而可以有更加严格的接口约束条件。

  • 另外,通过protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高性能。

  • gRPC可以方便地支持流式通信(理论上通过http2.0就可以使用streaming模式, 但是通常web服务的restful api似乎很少这么用,通常的流式数据应用如视频流,一般都会使用专门的协议如HLS,RTMP等,这些就不是我们通常web服务了,而是有专门的服务器应用。)

gRPC+K8S

gRPC目前是k8s生态里的事实标准,而Kubernetes又是容器编排的事实标准。gRPC已经广泛应用于Istio体系,包括:

  • Envoy与Pilot(现在叫istiod)间的XDS协议

  • mixer的handler扩展协议

  • MCP(控制面的配置分发协议)

在Cloud Native的潮流下,开放互通的需求必然会产生基于HTTP/2的RPC。即使没有gRPC,也会有其它基于HTTP/2的RPC。一方面,通过gRPC接入扩展兼具了sdk与RESTful的优势: 支持跨语言调用的同时支持友好安全的接入方式。另一方面,gRPC的stream特性虽然好多答主说用不上,但在服务治理的场景下是非常合适的。轻舟微服务框架就使用了gRPC stream实现心跳检查、配置下发,ServiceMesh服务发现、路由规则的下发用的也是gRPC协议。在这些场景下,gRPC stream成为了很常用的一种手段。

gPRC四天集训

目前越来越多的开发岗位,特别是高薪岗位,已将熟悉gRPC作为任职要求中的重要指标,然而,gRPC的学习资料,特别是视频学习资料少之又少。这里,推荐大家一门gRPC集训课,课程由架构师Tony老师耗时10天匠心打造,四天的时间里,Tony老师将从gRPC的使用、原理、优化、实战逐一为大家讲解,让大家真正对gRPC有全面的认识,课程为期四天,4月6日~9日晚上八点至九点半直播教学,本号粉丝,一律免费学习

微信扫码加入集训群 

请如扫码失败加微信号:ruanmou777

周一:gRPC-入门

   1.1 grpc 介绍 

   1.2 grpc 微服务和Grpc如何演化

   1.3 grpc 跨平台应用(跨语言演示)

周二:gRPC-流式处理

   1.1 什么是流式处理 

   1.2 流式处理api介绍

   1.3 流式处理应用场景

   1.4 流式处理实现原理

周三:grpc-安全

   1.1 什么是grpc安全

   1.2 grpc身份验证和授权

   1.3 grpc日志记录和诊断

周四:grpc-集群与部署

   1.1 什么是grpc集群

   1.2 grpc如何实现集群负载均衡

   1.3 grpc如何部署

附赠额外福利一

福利1:送价值399元.NET Core视频合集

福利2:送价值299元微服务视频合集

福利3:送价值499元数据结构算法视频合集

福利4:赠送价值199元Redis视频合集

扫码获取以上福利

仅限前199名

微信扫码加入集训群 

请如扫码失败加微信号:ruanmou777

附赠额外福利二

集训完毕后,学习群里抽奖活动

中奖者获书一本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章