提问:目前国内很多互联网门户都在做微博产品,你觉得微博技术架构的主要难点在哪些方面?
回答:从复杂度上面来说,微博产品的业务是相对比较简单的,我认为它在技术架构上有两大要素:消息传递与缓存。
微博产品从产品性质上来说几乎完全就是一个消息分发平台,因此一个良好的消息传递机制是至关重要的。当一个用户发出消息之后,它可以被许多人观察到。对于一个名人来说,被数十万用户所追随是一件非常普通的事情。那么此时,如果期望所有的追随者都即时地看到消息这几乎是件不可能的事情,因此在实现时我们往往需要构建一个消息队列,将消息快速地派送至队列中等待处理,最终将这条消息“陆续地”显示在每个追随者的时间轴上。这里势必会产生延迟,但对于业务质量来说并非不可接受。但显然这个延迟也不可以太长,在Twitter上这个平均延迟是500毫秒,从绝对数值上看并不算太短,但也已够用。 Twitter在这方面的处理方式是利用Scala的Actor模型及Apache Mina编写了一个分布式的消息传输框架Kestrel,它具有快速、轻量(包括注释才不到2000行代码)、持久、稳定等特性,但不具备事务性,也不保证消息的顺序处理。因此可以这么说,Kestrel是一个Twitter根据自身需求“定制”出的消息传输机制。
另外一个要点便是每个大型系统都不可或缺的缓存机制。有人说缓存就好比万能膏药,哪儿不舒服就再哪儿擦点便能见效。这话有一定道理。如 Twitter便设计了相对复杂的多级缓存机制,几乎对于每个IO密集的地方都进行了缓存。例如记录ID序列的向量缓存(Vector Cache),纪录每条消息等具体内容的行缓存(Row Cache)。此外,由于它的API访问量很大,仅仅是从消息内容转化成API的输出形式(可能只是一些字符串连接操作)也会消耗较多代价,因此 Twitter还为消息的API输出形式设计了片断缓存(Fragment Cache)。最后自然还有对某些热门页面的页面缓存(Page Cache)。除了页面缓存之外,其他缓存的命中率都在95%以上,可见缓存机制对于Twitter系统的重要程度。值得注意的是,向量缓存及行缓存都是 Write Through的,这意味着基本上所有的新数据都在缓存中存在一份拷贝。正如Twitter的Evan Weaver在QCon London 2009会议上讲的那样:Everything runs from memory in Web 2.0。
最后,对于微博类应用来说,可能会因为某个突发事件造成访问量暴增的现象,如何抵抗住消息轰炸也是一个重要的课题。例如Twitter使用了云计算的方式来应对此类问题,在需要的时候它便会租用更多的计算资源。不过增加服务器只是纯硬件的投入,而架构设计能否顺利且充分地利用起新增的设备也是一个值得关注的地方。从这个角度看,一个高效的分布式消息传递机制在这里会扮演重要的角色。如果有了合适的消息机制,首先能够将消息负载较为容易地平衡至多台服务器上,其次即使是在压力增大的情况下,响应时间虽然会按线性增长,但是系统的吞吐量还是可以保持在正常的水平。
分享到:
相关推荐
《微博架构与平台安全》 微博作为社交媒体的重要代表,其技术架构的发展历程充分体现了互联网技术在应对海量用户和数据挑战时的创新与演进。从最初的LAMP架构,到后来的分布式服务化,再到如今的高可用、低延迟、...
微博短视频推荐系统架构的技术难点在于: 1. 如何提高推荐的精准性和多样性。 2. 如何提高推荐的准确性和实时性。 3. 如何提高推荐的多样性和实时性。 4. 如何解决cold start问题。 微博短视频推荐系统架构的发展...
研究首先介绍了微博集群行为大数据挖掘的基本概念,包括其定义和分类,强调了微博数据的特征和舆情挖掘的难点。由于微博数据的海量和动态特性,传统的文本挖掘方法难以应对,因此研究者提出了基于舆情语义感知的数据...
同时,论文还讨论了在开发过程中遇到的技术难点,如性能优化、安全防护等问题,并给出了相应的解决方案。 总的来说,本论文通过实现在SSH框架下的模拟微博系统,展示了如何将现代Web技术有效地应用于社交网络开发,...
这部分内容通常包括系统架构、功能模块分析、技术难点解决和实验结果分析。论文应该详尽地解释了如何从需求分析到代码实现,再到测试和优化的整个过程。 移动开发App的过程中,性能优化是关键。这可能涉及到UI渲染...
接着,了解微博内容抓取的难点。微博的动态加载和反爬策略是两大挑战。动态加载意味着页面内容不是一次性加载完成,而是通过Ajax等技术在用户交互后逐步呈现。这需要我们使用如Selenium或Pyppeteer等工具模拟浏览器...
行为模式分析则可能关注发布频率、互动(如评论、转发、点赞)的活跃度以及关注者结构等。社交网络分析可能涉及与其他账号之间的互动关系网络,以及这些网络的特征。内容主题分类则是对账号发布的不同类型内容进行...
在本篇中,我们将深入探讨基于易语言编写的 Mutual 微博系统源码,了解其核心架构及功能实现。 Mutual 微博系统是一个典型的社交网络应用,它包含了处理用户消息、账号管理以及数据存储等多个关键模块。从系统结构...
#### 一、秒杀业务难点分析 秒杀系统面临着巨大的挑战,尤其是在处理高并发请求方面。与IM系统(如QQ、微博等)和个人社交平台不同,后者主要处理的是用户的个性化数据读取,而秒杀系统的核心在于处理集中的、大量...
中级口译考试的重点词组及句型部分,宋云老师提炼出了一系列考试常考的结构,如“not only...but also...”(不仅……而且……)、“in terms of”(就……而言)。熟记并灵活运用这些句型,可以使考生在口译时快速...
微课的概念源于微博的普及,它利用短视频形式,针对特定知识点或教学环节进行精讲,旨在提高教学效率,适应信息化时代学生的学习需求。 **微课的组成部分** 微课的核心是教学视频,通常时长控制在5-10分钟,以确保...
2.4 网站的分析:以微博移动版网站为例,展示了如何分析网站的结构和特性,以便于爬虫的有效抓取。 2.5 爬虫伪装:讲解了User-agent伪装技术,以避免被网站识别为爬虫并进行限制。 2.6 信息过滤规则-正则表达式:...
数据挖掘和在线服务是两种不同的数据处理方式,持久化的大数据和内存中的大数据是两种不同的数据存储方式,结构化大数据和半结构化大数据是两种不同的数据类型。 2. Redis简介: Redis是一种NoSQL数据库,支持多种...
对于多媒体信息,可以使用计算机视觉和音频处理技术,如图像识别、语音转文字等,将非结构化信息转化为可分析的结构化数据。 4. 异构信息融合:将不同类型的数据整合在一起,构建统一的信息视图。这可能涉及到多...
5. **数据存储与处理**:抓取到的微博数据通常需要进行清洗和结构化,以便于后续分析。Scrapy的Item Pipeline可以实现这一点,例如去除HTML标签、转换日期格式、去除重复项等。此外,数据可以存储在各种数据库(如...
- **微博助评**:利用社交媒体如微博进行同伴评价,提升学生的批判性思维和反馈能力。 - **总结知识**:课程结束时,回顾所学知识,巩固理解。 4. **教学方法与学法**: - **教学法**:采用情境创设法、直观演示...
这个文档很可能包含了对全书主要章节的精炼概括,按照教材的结构梳理了各个主题,包括网络的五层模型(物理层、数据链路层、网络层、传输层和应用层),每层的功能、协议以及典型设备。提纲可能还列出了重要的概念,...
文本挖掘(Text Mining)是数据挖掘的一个分支,挖掘对象通常是非结构化的文本数据,常见的文本挖掘对象包括网页所产生的BBS留言、博客、微博、新闻跟贴与转贴等。《R七种武器之文本挖掘》是“R七种武器”系列的又...
教学流程包括创设情境导入新课、媒体展示和语境分析、拓展延伸和模仿练习、书写博客以突破难点,以及通过微博评价来升华新知,最后进行知识总结和课程结束。 【媒体展示、语境分析】部分通过表格和具体活动展示了...