新浪微博,腾讯微博另一种实现方式--pull
2013-06-20 17:19
281 查看
设计要点:
1)DB只作为持久化容器,一切操作在逻辑层完成
2)异步,前端的请求只要在中间server上完成就好,后续的持久化由LazyWriter完成(定时)
3)可以分布式实现,中间逻辑的read和write可是分号段,以适应批量操作,map/reduce
4)尽量做到全量cache,尤其是index
流程说明:
1)在A产生Feed的时候,更新index中A节点的最后更新时间,并标记Feed_id(对于微博来说没有必要做摘要);然后将content等详细记录写入元数据存储空间
2)B(A的粉丝)登录拉取最新Feed时,由于数量限制(首页有显示空间限制,一般都要做成page_index+page_count)只能拉取所有关注对象中最新的N条Feed,这时先通过批量查询对B的所有关注对象最新Feed做一个排序,因为完全在内存中实现,而且可以map/reduce,所以时间消耗很少,在生成了最新的Feed列表后,直接批量向元数据存储空间拉取完成信息
pull模式的实时性比push模式要好,但是也会遇到关注对象太多时拉取慢的情况,无论pull还是push,最后都可以通过cache index实现快速索引的生成,通过map/reduce实现批量请求的分割与快速处理。
作为互联网应用来说,保证最终一致性才是最重要的,另外一点,对逻辑数据分层次处理,做优先级划分
6月1日更新:
本文是pull模式,关于微博的push模式请参见 http://blog.csdn.net/cleanfield/archive/2011/04/21/6339428.aspx
相关文章推荐
- Android Intent分享到腾讯微博,信息,新浪微博等等,的实现方式
- Android分享到腾讯微博,信息,新浪微博等等,的实现方式
- Android 分享到腾讯微博,新浪微博,信息,等等的实现方式
- Android解析XML(PULL方式)和JSON 工作原理和实现过程(详细代码)
- TabLayout:另一种Tab的实现方式
- Android平台中实现对XML的三种解析方式(DOM 、PULL、 SAX)
- TabLayout:另一种Tab的实现方式
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现 的另一种方式
- [Android学UI之三]实现新浪微博消息页面左右滑动页面方式一(一)
- Decorator的另一种实现方式
- 计算器的另一种实现方式(转移表)含思想 C语言
- JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发
- js slideToggle 的另一种实现方式,根据不同的状态添加选中颜色
- [置顶]xml文件解析方式详解、 pull方式解析xml文件实现代码
- iOS手机号正则表达式并实现344格式 (正则的另一种实现方式)
- 用条件编译实现,输入一行字符,可以用两种方式输出,一种为原文输出;另一种将字母转变成后继字母,即按密码输出
- JS实现模拟新浪微博大厅和腾讯微博首页微博消息滚动效果
- 线程:创建线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。代码如下:
- 两个Activity之间共享数据、互相访问的另一种方式的实现
- 促进AlertDialog通用化的另一种实现方式