我想了解Pinterest如何根据this video进行分片,但似乎无法完全理解。我很感兴趣,因为我想在我的应用程序中应用相同的策略,并在Amazon RDS之上构建自己的分片。
根据我的理解:
如果我假设以下映射表:
虚拟分片1 - > 127.0.0.1
虚拟碎片2 - > 127.0.0.1
...
看看他们如何构建他们的唯一ID(Shard ID + Type + Local Auto Increment),如果我决定添加另一台服务器12.0.0.2,因为127.0.0.1的数据容量变得非常大而且我想添加更多机器增加容量?
如何将分片精确映射到新服务器?我知道数据不会根据讲座移动,所以他们怎么能没有热点。我真的无法理解它是如何完成的,有人可以给我一步一步的解释吗?感谢
答案 0 :(得分:1)
Tumblr有一个名为Jetpants的开源库,可以处理它们的分片需求。您可以看看他们如何处理所有这些事情。据我所知,Pinterest尚未发布他们的特定实现。
正如我在评论中所指出的那样,在大多数情况下,“我应该如何分组”的答案是“不要碎片,几乎所有网站都有更好的选择”。
答案 1 :(得分:1)
pinterest engineering blog descirbe it
“添加更多容量
在我们的系统中,有三种主要方法可以添加更多容量。最简单的是升级机器(更多的空间,更快的硬盘,更多的RAM,无论你的瓶颈是什么)。
增加更多容量的下一个方法是开辟新的范围。最初,我们只创建了4,096个分片,即使我们的分片ID是16位(64k总分片)。只能在这些前4k分片中创建新对象。在某些时候,我们决定使用碎片4,096到8,191创建新的MySQL服务器并开始填充它们。
我们增加容量的最终方式是将一些分片移动到新机器上。如果我们想为MySQL001A添加更多容量(其分片为0到511),我们创建一个新的主 - 主对与下一个最大的名称(比如MySQL009A和B),并从MySQL001A开始复制。 “