Feed架构的思考-我们做错了什么
几天前,拿着本文最后的feed架构图问内部一些架构师,目前完成的工作及存在的主要问题是什么?
完成的工作不出意料,大家的观点比较类似,主要在架构的工程成熟度方面。
解决了数据规模大且长尾访问的问题。
解决了数据存储可扩展的问题。
解决了百万QPS访问的问题。
解决了可用性及错误隔离问题。
但是对于不足呢?如果架构重新再来,你会怎么做?这个问题回答比较多元,经过整理一些主要观点如下。
首先是从解决架构的问题说起,上述feed架构主要解决了在社交媒体环境中,实时及可扩展的解决基于关注关系的数据分发问题。
由于微博是一个实时的网络,人们常把Twitter/微博这种社交媒体产品比作是地球的脉搏,它确实无时不刻都在产生海量的数据,并且产生着不可预测的大量随机峰值访问,业界也是首次随着社交网络的出现遭遇这种架构上的scalability问题,记得在2009-2010年左右,Twitter由于压力过大经常出现鲸鱼页面错误。经过几年的努力,包括微博在内的业界主要公司都已经成功解决了关系模型的数据分发架构问题。
但在用户的层面,使用社交媒体产品依旧被信息过载的问题所困扰。
虽然每天收到大量信息,但是大部分不是自己感兴趣的信息。
基于用户关注维度的兴趣阅读效率不高,用户关注了一个兴趣领域的同行,但这个同行却大部分时候在谈风花雪月。
由于传播的低成本,大号在过度的使用消息通道,生产大量用户未必感兴趣的低质内容。
广告及普通内容的界限很模糊。
由于利益关系,僵尸帐号及内容通过变换形式在大行其道。
内容同质化及雷同问题,内容被精英占领,小人物声音不能得到有效传递。
在社交网络中,上述问题,不可能全部像Google的使命那样,通过技术手段得到解决。但是大部分又跟技术密切相关。
1、基于用户维度组织内容高效满足兴趣阅读的难度。在上图中,绿色的框中是数据流经的主要通道,但在传统的SNS架构中,这些数据的组织都是基于用户纬度。从用户纬度组织数据较好解决了传统feed模型基于关系聚合数据的问题。但正是由于数据是从关系维度来组织的结构,造成并不能给改进上述阅读效率问题带来便利。由于在一定程度信息过载,兴趣阅读是发展方向,但是在架构上目前并没有清晰的解法。
2、信息识别及低质内容鉴定的技术挑战。虽然业界已经在大数据、自然语言处理等方面积累了不少经验,但在具体场景中,信息识别仍然还在比较初级的阶段。低质内容不一定是垃圾广告,只是当前浏览者不感兴趣。
3、反垃圾算法的难度。
社交网络的信息架构和搜索引擎有很大的不同,在浏览feed是并不像使用搜索有明确的搜索意图,Facebook曾经尝试使用EdgeRank来解决newsfeed算法的效率问题,但是结果并不如预期理想。由于社交关系的存在,用户对出现(及不出现)什么内容的可解释性非常敏感,不能接受好友的信息在排序结果不能看到,除了技术,还有用户体验的问题需要考虑。
综上所述,feed架构虽然取得了架构工程实现scalable方面一些问题,但更大的问题依旧在思考及寻找解决的途中。
PS:本文上述内容会在12月19日ArchSummit北京大数据环境的feed架构演讲中介绍,欢迎参会的同行前来交流。
想更多了解本文提到的微博架构
回复“13”了解如何通过容错设计实现99.99%可用性;
回复“17”了解微博消息队列架构分析。
本文是TimYang原创的有关架构、技术、开发等方面系列文章,可长按下方复制微信号订阅
TimYang_net