pb传输优化浅谈
在正式切入今天要谈的优化之前,先碎碎念一些自己过去这几年的经历。很久没有登录过博客园了,今天也是偶然兴起打开上来看一下,翻看了下自己的随笔,最后一篇原创文章发布时间是2015年的4月,今天是2017年的6月10号,真是离开了博客园有两年之久了。
2014年6月毕业后开始了北漂生活,在百度2年时间,主要从事百度Hi服务端的研发工作。在百度算是第一次对整个项目的开发有了相对完善的了解,同时也从一个新人逐步的成长,踩了一些坑,长了一些见识。2016年6月离开百度,回到成都,主要是考虑在成都安家,同时老婆也怀孕了,家里很快就要迎来两个小朋友。正好成都蚂蚁金服团队在招人,通过几次面试然后顺利的加入到了蚂蚁金服人工智能团队。
加入蚂蚁一晃过去了一年时间了,现在还记得入职当天就出差时我一脸懵逼的状态。到蚂蚁之后,最大的改变就是团队不再把我当做一个新人来培养,没有人来指导你改怎么样做,我收到的就是一个需求,至于这个需求怎么做,我可以随意发挥,当然前提是要做好。总结为一句话,就是以结果为导向,你可以做的很完美,也可以做的很low,但只要项目符合预期,并取得了该有的成效那你就没有失职。当然懵逼归懵逼,任务可不会等你的,根本就没有时间给我去适应,然后就开始卷入各种任务中。现在回想起来,入职那段时间我效率也是最高的,当然压力也大。
好了,闲话不多说,谈谈今天我要说的话题:pb传输优化浅谈。在最近蚂蚁的工作中,遇到一个性能优化的问题,两个系统之间通过pb形式传输数据,考虑到数据量比较大(单次请求包大约2M左右),原有的pb传输性能不符合业务预期。那么,该怎么优化来提升这个性能呢?
首先我们需要分析主要的耗时在那个环节?我们对该调用链路进行简单的梳理:
客户端将请求对象序列化为pb--网络IO--服务反序列化对象--业务计算--计算结果序列化--网络IO--客户端对响应反序列化
对整个流程中的分阶段耗时进行统计分析,发现目前主要的耗时在序列化的过程,也就是说目前的pb序列化性能不符合预期!怎么优化呢?序列化的过程是cpu密集型的,既然pb序列化无法满足,那我们就寻求性能更好的序列化方式,这里我们选择了flat buffer。
pb和fb各有裨益,在内存空间占用这个指标上,flat buffers占用的内存空间比protobuf多了两倍。序列化时二者的cpu计算时间fb比pb快,当然反序列化时二者的cpu计算时间fb比pb也要快。即fb在计算时间上占优势,而pb则在内存空间上占优。
看似问题解决了,然而未必!序列化、反序列化的性能提升了,传输的数据包变大了。那就继续优化呗,包大了怎么破?压缩~
压缩方法比较多,GZIP、LZO、Zippy/Snappy压缩等方法众多,我们需要选择适合我们的那一款。这几款压缩也是hbase中应用的几种压缩方式。我们对其特点做一个分析,其中:
1)GZIP的压缩率最高,但是其实CPU密集型的,对CPU的消耗比其他算法要多,压缩和解压速度也慢;
2)LZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,其中解压速度快的更多;
3)Zippy/Snappy的压缩率最低,而压缩和解压速度要稍微比LZO要快一些。
BigTable中采用的是Zippy算法,目标是达到尽可能快的压缩和解压速度,同时减少对CPU的消耗。我们目前的需求和这个也是类似的,所以我们通过实现最终选定了使用snappy压缩方式。
好了,今天的浅谈内容结束,期待后续自己能够多有一些出来,有关项目中遇到的一些点和大家分享,也期望能够帮到大家,谢谢!
pb传输优化浅谈的更多相关文章
- MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等
MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...
- App性能优化浅谈
前言 前段时间给公司的小伙伴们进行了关于app性能优化的技术分享.这里我稍微整理一下也给大家分享一下.关于性能优化这个话题非常大,涉及面能够非常广,也能够非常深入.本人能力有限,不会给大家讲特别难懂, ...
- web server性能优化浅谈
作者:ZhiYan,Jack47 转载请保留作者和原文出处 Update: 2018.8.8 在无锁小节增加了一些内容 性能优化,优化的东西一定得在主路径上,结合测量的结果去优化.不然即使性能再好,逻 ...
- dom渲染方面的优化浅谈
今天分享一个面试经验,上周面试中一位印象很深的面试官(主要长得很帅),问我了一个我至今印象很深刻的问题,当然不是什么你之后的职业规划啊,你工作中遇到过哪些问题啊之类的.原起于一道面试题,小伙伴们可以想 ...
- mysql配置优化浅谈(一)
MySQL对于web架构性能的影响最大,也是关键的核心部分.MySQL的设置是否合理优化,直接影响到web的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识 ...
- Mysql 性能优化7【重要】sql语句的优化 浅谈MySQL中优化sql语句查询常用的30种方法(转)
原文链接 http://www.jb51.net/article/39221.htm 这篇文章大家都在转载,估计写的有条理吧,本人稍微做一下补充 1.对查询进行优化,应尽量避免全表扫描,首先应考虑 ...
- sql性能优化浅谈
sql性能优化总结: 最近随着数据越来越多,数据库性能问题暴露的越来越严重.几百万,上千万,甚至过亿的数据处理速度会非常的慢. 下面对工作中遇到的问题做下总结,希望以后能对日后的工作有所帮助. 不同的 ...
- 转:浅谈CSS在前端优化中一些值得注意的关键点
前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加 ...
- Android性能优化的浅谈
一.概要: 本文主要以Android的渲染机制.UI优化.多线程的处理.缓存处理.电量优化以及代码规范等几方面来简述Android的性能优化 二.渲染机制的优化: 大多数用户感知到的卡顿等性能问题的最 ...
随机推荐
- Linux-配置vim开发环境
vim是一个类似于vi的著名的功能强大.高度可定制的文本编辑器,在vi的基础上改进和增加了很多特性.vim是纯粹的自由软件. 为了满足使用者的要求,将vim界面配置为自己想要的界面类型也变得流行起来. ...
- SparkStreaming官方示例程序运行方式
一.前置条件 安装NetCat(有“瑞士军刀”之称,简称nc),输入如下命令: yum install -y nc 二.方式一:直接运行官方Example 2.1 打开一个shell,输入命令:nc ...
- 谈谈web上种图片应用的优缺点
web中承载信息的主要方式就是图片与文字了,以下就是对一些web图片格式的优缺点进行归纳. 1.GIF GIF图是比较古老的web图片格式之一,可以追溯到1987,几乎所有的浏览器都支持这一种格式,老 ...
- bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch
Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...
- [KISSY5系列]KISSY5安装使用(二)
上篇文章,我们遗留的一个问题就是,请求数量有点多,虽然现在的浏览器的请求资源都是并发的.但是我们还是尽量减少请求量. 但是KISSY里面这个问题我们怎么解决呢,其实还是从data-config=&qu ...
- Redis 基本安全规范文档
温馨提示:我在一家手游的公司工作,因为经常用到redis,特为此整理文档(借鉴过大神的文章): 一.什么是redis(出自百度百科)? redis是一个key-value存储系统.和Memcached ...
- TypeScript入门-高级类型
高级类型 交叉类型 交叉类型,就是将多个类型合并为一个新的类型,这个新的类型具有这多个类型的成员,含有这几个类型的所有特性,是他们的综合体,像是集合的并集 例子: function extend< ...
- 【跑会指南】2017年3-5月IT技术会议大合集
2016年各类大会让人应接不暇,技术圈儿最不缺的就是各种大会小会,有的纯干货,有的纯广告.作为一名技术开发者,参加了几场大会,你是不是也开始思忖:究竟哪些会议才值得参加?下面活动家为你推荐几场2017 ...
- linux下fdisk分区管理、文件系统管理、挂载文件系统等
分区管理工具有:fdisk, parted, sfdisk fdisk:对于一块硬盘来讲,最多只能管理15分区: # fdisk -l [-u] [device...] 查看硬盘设备分区信息 # f ...
- get和post方式请求数据,jsonp
get方式请求数据: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Consolas; color: #289c97 } p.p2 { ma ...