【发布时间】:2012-07-12 09:52:49
【问题描述】:
问题是通过您将在您的网络应用程序中执行的各种操作的整个设计方法,以便如果您在 twitter 上关注数百万人,并且当您检查最新的 20 条推文时,您可以在最短的时间内找到它并投入资源负载最小。这是一个关于整个堆栈的开放式设计问题。
我的答案不完整(因为我无法完全回答这个问题)
既然我们谈论的是数百万用户,那么我们必须根据用户的地理位置对数据库进行分片,这个答案不被接受,因为在 twitter 中你真的不关注同一位置的人。 有什么更好的方法可以实现这一目标?
由于大多数情况下 20 条最新推文是最重要的,因此每个用户维护一个缓存(链表),其中包含根据它们到达时间的最新推文。 这也不被接受。
总的来说,我在这类设计问题上比较薄弱,想知道你会如何解决它们?
【问题讨论】:
-
只是让你知道。我认为缓存是实现这一目标的最佳方式之一。由于您已经关注了数百万人,因此为单个用户缓存而保存的额外数据是微不足道的。而且缓存速度更快,因为当有人发推文时,一条推文必须在每个人的缓存中仅容纳一次,而不是每次您请求最新的 20 条推文时。
标签: algorithm scalability bigdata