1. 业务
- 核心模型:用户、关系、Feed
- 把微博比作邮件:Inbox、Outbox
- 主要业务功能:发布、查看
2. 技术架构
- 微薄本质:消息分发系统
- 信息聚合设计模式:PULL、PUSH
- PUSH:简单,是实现的首选;分发量大;冗余存储大
- PULL:节约存储;计算量大
3. 架构挑战
1)除夕、春节时的系统峰值处理
解决方案:异步设计
-不同步等待
-将消息存入MQ:大量使用Memcacheq,提到使用MQ的原则“计算开销大于消息分发开销”(不太理解)
-轻量级的发表
2)实时性
解决方案:Cache中心化,Ram is the new the disk
-多层次的Cache:Local Cache;Memcached;Database buffer/cache
-容量问题(TB级):压缩(QuickLZ、LZO、不使用gzip)
-单点问题:Consistent hash;Read-through cache
-避免evictions:容量规划;区分永久数据、临时数据;不使用随机字符做为KEY
-multiget hole问题:Memcached replication
如何实现Read-through and write-througe cache:
-产品或者项目:MySQL memcached UDF;Cache money for Ruby on Rails
-wrap a proxy for the db driver
3)海量存储
4)国内网络带宽
-存在问题:访问速度、IDC不可用、故障
-分布的核心是数据分布(http://timyang.net/data/multi-idc-design/)
5)API访问量
-使用REST API
-使用SAE解决轮询压力