Cydu's Blog Keep it Simple & Stupid!

[WeiDesign]微博计数器的设计(上)

正式入职新浪微博一个月了,一切安好,各位勿念。 也多谢各位猎头抬爱,但是请不要再骚扰了,近期完全没有找工作的兴趣。

入职这一个月,虽然大多时间是在熟悉架构的一些细节,但是也深深地感受到了weibo平台巨大的流量和社会影响力(对于服务稳定性提出了近乎苛刻的要求)带给架构师们的巨大挑战和压力,当然这也是几乎每一位架构师都梦寐以求的机会!


闲话少说,上点干货.

Contents

背景

每一条微博的转发和评论背后都是一串串说不完的故事,但是今天主要讲的是 计数服务,计数服务详尽地记录着每条微博 被评论的次数 和 被转发的次数,当然也还有更多的喜怒哀乐都记录于此。

数据量

微博总数量

千亿级而且每秒都在飞速增长中。每条微博都有一个64位的唯一id。

访问量

每秒百万级 还在稳步增长中。根据微博的id来访问。

主要接口

  • 增加评论数 (默认为0)
  • 增加转发数 (默认为0)
  • 获取评论数
  • 获取转发数
  • 获取评论数 + 获取转发数 (这个接口访问量最大)
  • 评论数和转发数,你都可以认为是32位的整形数值。不会是负数,默认是0。

要求

由于用户对于数字非常的敏感(想想你好不容易拉到一位粉丝,但是粉丝数没涨的痛苦吧。),所以我们要求数据非常准确,延迟极低(1s以内),服务稳定性极高(千万别因为某大妈扫个地拨了插座就把数字弄没了...)

做为架构师,当然也需要全方位地考虑架构成本问题,然后去做各种的折衷。 这里主要考虑的成本是: 机器成本,开发成本,维护成本。

The End

有兴趣的架构师和准架构师们可以一起思考,怎样才能用最少的机器最短时间内开发出最易维护的计数器系统。。。当然,得满足我们数据量,性能和高可用的要求。

对这一块非常的感兴趣,而且有靠谱的想法和建议,烦请私信简历@cydu 或者 @微博平台架构,我们这里还有大量类似的问题期待着你来解决! 当然,也可以直接评论一起讨论。

PS:

后面我会给出我们的理解和解决的思路,期待大家一起来优化。