Feed架构-我们做错了什么

标签: 架构 | 发表时间:2014-12-13 23:01 | 作者:Tim
出处:http://timyang.net

在过去几年,所在的微博技术团队在一定程度成功解决了feed架构的扩展性与性能的问题,大部分精力已经从应对峰值性能或者数据扩展中解放出来。

feed arch

几天前,拿着上面这张架构图问内部一些架构师,目前完成的工作及存在的主要问题是什么?

完成的工作不出意料,大家的观点比较类似,主要在架构的工程成熟度方面。

  • 解决了数据规模大且长尾访问的问题,通过按时间线的冷热分区设计,在MySQL等数据库上成功实现了低成本的长尾分区实现。由于社交产品中大部分访问(90%以上)发生在最近的数据,而较旧的数据(长尾数据)相对访问偏少,因此在存储上利用时间维度进行不同存储区域区分,来达到性能及成本的收益。
  • 解决了数据存储可扩展的问题,可以满足3年左右数据扩展的需要。这个主要利用成熟的数据库拆分方案,简单的实现通常设计成倍扩容,在最初建表时候预留足够多的分表,当容量增长时将这些表迁移到更多服务器上去。
  • 解决了百万QPS访问的问题,主要依赖缓存分区及复制机制的成功应用,通过缓存复制及分级,可以让每秒上十万次访问的数据获得非常好的访问性能,同时数据复制机制可以提高可用性,防止单点机器故障时给数据库带来范围压力。
  • 解决了可用性及错误隔离问题,得益于历年来建设的SLA体系,服务之间有良好的服务契约及错误隔离手段,因此核心功能 有99.99%+的可用性。

但是对于不足呢?如果架构重新再来,你会怎么做?这个问题回答比较多元,经过整理一些主要观点如下。

首先是从解决架构的问题说起,上述feed架构主要解决了在社交媒体环境中,实时及可扩展的解决基于关注关系的数据分发问题。

由于微博是一个实时的网络,人们常把Twitter/微博这种社交媒体产品比作是地球的脉搏,它确实无时不刻都在产生海量的数据,并且产生着不可预测的大量随机峰值访问,业界也是首次随着社交网络的出现遭遇这种架构上的scalability问题,记得在2009-2010年左右,Twitter由于压力过大经常出现鲸鱼页面错误。经过几年的努力,包括微博在内的业界主要公司都已经成功解决了关系模型的数据分发架构问题。

但在用户的层面,使用社交媒体产品依旧被信息过载的问题所困扰。

  • 虽然每天收到大量信息,但是大部分不是自己感兴趣的信息。
  • 基于用户关注维度的兴趣阅读效率不高,用户关注了一个兴趣领域的同行,但这个同行却大部分时候在谈风花雪月。
  • 由于传播的低成本,大号在过度的使用消息通道,生产大量用户未必感兴趣的低质内容。
  • 广告及普通内容的界限很模糊。
  • 由于利益关系,僵尸帐号及内容通过变换形式在大行其道。
  • 内容同质化及雷同问题,内容被精英占领,小人物声音不能得到有效传递。

在社交网络中,上述问题,不可能全部像Google的使命那样,通过技术手段得到解决。但是大部分又跟技术密切相关。

  • 基于用户维度组织内容高效满足兴趣阅读的难度。在上图中,绿色的框中是数据流经的主要通道,但在传统的SNS架构中,这些数据的组织都是基于用户纬度。从用户纬度组织数据较好解决了传统feed模型基于关系聚合数据的问题。但正是由于数据是从关系维度来组织的结构,造成并不能给改进上述阅读效率问题带来便利。由于在一定程度信息过载,兴趣阅读是发展方向,但是在架构上目前并没有清晰的解法。
  • 信息识别及低质内容鉴定的技术挑战。虽然业界已经在大数据、自然语言处理等方面积累了不少经验,但在具体场景中,信息识别仍然还在比较初级的阶段。低质内容不一定是垃圾广告,只是当前浏览者不感兴趣。
  • 反垃圾算法。

社交网络的信息架构和搜索引擎有很大的不同,在浏览feed是并不像使用搜索有明确的搜索意图,Facebook曾经尝试使用 EdgeRank来解决newsfeed算法的效率问题,但是结果并不如预期理想。由于社交关系的存在,用户对出现(及不出现)什么内容的可解释性非常敏感,不能接受好友的信息在排序结果不能看到。因此仅能说feed架构只是解决了初步的问题,更大的问题依旧在思考及寻找解决的途中。

PS:本文上述内容会在12月19日ArchSummit北京 大数据环境的feed架构 演讲中介绍,欢迎参会的同行前来交流。

