现在网上大部分都是 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相关推荐

  1. 【音效处理】Compressor 压缩器算法简介

    系列文章目录 Delay Line 简介及其 C/C++ 实现 LFO 低频振荡器简介及其 C/C++ 实现 [音效处理]Delay/Echo 算法简介 [音效处理]Vibrato 算法简介 [音效处 ...

  2. 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念

    前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...

  3. Android Studio 3.3 Beta提供了新的Android代码压缩器R8

    摘要: 在将D8作为其新的Dalvik编译器之后,谷歌已经开始研发新的代码压缩器R8,在Android Studio 3.3 beta版本上它已经可以使用了.R8承诺用更少的时间交付更小的APK文件. ...

  4. 安卓开发首次创建项目一直转圈_Android视频开发进阶(part3Android的Media API)

    秦子帅明确目标,每天进步一点点..... 作者 |  qing的世界地址 |  juejin.im/post/6844903574837657614 上两期我们已经学习了关于视频播放的基础知识,还有容 ...

  5. linux调整zram大小,ZRAM将在Linux5.1上看到更高的性能-它改变了默认的压缩器

    对于那些依赖于ZRAM在RAM中提供压缩块设备的用户,例如将其用于SWAP或/tmp,在Linux 5.1中,您可能会发现它比早期的内核表现更好. 在Linux 5.1中,ZRAM块驱动程序已将其默认 ...

  6. 音视频开发进阶指南--音视频概念基础

    音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...

  7. avd android 5.1,Kotlin开发进阶

    Kotlin开发进阶 编辑 锁定 讨论 上传视频 本词条缺少信息栏.概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <Kotlin开发进阶>是清华大学出版社出版的图书,作者 ...

  8. .net vue漂亮登录界面_基于 electron-vue 开发的音乐播放器「实践」

    作者:XiaoTuGou 转发链接:https://github.com/SmallRuralDog 前言 基于 electron-vue 开发的音乐播放器,界面模仿QQ音乐. 技术栈electron ...

  9. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

最新文章

  1. 我的第一个SharePoint2013 App
  2. 【风控场景】互利网上数字金融典型场景: 网络营销
  3. 对 COM 组件的调用返回了错误 HRESULT E_FAIL
  4. MySQL数据库:事务和ACID实现原理
  5. python安装报错ox000007b_Python沙箱逃逸的n种姿势
  6. HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
  7. android 组件化_Android 组件化路由框架设计(仿Arouter)
  8. Android 系统(225)---Android 7.0切换阿拉伯语,QuickSetting界面图标左右翻转
  9. MFC——在共享DLL中使用MFC、在静态库中使用MFC
  10. 知了课堂项目part1
  11. 摩托罗拉gp3688说明书_摩托罗拉GP3688对讲机充电器电路原理分析
  12. matlab 谐振电路图,rlc串联电路谐振特性图分享
  13. 利用Python画出《人民日报》各国疫情图——南丁格尔玫瑰图
  14. HTTP协议详解+经典面试题
  15. TCP/IP 主要报文头格式
  16. termux目录_Termux 入门与实践
  17. 基于希克斯需求价格弹性计算_#炳哥经济学临考密押DAY1#微观计算题考点大盘点(上)...
  18. html 简繁替换,js简繁转换,两种实现方式,妥妥的~
  19. iphone怎么添加计算机,如何在iPhone上设置铃声? iPhone如何使用iTunes添加铃声?...
  20. 利用Tensorflow构建RNN实现垃圾邮件分类

热门文章

  1. 便利蜂java面试题_便利蜂20200507笔试题(Java)
  2. AfterShip 技术极客办公室揭秘
  3. 花了三年时间开发的四轴运动控制卡,可以替代mcx314运动控制IC
  4. 从屡次一面被刷到腾讯实习生HR面(一个菜鸟的辛酸史)
  5. 西电杨宗凯调研计算机学院,校长杨宗凯到计算机学院调研指导学院建设工作
  6. Python语言程序设计(北京理工大学MOOC)1-5周
  7. 计算机安装电脑程序怎么办理,电脑一开机就自动安装软件怎么办
  8. 股票收益率正态分布性检验
  9. 演讲实录丨戴琼海院士《人工智能:算法·算力·交互》
  10. Out of range value for column 'phon' at row 1