2015-12-03 38 views
0

我有一个非常大的产品数据库,并且可用空间非常小以节省所有映像。 我现在想要添加更多的服务器,并且必须在多个服务器上分发图像。但我需要一种一致的方式来在所有服务器之间分割产品图像。该ID是auto_increment,所以我不能使用它,因为有时产品会被删除,它们的图像也会被删除。所以在这种情况下,如果我只是说:服务器A上的ID为1-10M,服务器B上的ID为10M> ID < 20M等等。当ID为1到10M的所有产品都被删除时,我将最终得到一个空的服务器A.在多个服务器上分割映像/分布式配置

以及如何在网站上使用图像时处理此问题。 所有图像应该在一个域名下可用,例如。 staticexample.com使用nginx将基于uri的请求映射到正确的上游。

我需要有人指出我正确的方式。

Ps。我不想只为我的服务器增加更多空间,因为它只是一个临时解决方案。我需要一个水平尺度。

我感谢所有帮助

感谢

回答

0
  • 不是基于范围碎片,但在余数,例如 server_id = image_id % total_server_num。基于这种模式,图像不太可能被删除。
  • 您可以使用子域或子文件夹(static.site.com/1/,static.site.com/2/)并映射不同的后端。
+0

谢谢。但由于我想在未来增加更多的服务器/后端,total_server_num和remainer也会改变。每次添加新服务器时,我都必须重新分配映像。如果可能,我想避免这种情况。 事实上,我将使用子域/子文件夹和nginx上的映射。 – matrixx

+0

@matrixx如果你想避免重新分配,看看虚拟分片 – dbf