GRPC入门及简单使用介绍

GRPC入门及简单使用介绍

ID:38965044

大小:759.81 KB

页数:21页

时间:2019-06-22

GRPC入门及简单使用介绍_第1页
GRPC入门及简单使用介绍_第2页
GRPC入门及简单使用介绍_第3页
GRPC入门及简单使用介绍_第4页
GRPC入门及简单使用介绍_第5页
资源描述:

《GRPC入门及简单使用介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GRPC课件课件内容GRPC概述为什么要使用GRPCGRPC案例讲解GRPC概述一、什么是GRPCGRPC是由Google提供的一个高性能、通用性强的RPC开源框架,它主要面向移动应用开发。官网:http://www.grpc.io/知识点:RPC的实现思路大同小异,以动态代理为例,定义好接口,用一个代理假装实现了这个接口(真正的实现放在服务端),供客户端调用,代理内部将该方法调用封装成一个网络请求发送到服务端。服务端根据参数找到对应的注册好的对象进行处理,返回给客户端。GRPC概述以下为GRPC概念图:GRPC概述二、GRPC的特性1、基于HTTP/2协议标准什么是HTTP/2协

2、议?HTTP2.0即超文本传输协议2.0,是下一代HTTP协议(基于二进制的传输协议)。是由互联网工程任务组(IETF)的Bis(httpbis)工作小组进行开发。GRPC概述HTTP/2的优点http2减少了网络往返传输的数量,并且用多路复用和快速丢弃不需要的流的办法来完全避免headoflineblocking(线头阻塞)的困扰,降低延迟并提高安全性。支持大量并行流,所以即使网站的数据分发在各处也不是问题。合理利用流的优先级,可以让客户端尽可能优先收到更重要的数据。GRPC概述2、GRPC基于强大的IDL(Interfacedescriptionlanguage)GRPC基于P

3、rotoBuf(ProtocolBuffers)定义接口规范。ProtoBuf是什么?ProtocolBuffers是google提供的一种轻便、高效、简单的数据存储语言,可以用于结构化、序列化数据。为什么要使用ProtoBuf?适合应用场景:它很适合做数据存储或RPC数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化数据结构。GRPC概述支持语言众多(提供了完善的API):Proto2提供了C++、Java、Python三种语言的API。目前语言版本Proto3提供了更多的语言支持,包括C++、C#、GO、JAVA、PYTHON。易学易懂:proto

4、Buf语法非常简单,掌握非常容易,便于读写。以下为protoBuf的语法例子:官网:https://developers.google.com/protocol-buffers/GRPC概述3、GRPC支持众多开发语言GRPC目前支持的开发语言已达到了10种:C,C++,Java,Go,Node.js,Python,Ruby,Objective-C,PHPandC#。并且GRPC框架已在GitHub上开源。GitHub地址:https://github.com/grpcJAVAGitHub地址:https://github.com/grpc/grpc-javaGRPC使用案例2、编

5、译proto文件编译有两种方式:一是在IDE中直接引入protobuf插件来编译。二是到官网下载源码,手工生成protoc编译器,然后再编译(不推荐,步骤太繁琐)。protoBuf官方源码:https://github.com/google/protobuf为什么要使用GRPC1、它使用HTTP2协议,可复用链接,更充分的利用底层TCP传输协议,并以数据流的方式传输,比其他基于HTTP1的传输速率更高。2、它基于ProtoBuffer语言,对传输数据进行压缩、系列化和结构化,易于客户端与服务端数据的读写操作,并使数据量传输变得更小、传输效率更高。3、基于以上及其他特性,使得基于GR

6、PC的客户端和服务端更高效的利用流和链接,从而有助于节省宽带流量、降低链接次数、提高CUP使用效率和电池的使用寿命。GRPC使用案例案例、Person的服务1、通过ProtoBuf定义接口规范定义消息体(message)messagePerson{stringname=1;int32age=2;}messageResponseMessage{stringmessage=1;}messageQueryPersonRequest{stringname=1;}GRPC使用案例定义服务接口(service)servicePersonService{//AsimpleRPC.rpchello

7、(Person)returns(ResponseMessage){}//Aclient-to-serverstreamingRPC.rpcaddPerson(streamPerson)returns(ResponseMessage){}//Aserver-to-clientstreamingRPC.rpcgetPersonByName(QueryPersonRequest)returns(streamPerson){}//ABidirectionalstreaming

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。