第五课技术选型作业
发布于: 2020 年 12 月 24 日
一致性Hash算法主要应用于分布式场景,通过引入Hash环及虚拟hash节点使hash分布更均匀,在节点变化(扩充或损坏)的情况下相比于普通hash算法在分布式情况下有较好的可扩展性和稳定性。以下为一致性hash算法使用python的简单实现。
import hashlibclass HashConsistency : def _init__(self,noteList, noteCount ): self._hashCircle = dict() self._virtualNodeCount = noteCount self._virtualNoteList = noteList if noteList: for note in notelist: self.add_node(note) def add_node(self,node): for i in range(self._virtualNodeCount): node_str = "%s %s" %(node,i) key = self._gen_key(node_str) self._hashCircle[key] = node self._virtualNoteList.append(key) self._virtualNoteList.sort() def get_node(self,key_str): if self._virtualNoteList: key = self._gen_key(key_str) for node_key in self._virtualNoteList: if key <= node_key: return self._hashCircle[node_key] return self._hashCircle[self._virtualNoteList[0]] else: return None def remove_node(self,node): for i in range(self._virtualNodeCount): node_str = "%s %s" % (node, i) key = self._gen_key(node_str) if key in self._hashCircle.keys(): del self._hashCircle[key] self._virtualNoteList.remove(key) return @staticmethod def _gen_key(key_str): md5_str = hashlib.md5(key_str) return long(md5_str,16)
划线
评论
复制
发布于: 2020 年 12 月 24 日阅读数: 10
Geek_michael
关注
还未添加个人签名 2020.01.16 加入
还未添加个人简介
评论