生活工程体验信仰哲学精神
投稿投诉
精神世界
探索历史
哲学文学
艺术价值
信仰创造
境界审美
体验技术
技能工具
工程信息
医学生产
生活运用
操作能力

微博系统的和模式和时间分区拉模式架构探讨

6月26日 尘世客投稿
  sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter。com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed架构,也就是推拉模式(timyang上次也分享了新浪微薄的模式)。下面我们就微博的feed推拉(push,pull)模式做一下探讨,并提出新的时间分区拉模式。
  众所周知,在微博中,当你发表一篇微博,那么所有关注你的followers(粉丝)都会在一定的时间内收到你的微薄,这有点像群发一封邮件,所有的抄送者都会在一定的时间内收到。到这里,你可能觉得没有什么难度。我们看下下面的截图:
  图一:新浪微博姚晨
  图二:twitter上冯大辉
  新浪微博的姚晨粉丝有2594751,她发表任何一篇微博,都需要2594751个粉丝在一定的时间内收到,twitter的冯大辉发表一篇的话,需要19868个followers收到。
  相反,姚晨需要收到他关注的545个人的所有更新,冯大辉需要收到他关注的2525个人的所有更新。到这里,你是不是感觉到有那么一点点小挑战呢?
  下面我们看下微博一般的整体结构图:
  图三:微博整体结构
  图中展示了微博的整体数据流程,先了解下整体的数据结构,没有涉及到followers等的推拉模式处理。下面我们再看下推模式(push):
  图四:推模式结构
  推模式需要把一篇微博推送给所有关注他的人(推给所有的粉丝),比如姚晨,我们就需要推送给2594751个用户的feeds表中。当然,feeds表可以很好的进行sharding,存储也都是一些数字型的字段,存储空间可能不是很大,用户在查询自己关注的所有人的feed时,速度快,性能非常高,但是推送量会非常大,姚晨发表一篇,就会产生200多万条数据。试想,一个大量用户的微薄系统通过使用推模式,是不是会产生非常惊人的数据呢?
  下面看下拉模式(pull)
  图五:拉模式
  拉模式只需要用户发表微博时,存储一条微博数据到feeds表中(feeds表可以是一个临时表,只保存近期可接受范围的数据)。用户每次查询feed时都会去查询feeds表。比如姚晨打开自己的微薄首页,就产生:SELECTidFROMfeedswhereuidin(followinguidlist)ORDERBYidDESCLIMITn(查询最新的n条),缓存到memcached
  {data:idlist,timeline:上次查询出来的最新的一条数据的时间}
  再次刷新:SELECTidFROMfeedswhereuidin(followinguidlist)AND(memcached存储的上次的timeline)ORDERBYidDESCLIMITn
  这种模式实现起来也是比较简单和容易的,只是在查询的时候需要多考虑下缓存的结构。但是feeds表会产生很大的压力,怎么说feeds表也要保存最近十天半个月的数据吧,对于一个大点的系统,这会产生比较大的数据,如果following的人数比较多,数据库的压力就会非常大。而且一般在线的用户,客户端都会定期扫描,又会增加很大的压力,这在查询性能上没有推模式的效率高。
  下面我们在对拉模式做一下改进优化
  图五:拉模式(pull)改进(时间分区拉模式)
  拉模式的改进主要是在feeds的存储上,使用按照时间进行分区存储。分为最近时间段(比如最近一个小时),近期的,比较长时期等等。我们再来看下查询的流程,比如姚晨登陆微博首页,假设缓存中没有任何数据,那么我们可以查询比较长时期的feeds表,然后进入缓存。下一次查询,通过查询缓存中的数据的timeline,如果timeline还在最近一个小时内,那么只需要查询最近一个小时的数据的feed表,最近一个小时的feeds表比图四的feeds表可要小很多,查询起来速度肯定快几个数量级了。
  改进模式的重点在于feeds的时间分区存储,根据上次查询的timeline来决定查询应该落在那个表。一般情况下,经常在线的用户,频繁使用的客户端扫描操作,经常登录的用户,都会落在最近的feeds表区间,查询都是比较高效的。只有那些十天,半个月才登录一次的用户需要去查询比较长时间的feeds大表,一旦查询过了,就又会落在最近时间区域,所以效率也是非常高的。
投诉 评论 转载

