1.使用beansdb的话,先需要估测上限的容量,比如256个bucket,再开始根据256,以及每bucket的备份数N=3,以及现有比
如20个节点,来决定每个节点存256个bucket中的哪几个,最终形成一张bucket和节点之间的映射关系。以上描述的对吗?是不是在生产运行过
程中,不可能新产生一个bucket,都是预先规划好的?那上限空间不够用了怎么办呢?
2.proxy中可能会根据具体业务的逻辑id,把具体业务的key,通过sharding映射到具体的bucket上?然后再根据bucket和
节点的映射表,找到对应的3台节点(假设N=3),再根据负载的情况,选择1台(假设W=1)写入该节点,写入的过程是这样吗?但是另外2台就得靠定时
的同步操作来保持一致了吗?还是一般都设置W=N=3?使得每次写入的过程中,就把几个节点都写入了。
3.关于每个节点上的hashtree,假设整个beansdb节点群中一共256个bucket,但a节点上只有4个bucket,是不是a节点
的hashtree只有这4个bucket的详细的bitcask信息,其他252个位置是空的。因此单节点的内存容量限制了该节点能存多少条记录,并
不限制整体节点群中的存储量,是吗?
4.另外在定时的sync的时候,是不是也只是2个节点间,如果有重叠的bucket,才会同步?
非常感谢!
hi,Davie,想请教4个问题,问题有点多,不好意思啊:
1.使用beansdb的话,先需要估测上限的容量,比如256个bucket,再开始根据256,以及每bucket的备份数N=3,以及现有比
如20个节点,来决定每个节点存256个bucket中的哪几个,最终形成一张bucket和节点之间的映射关系。以上描述的对吗?是不是在生产运行过
程中,不可能新产生一个bucket,都是预先规划好的?那上限空间不够用了怎么办呢?
2.proxy中可能会根据具体业务的逻辑id,把具体业务的key,通过sharding映射到具体的bucket上?然后再根据bucket和
节点的映射表,找到对应的3台节点(假设N=3),再根据负载的情况,选择1台(假设W=1)写入该节点,写入的过程是这样吗?但是另外2台就得靠定时
的同步操作来保持一致了吗?还是一般都设置W=N=3?使得每次写入的过程中,就把几个节点都写入了。
3.关于每个节点上的hashtree,假设整个beansdb节点群中一共256个bucket,但a节点上只有4个bucket,是不是a节点
的hashtree只有这4个bucket的详细的bitcask信息,其他252个位置是空的。因此单节点的内存容量限制了该节点能存多少条记录,并
不限制整体节点群中的存储量,是吗?
4.另外在定时的sync的时候,是不是也只是2个节点间,如果有重叠的bucket,才会同步?
非常感谢!