[科学院手记]人人网新鲜事分享现场转播
讲座已经开始,现在是人人网牛人张洁介绍。
-—
现在是新鲜事后台架构牛人铁安在讲解新鲜事要完成的功能:
将一个用户产生的内容实时发送给与他相关的一群人。
尽可能地帮助用户保存内容。
现在面临的挑战
分发压力:5000W*100 全天分发的总量在五十亿左右。每秒分发的次数是六万次每秒。
现在有1.3t的内存占用。
-—
老版本的新鲜事结构
-—
新的系统结构
分发之后,内容本体丢进cache和db,dispatch服务通知到相关的人,分发后来的结构保存一人一条到TC
-–
MENU
技术细节部分
分发部分的策略优化:瞬间分发海量数据,光良首页的例子(一百万的粉丝同时产生)。产品策略优化。
内存压缩技术:新鲜事内存结构(FlyWeight),字符串压缩存储(QuickLZ)
新鲜事存储方案
-—
内存压缩技术:flyweight的设计
只要对象存在,所有的指针都能找到正确的内容。
boost::flyweight在高并发情况下有效率问题,自己实现了相同的功能。
各种压缩办法的性能比较:
QuickLZ的压缩比不是最高的,但解压缩是最快的;代码简单;支持追加方式的压缩;有成熟的商业应用。
boost::multi_index介绍 用来做多视图显示的东东 提供三种不同的索引方式
一段例子代码 c++代码。。。略鸟
-——
新鲜事存储方案
TC+Direct IO + SSD
key-value DB的一个表。
研究的三个开源项目:
Hypertable
tokyo tyrant
MemcacheDB (哈哈,测试了两个张宴兄弟的东东,感叹一下下,张宴兄弟在nginx和tt的文档贡献真是不浅)
TC的测试结果
读取很少的数据的情况下读和写都很快,在几个G之内的数据文件,数据量增加到一定程度写入会持续下降。100G一秒只能写入六七百次。所以单纯使用TC是不现实的。
新的方案
所有的写合并;通过LOG保证Down机后数据恢复;使用TC保存索引;使用异步IO读写文件;使用DirectIO怎么OS的Cache策略;使用SSD解决大量的并发读取。
SSD随机读和顺序读速度接近。五六万每次的速度。
-——
全场结束,答疑
-——
原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]