实践:几十亿条数据分布在几十个节点上的毫秒级实时排序方法
引子
先简单的问一下, 你如何解决这样的需求:
对一堆数据按某字段排序,获取第100-10条的数据。
假设你面对的数据是个单节点,简单来说,就是一个mysql数据库, 很自然地用
select a from tb order by a limit 100, 10;
你面对的是10个甚至100个节点呢
按照常理,我们会先把所有节点的前110条数据拉到一个公用节点上,再排序,前文已述。
咱们把数字改一下,要获取第[100万, 100万+10]中间的数据10条数据,这个方法就不能用了。
问题变成:
对分布在几十个节点上的上亿条数据要求1秒内排序。
在上一篇文章的理论 中,我提到让各数据节点活动起来,不再只承担存储的功能,还要相互发现,相互问答,即“你那有这个数据吗”,“你那这个数据排多少名”。

