grpc 开发进阶 - 使用压缩器 compressor
现在网上大部分都是 grpc 相关的介绍,真正涉及到 grpc 的配置使用的文章还是比较少的
所以本系列着重介绍 grpc 开发时可以能会用到的一些配置
compressor
grpc 允许用户自定义 compressor 来压缩传输的内容,并且要求在服务端和客户端都注册使用的 compressor
grpc 已经提供了一个 gzip 的压缩器,可以拿来直接使用,如果需要自定义 compressor 的话可以参考这个代码
客户端
- 客户端可以在调用具体 method 时,使用 UseCompressor 作为 CallOption,
启用 compressor
import ("google.golang.org/grpc/encoding/gzip"
)
client.Echo(ctx, &pb.EchoRequest{Message: msg},grpc.UseCompressor(gzip.Name)
)
- 在创建 ClientConn 时,传递 WithDefaultCallOptions 作为 DialOption , 这样可以设置所有调用的默认 compressor
onn, err := grpc.Dial(*addr,grpc.WithDefaultCallOptions(grpc.UseCompressor(gzip.Name))
)
服务端
服务端同样需要注册 compressor, 并且根据客户端的需求使用相应的 compressor
如果服务端没有实现或注册相应 compressor, 则会返回 Unimlemented
错误
import(_ "google.golang.org/grpc/encoding/gzip"
)
只需要在import 导入 compressor 包即可自动注册
实际上,gzip.go init() 会调用 encoding.RegisterCompressor 来自动注册
// https://github.com/grpc/grpc-go/blob/master/encoding/gzip/gzip.go
// Name is the name registered for the gzip compressor.
const Name = "gzip"func init() {c := &compressor{}c.poolCompressor.New = func() interface{} {return &writer{Writer: gzip.NewWriter(ioutil.Discard), pool: &c.poolCompressor}}encoding.RegisterCompressor(c)
}
example: compression
grpc 开发进阶 - 使用压缩器 compressor相关推荐
- 【音效处理】Compressor 压缩器算法简介
系列文章目录 Delay Line 简介及其 C/C++ 实现 LFO 低频振荡器简介及其 C/C++ 实现 [音效处理]Delay/Echo 算法简介 [音效处理]Vibrato 算法简介 [音效处 ...
- 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念
前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...
- Android Studio 3.3 Beta提供了新的Android代码压缩器R8
摘要: 在将D8作为其新的Dalvik编译器之后,谷歌已经开始研发新的代码压缩器R8,在Android Studio 3.3 beta版本上它已经可以使用了.R8承诺用更少的时间交付更小的APK文件. ...
- 安卓开发首次创建项目一直转圈_Android视频开发进阶(part3Android的Media API)
秦子帅明确目标,每天进步一点点..... 作者 | qing的世界地址 | juejin.im/post/6844903574837657614 上两期我们已经学习了关于视频播放的基础知识,还有容 ...
- linux调整zram大小,ZRAM将在Linux5.1上看到更高的性能-它改变了默认的压缩器
对于那些依赖于ZRAM在RAM中提供压缩块设备的用户,例如将其用于SWAP或/tmp,在Linux 5.1中,您可能会发现它比早期的内核表现更好. 在Linux 5.1中,ZRAM块驱动程序已将其默认 ...
- 音视频开发进阶指南--音视频概念基础
音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...
- avd android 5.1,Kotlin开发进阶
Kotlin开发进阶 编辑 锁定 讨论 上传视频 本词条缺少信息栏.概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <Kotlin开发进阶>是清华大学出版社出版的图书,作者 ...
- .net vue漂亮登录界面_基于 electron-vue 开发的音乐播放器「实践」
作者:XiaoTuGou 转发链接:https://github.com/SmallRuralDog 前言 基于 electron-vue 开发的音乐播放器,界面模仿QQ音乐. 技术栈electron ...
- [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...
最新文章
- 我的第一个SharePoint2013 App
- 【风控场景】互利网上数字金融典型场景: 网络营销
- 对 COM 组件的调用返回了错误 HRESULT E_FAIL
- MySQL数据库:事务和ACID实现原理
- python安装报错ox000007b_Python沙箱逃逸的n种姿势
- HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
- android 组件化_Android 组件化路由框架设计(仿Arouter)
- Android 系统(225)---Android 7.0切换阿拉伯语,QuickSetting界面图标左右翻转
- MFC——在共享DLL中使用MFC、在静态库中使用MFC
- 知了课堂项目part1
- 摩托罗拉gp3688说明书_摩托罗拉GP3688对讲机充电器电路原理分析
- matlab 谐振电路图,rlc串联电路谐振特性图分享
- 利用Python画出《人民日报》各国疫情图——南丁格尔玫瑰图
- HTTP协议详解+经典面试题
- TCP/IP 主要报文头格式
- termux目录_Termux 入门与实践
- 基于希克斯需求价格弹性计算_#炳哥经济学临考密押DAY1#微观计算题考点大盘点(上)...
- html 简繁替换,js简繁转换,两种实现方式,妥妥的~
- iphone怎么添加计算机,如何在iPhone上设置铃声? iPhone如何使用iTunes添加铃声?...
- 利用Tensorflow构建RNN实现垃圾邮件分类
热门文章
- 便利蜂java面试题_便利蜂20200507笔试题(Java)
- AfterShip 技术极客办公室揭秘
- 花了三年时间开发的四轴运动控制卡,可以替代mcx314运动控制IC
- 从屡次一面被刷到腾讯实习生HR面(一个菜鸟的辛酸史)
- 西电杨宗凯调研计算机学院,校长杨宗凯到计算机学院调研指导学院建设工作
- Python语言程序设计(北京理工大学MOOC)1-5周
- 计算机安装电脑程序怎么办理,电脑一开机就自动安装软件怎么办
- 股票收益率正态分布性检验
- 演讲实录丨戴琼海院士《人工智能:算法·算力·交互》
- Out of range value for column 'phon' at row 1