基于gRPC使用的思考

一、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来定义服务。

你可能感兴趣的:(基于gRPC使用的思考)