我已经考虑过制作一个有点轻量级的类似一致性哈希的 PHP 函数来在不同服务器之间对上传的文件进行分片。
显然, rand() 可以在服务器之间稍微均匀地分配文件,但是在请求文件时,没有人会知道哪个文件位于哪个服务器上......
我知道有一些广泛的库可以创建一致的哈希,但我想知道这些是如何工作的,以及如何推出我自己的、非常轻量级的库?
注意:我没有考虑到服务器将被删除,而是更多的服务器被添加到池中。
更新:
这是伪代码的快速行:
$config['shards'] = array('192.168.1.1, 192.168.1.2');
function shard ($filename) {
$servers = $config['shards'];
// do lookup in some magic way to decide which server to return.
return $appropriateserver;
}
echo shard('filename.jpg'); // returns the appropriate server to distribute the file.