如想及时阅读Tim Yang的文章,可通过页面右上方扫码订阅最新更新。

Similar Posts:

相关 [feed 架构] 推荐:

Feed消息队列架构分析

- - Tim[后端技术]
最近一两年,大部分系统的数据流由基于日志的离线处理方式转变成实时的流式处理方式,并逐渐形成几种通用的使用方式,以下介绍微博的消息队列体系. 当前的主要消息队列分成如图3部分. 1、feed信息流主流程处理,图中中间的流程,通过相关MQ worker将数据写入cache、Redis及MySQL,以便用户浏览信息流.

Feed架构-我们做错了什么

- - Tim[后端技术]
在过去几年,所在的微博技术团队在一定程度成功解决了feed架构的扩展性与性能的问题,大部分精力已经从应对峰值性能或者数据扩展中解放出来. 几天前,拿着上面这张架构图问内部一些架构师,目前完成的工作及存在的主要问题是什么. 完成的工作不出意料,大家的观点比较类似,主要在架构的工程成熟度方面. 解决了数据规模大且长尾访问的问题,通过按时间线的冷热分区设计,在MySQL等数据库上成功实现了低成本的长尾分区实现.

Pinterest的Feed架构与算法

- - 后端技术 by Tim Yang
Pinterest首页的Feed消息流,最早是按照用户的关注对象的Pin(类似微博)聚合后按时间进行排序(自然序,类似朋友圈),后来版本的feed系统放弃了自然序,而是根据一定规则及算法来设计,内部称之为Smart feed,其算法及架构根据其公开资料整理如下,值得业界做信息流产品的技术架构师参考.

微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨

- 荷泽 - 博客园-草屋主人的blog
微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨.      [文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-08-24].      sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed架构,也就是推拉模式(timyang上次也分享了新浪微薄的模式).

Feed 流系统杂谈

- - 掘金 架构
这是我参与「掘金日新计划 · 6 月更文挑战」的第2天, 点击查看活动详情. Feed 流是社交和资讯类应用中常见的一种形态, 比如微博知乎的关注页、微信的订阅号和朋友圈等. Feed 流源于 RSS 订阅, 用户将自己感兴趣的网站的 RSS 地址登记到 RSS 阅读器中, 在阅读器里聚合成的列表就是 Feed 流.

Feed 流系统设计总纲

- - 行业应用 - ITeye博客
差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等. 这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长. 这些产品都是 Feed 流类型产品,由于 Feed 流一般是按照时间“从上往下流动”,非常适合在移动设备端浏览,最终这一类应用就脱颖而出,迅速抢占了上一代产品的市场空间.

RSS Feed Search Engine -RSS 專用搜尋引擎

- votis - 免費資源網路社群
RSS Search Engine 是由知名部落格 Digital Inspiration 所建置的服務,主要功能是用來協助使用者發掘網路上的熱門 RSS Feeds,如同搜尋引擎,可以填入自己有興趣的主題,它就會找出相關熱門網站,比較不同的是會一併顯示 RSS 資訊,能更方便訂閱網站. 網站名稱:RSS Search Engine.

NLP 技术在微博 feed 流中的应用

- - IT瘾-tuicool
分享嘉宾:董兴华 新浪微博. 内容来源:DataFunTalk. 导读:新浪微博截止2019.9统计的数据,月活跃用户数为4.97亿,日活跃用户数为2.16亿,其中约94%为移动端用户,今天会和大家分享新浪微博在 feed 流中遇到的 NLP 问题和解决思路. ——难点与现存问题——. ❶  博文内容大多比较短.

提供社群網站 RSS feed 的服務

- - Gea-Suan Lin's BLOG
在 Hacker News Daily 上看到的服務:「 RSS Box」,主要是有 open source,所以可以自己架起來跑 (只是得自己生 API key):「 RSS Box」. 測了一下目前的站台, Twitter 與 Instagram 的部份都已經撞到 rate limit,而 YouTube 的部份正常.

随时掌握订阅的 YouTube 视频更新的 Chrome 扩展 YouTube Feed

- ROY - 谷奥——探寻谷歌的奥秘
经常泡YouTube的你在发现一些有趣的哥们或官方频道的时候,可以通过订阅来在他们上传新视频的时候获得提醒,不过前提是你必须访问YouTube. 尽管你也可以通过邮件订阅,但时效性还是差了点. 这个YouTube Feed扩展即可解决这个问题. 只要点击扩展按钮即可看到订阅频道里上传的最新视频. 你可以自己设置最多显示多少最新视频,以及更新的频率.