假设我有一个数据集,刚开始这个数据集可能很小,但是最终会变得很大,例如{e1, e2, e3, ..., e1,000,000}。这个数据集中的元素可以被删除,新的元素也可以被加入到集合。
请问如何平摊数据集到多个服务实例呢?如何应对“元素被删除”和“添加新元素”等情况?
当然,服务实例的数量也是可变的,它会因为数据集的变化而变化。服务实例的数量变化时,应该怎么重新分布呢?
假设我有一个数据集,刚开始这个数据集可能很小,但是最终会变得很大,例如{e1, e2, e3, ..., e1,000,000}。这个数据集中的元素可以被删除,新的元素也可以被加入到集合。
请问如何平摊数据集到多个服务实例呢?如何应对“元素被删除”和“添加新元素”等情况?
当然,服务实例的数量也是可变的,它会因为数据集的变化而变化。服务实例的数量变化时,应该怎么重新分布呢?
|
zoooDec 1, 2020
1
hadoop?
|
|
F281M6Dh8DXpD1g2Dec 1, 2020
2
看你是要 share disk 还是 share nothing 了
|
|
DoctorCatDec 2, 2020
3
集群分区做 sharding,需要一个协调者来进行健康检查和读写请求路由;
重新分布涉及到数据迁移了,最好还是做冗余,例如 HDFS 那样。坏了的节点摘掉替换就好,然后再复制一份数据给新节点。 |
|
9LCRwvU14033RHJoDec 2, 2020
4
这题是要考察一致性哈希吧?
|
|
DoctorCatDec 2, 2020
5
对于重新分布,可以参考一致性 hash 和 Range based 策略
|
|
xcstreamDec 2, 2020
6
这是个考试题 还是个实际项目
|
|
yzbytheseaDec 2, 2020
7
Sharding & Circular Hashing
|
|
xuanbgDec 2, 2020
8
每个服务服务于固定大小的数据集就行了,譬如设定每个服务 10 万数据,那么数据量增加到 9 万的时候就启动第二台服务器,从第 100001 个数据开始就是第二台服务器的事情了。以此类推
|
|
xuanbgDec 2, 2020
9
至于删除后的空余位置,不多的话就空着好了。太多的话,可以参考磁盘文件系统的做法,给数据建立索引,然后就可以用空位填充新数据了。
|
|
10
|
|
jones2000Dec 2, 2020
12
数据建索引, 索引数据单独存, 其他数据可以分开存到不同的服务器上,查询先查索引数据, 通过索引读取对应服务器上的数据。
|