分布式高并发中,如何发挥gRPC的威力?来看看它的底层实现原理!
Posted Dotnet9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式高并发中,如何发挥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日晚上八点至九点半直播教学,本号粉丝,一律免费学习。
微信扫码加入集训群
1.1 grpc 介绍
1.2 grpc 微服务和Grpc如何演化
1.3 grpc 跨平台应用(跨语言演示)
1.1 什么是流式处理
1.2 流式处理api介绍
1.3 流式处理应用场景
1.4 流式处理实现原理
1.1 什么是grpc安全
1.2 grpc身份验证和授权
1.3 grpc日志记录和诊断
1.1 什么是grpc集群
1.2 grpc如何实现集群负载均衡
1.3 grpc如何部署
附赠额外福利一
扫码获取以上福利
仅限前199名
微信扫码加入集训群
附赠额外福利二
集训完毕后,学习群里抽奖活动
中奖者获书一本
以上是关于分布式高并发中,如何发挥gRPC的威力?来看看它的底层实现原理!的主要内容,如果未能解决你的问题,请参考以下文章