久皇延时喷剂能够延时是不是真的延时喷剂的延迟原理:降低男性阴茎龟头敏感度,从而延迟射J时间,延长性爱时间。久皇延时喷剂采用纯中药:蛇床子、五倍子、苦参等名贵中药材,有治疗阳痿早泄,固精止遗(降低龟头敏……微博系统的和模式和时间分区拉模式架构探讨sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter。com或者国内的新浪微博,人人网等,在各种技术社区,技术大会……我以后不马虎了人总有偷懒的时候,弄不好就会闹笑话,而我经历了一场笑话后,就再也不敢马虎了。记得那是一次晚自习,徐老师让我帮他记一下谁没交作业,如果交了作业就把成绩写上去,我认真地一张张……哭泣的书我是一本书,我的名字叫《语文》,我有着自己的悲伤与快乐。原来我有一个爱惜我的主人,在我伴随他的日子里,他都是小心翼翼的爱护着我,上课时轻轻的把我翻开,下课后轻轻的把我放到……全球十大奢侈品牌用的起的都是土豪在现在生活中,随着现在我们经济的发展,可以说越来越多的人都追求高质量的生活,而且还可以说很多女生认准这些奢侈品牌,是因为它不仅在生活中非常耐穿的,质量也很好,而且这些奢侈品牌在……村口造句用村口造句大全61)在金坑村,一个让人愕然的事实是,这里毗邻城市、325国道从村口通过,竟然无一家企业入驻。62)孩子的三伯母刘女士介绍说,事发的池塘面积约二三十亩,就在村口,婆婆家住……男人很累了女人别在做这些事儿你说话时,死盯着他的眼睛不知你有没有注意到这样一个现象:如果你直直地盯着一条狗的眼睛,它可能会以为你有敌意而避开你,甚至会扑上来咬你。男人的反应也大致如此。男人和女人在跟……三十岁女人淡雅气质网名一、招惹二、花了谁的妆三、我不会哭因为睫毛膏太贵了四、狐梦五、青春,要拼搏六、动心不动情七、生活一半明媚一半阳光八、想吃可爱熊的竹……卖阳伞有两个南方商人,他们各自带了一大批雨伞到北方去卖,因为南方的伞质量好而且便宜。可到了北方,他们渐渐发现,北方人很少用伞,因为那里的天气常年干旱少雨,两个商人都陷入困境。……春天我们去踏青春天,是个少女吧,那么轻柔地推开门窗。和煦的春风唤醒沉睡的大地。明媚的春日驱散着寒冷的迷雾,牵着你走出那久寒的冬雪,让你欣赏绿色的嫩芽在原野中欢腾。春天,我们去踏青……豇豆苗期病害豇豆俗称角豆、姜豆、带豆、挂豆角。分为长豇豆和饭豇两种,属豆科植物。据传原产于印度和中东,但很早就栽培于中国。习性喜高温,耐热性强,在中国各地均有栽培,那么豇豆苗期病害有哪些呢……为什么我反对绩效考核从事人力资源高管24年,做了超过20年的绩效考核,我为什么反对绩效考核?第一、我反对为了考核而考核。经常听到老板说,这样要考核、那样要列入考核。凡是公司看到有问题的……
唐太宗征高句丽赢了吗唐太宗征高句丽的结果是什么综合实践活动课程与学科课程的关系再探学生课桌里的书怎么放美观又方便农村地震逃离地方什么是木香树保护老人肠胃健康三类食物可常吃最旺夫的星座女十二星座谁最有旺夫命最好的还未来临无限风光在险峰一岁以上的宝宝如何添加辅食强行并线有哪些隐患徽州清明节习俗夏天香蕉能放冰箱里吗夏天香蕉能不能放冰箱里娇韵诗棉花籽洗面奶怎么样娇韵诗棉花籽洗面奶价格乡下的一天老年人睡觉前做什么有助睡眠英锦赛丁俊晖遭逆转,错失大师赛,签表出炉赵心童颜丙涛遇强敌一个令我心存感激的人初二作文750字老年人冬季如何进补企业营运能力分析存在的局限性及优化对策传立媒体副总裁加入亚马逊印度公司担任媒体主管国货面膜有哪个牌子值得推荐?羞耻造句用羞耻造句大全起诉后债务人还是无力偿还债务该怎么办?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找