Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从你在twitter上关注的数百万人那里找到20条最新推文_Algorithm_Scalability_Bigdata - Fatal编程技术网

Algorithm 从你在twitter上关注的数百万人那里找到20条最新推文

Algorithm 从你在twitter上关注的数百万人那里找到20条最新推文,algorithm,scalability,bigdata,Algorithm,Scalability,Bigdata,问题是,仔细研究一下你在web应用程序中要做的各种事情的整个设计方法,这样,如果你在twitter上关注数百万人,当你查看最近20条推文时,你会发现它在最短的时间内完成,对资源的负载也最小。这是一个关于整个堆栈的开放式设计问题 我的回答不完整(因为我无法完全回答) 因为我们谈论的是数以百万计的用户,所以我们必须对数据库进行切分,根据用户的地理位置,这个答案是不被接受的,因为在twitter上,你真的不会跟踪同一位置的人。 有什么更好的方法可以实现这一点 由于20条最新推文最为重要,因此对每个用户

问题是,仔细研究一下你在web应用程序中要做的各种事情的整个设计方法,这样,如果你在twitter上关注数百万人,当你查看最近20条推文时,你会发现它在最短的时间内完成,对资源的负载也最小。这是一个关于整个堆栈的开放式设计问题

我的回答不完整(因为我无法完全回答)

  • 因为我们谈论的是数以百万计的用户,所以我们必须对数据库进行切分,根据用户的地理位置,这个答案是不被接受的,因为在twitter上,你真的不会跟踪同一位置的人。 有什么更好的方法可以实现这一点

  • 由于20条最新推文最为重要,因此对每个用户来说,都要维护一个缓存(linkedlist),该缓存根据用户到达的时间提供最新推文。 这也没有被接受


  • 总的来说,我在这类设计问题上很弱,我想知道你将如何着手解决它们?

    Twitter已经发展了好几年,我相信它是设计最复杂的数据系统之一。在这样一个复杂的系统中,可能已经为不同类型的用户进行了许多优化(取决于他们的tweet频率、追随者数量和追随者)

    关注数百万人的用户无疑是一种非常特殊的类型,可能不会太多。我认为,对于这些用户来说,一个明智的设计是每次你的追随者发布推特时更新缓存中的时间线数据,并将非常旧的数据存档。因此,它会在您每次请求时间轴时立即返回缓存


    以上只是让系统为您工作的最简单、最直接的方法。实际上,在设计中还需要考虑更多的因素,比如有多少用户跟随数百万人,这些用户更新的频率等等。

    Twitter已经发展了好几年,我相信它是设计最复杂的数据系统之一。在这样一个复杂的系统中,可能已经为不同类型的用户进行了许多优化(取决于他们的tweet频率、追随者数量和追随者)

    关注数百万人的用户无疑是一种非常特殊的类型,可能不会太多。我认为,对于这些用户来说,一个明智的设计是每次你的追随者发布推特时更新缓存中的时间线数据,并将非常旧的数据存档。因此,它会在您每次请求时间轴时立即返回缓存


    以上只是让系统为您工作的最简单、最直接的方法。实际上,在设计中必须考虑更多的措施,例如有多少用户跟随数百万人,这些用户刷新的频率等等。

    正如您所知。我认为缓存是实现这一目标的最佳方式之一。由于您已经在跟踪数百万人,因此为单个用户缓存而保存的额外数据是微不足道的。缓存速度要快得多,因为当有人发tweet时,tweet必须在每个人的缓存中只存储一次,而不是每次你请求最近20条tweet。我认为缓存是实现这一目标的最佳方式之一。由于您已经在跟踪数百万人,因此为单个用户缓存而保存的额外数据是微不足道的。缓存速度要快得多,因为当有人发tweet时,每个人的缓存中只能容纳一条tweet,而不是每次你请求最近20条tweet时。