第五课技术选型作业
发布于: 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 加入
还未添加个人简介











 
    
评论