Go语言 gRPC 简述

参考文章:

聊聊gRPC的特性和背后设计的原则(一)-腾讯云开发者社区-腾讯云

 grpc-我们为什么要用gRpc?gRpc快在哪里?_grpc 优点-CSDN博客

 GRPC详解-CSDN博客

1. 什么是gRPC

        gRPC 是一个高性能 远程调用(RPC)框架,屏蔽分布式计算中的各种调用细节,可以像本地调用一样调用远程的函数。

2. 为什么要用gRPC   

(1) 性能高:使用 protobuf,性能高于json(快6倍); 使用 http2.0,性能高于 http1.1

(2) 生态好:开源,而且背靠Google,连nginx都支持gRPC

(3) 强数据类型:编译环节就帮助避免了数据类型问题。

(4) 跨语言:同一个协议文件(.proto),不用修改,可以使用在多种语言上,包括 go,java,c

3. 使用方式

(1) gRPC 通过 protocol buffers (.proto文件) 来定义接口,接口由服务端和客户端共同使用。

(2) 服务端将方法或者类注册到服务中。

(3) 客户端只要连接成功,就可以调用注册进服务的接口,把请求发到服务端,并获得返回。

4. 为什么protobuf比json快?

     主要是因为数据结构节省空间,具体包括:

(1) 无需分隔符:存储了字段的类型,可以直接计算出value的长度,无需匹配分隔符。

(2) 空字段省略:若字段没有被设置数字值,不需要进行编码。json需要传key和空值value。

(3) 二进制key:key 用字段的数字值转换成二进制表示,比json的key用字符串表示节省空间。

5. http2.0为什么比http1.1性能高?

(1) 多路复用:

http1:一次请求,一个响应,建立一个连接用完关闭,每一个请求都要建立一个连接。

http2:多个请求可并行执行,某个请求任务耗时严重,不会影响到其它连接的正常执行

而且,http2 减少了连接数,避免了频繁重建tcp,改善网络拥塞情况。

(2) 数据压缩:

http1:文本格式

http2:二进制格式,并且对body进行gzip压缩。

(3) 二进制分帧:

http1:以分隔符分割消息的数据,必须按顺序发送,在完成之前不能停止。

http2:将所有传输的信息分割为更小的消息和帧,可以乱序发送,然后根据每个帧首部的流标识符号进行组装。

(4) 支持服务器主动推送

http2 主动推送资源,节省前端的请求次数。

6. 同步和异步

    gRPC同时支持同步调用和异步调用。

    同步RPC调用时会一直阻塞直到服务端处理完成返回结果。

    异步RPC是客户端调用服务端时不等待服务段处理完成返回,而是服务端处理完成后主动回调客户端。

7. 负载均衡

    gRPC并没有直接实现负载均衡的功能,但是提供了负载均衡的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值