[科学院手记]人人网新鲜事分享现场转播

讲座已经开始,现在是人人网牛人张洁介绍。

----

现在是新鲜事后台架构牛人铁安在讲解新鲜事要完成的功能:

将一个用户产生的内容实时发送给与他相关的一群人。

尽可能地帮助用户保存内容。

现在面临的挑战

分发压力: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]

捐款订阅54chen
捐赠说明

Comments