哥也被问到这道题了,略有不同,给出了incoming query的distribution的曲线,qps
是几千这样子。这个system有三个api:
1)getTopTenMillionInPastHour()
2) isInTopTenMilionInPastHour()
3) notifyWhenJoinOrRemovedFromTopTenMillionInPastHour()
自己来architect系统,定义service能提供数据的精度。
我当时给的是个多台机器的架构。我觉得是旧data每秒钟都在产生(任何当前时间进行
的api call,准确来说,1小时零1秒前的数据都是旧的,对算top10millioninPastHour
没有意义),但几乎没有任何系统在一秒钟内可以purge掉这么多的旧数据,所以就要
定义一个精度。比如,semantics是“我能保证给结果是精确的,但是有个最多20分钟
的delay”,或者“我不能保证结果是100%精确的,但是我能最新的query能够实时的反
应在结果中,并且返回的结果和真值有90%的重合”。
其实就是说consistency,availability,partition/sharding, 只能选两样。