找回密码
 立即注册
查看: 339|回复: 0

基于gRPC使用的思考

[复制链接]
发表于 2022-1-29 16:10 | 显示全部楼层 |阅读模式
一、gRPC简介

   gRPC(Remote Produce Call)是google开发的一个高性能、开源的通用的RPC框架。
二、gRPC特点

高性能:

基准测试:


在Java到Java的通信中,使用Protobuf能够在25毫秒内处理5万个对象实例,而JSON需要150毫秒,性能是6倍(AuthO的基准)

gRPC速度快了10倍(go基准测试)

gRPC速度快10倍(ASP.NET Core WebAPI基准测试)
Protocol buffers


    gRPC默认使用Protocol buffers作为接口定义语言,protocol buffers是google用于序列化结构化数据的语言中立、平台中立、可扩展,相比XML,它更小、更快、更简单。

    protocol,json.xml对比

Http/2:


特点:Header压缩、多路复用、使用二进制格式传输(http 1.x文本格式)、服务器主动推送,减少请求的延迟。

    帧:HTTP/2数据通信的最小单位消息:指HTTP/2中逻辑上的HTTP消息。例如请求和响应等,消息由一个或多个帧组成。

   流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。

     http1.1与http2对比 :Akamai
开源:


  gitee:https://gitee.com/mirrors/grpc-framework

  github:https://github.com/grpc/grpc

  C#包:https://github.com/grpc/grpc/tree/master/src/csharp
通用:


  支持:C,C++,Node.js,Python,Ruby,Objective-C,PHP,C#,go,java
三、API类型

  一元:rpc GetFeature(Point) returns (Feature){} 特点:传入一个对象,返回一个对象

客户端流:rpc RecordRoute(stream Point) returns (RouteSummary){} 特点:传入多个对象,返回一个对象

服务端流:rpc ListFeatures(Rectangle) returns (stream Feature){} 特点:传入一个对象,返回多个对象

双向流:rpc RouteChat(stream RouteNote) returns(stream RouteNote){} 特点:传入多个对象,返回多个对象
四、RPC架构



RPC工作原理


五、gRPC使用场景

  1.低延迟,高可用的分布式系统

  2.移动端与云服务端的通讯

  3.使用protobuf,独立语言的协议,支持多语言之间的通讯

  4.可以分层扩展,如:身份验证,负载均衡,日志记录,监控等
六、Q&A

1.RPC和http的区别

最本质区别,RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,HTTP协议是在传输协议TCP之上的。

2.gRPC,Http/2,ProtoBuf三者之间有什么区别

  gRPC是一种通信框架,http/2是通信协议,gRPC是基于HTTP/2协议标准而设计。ProtoBuf是由Google开发的一种数据序列化协议(类似xml,json),gRPC使用ProtoBuf来定义服务。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-6-1 16:40 , Processed in 0.135712 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表