最新关于msg的分配需要用到一致性hash,就了解了一下。
关于一致性hash的python实现,已经有现成的包了。见https://github.com/ultrabug/uhashring
本质上其实是将节点和需要分配的msg都做hash并取余,然后针对msg的hash结果,找到hash结果与他最相近的节点。
我的框架原来只是对msg进行hash,然后分配到对应的队列。
但是这样的问题是,当我需要修改我的队列数量时,我的msg全部都要重新分配,显然是有点问题的。
但是一致性hash因为对两者都进行了hash,当新增或者删除节点上时,只会影响到部分节点,所以比只取余显然效果是要好的。