golang 实现简单的一致性哈希
package main import ( "fmt" "sort" "hash/crc32" ) var serverMap map[uint32]string var sortedKeys []int func main() { serverMap = make(map[uint32]string) var servers []string servers = append(servers,"192.168.1.100") servers = append(servers,"192.168.1.101") servers = append(servers,"192.168.1.102") servers = append(servers,"192.168.1.103") servers = append(servers,"192.168.1.104") for s:=range servers{ serverMap[hashStr(servers[s])] = servers[s] } fmt.Println(serverMap) for k:=range serverMap{ sortedKeys = append(sortedKeys,int(k)) } sort.Ints(sortedKeys) fmt.Println(sortedKeys) obj1:="夜" obj2:="空" obj3:="中" obj4:="最" obj5:="亮" obj6:="的" obj7:="星" obj1_key := hashStr(obj1) obj2_key := hashStr(obj2) obj3_key := hashStr(obj3) obj4_key := hashStr(obj4) obj5_key := hashStr(obj5) obj6_key := hashStr(obj6) obj7_key := hashStr(obj7) fmt.Println("obj1 ",obj1," hash,",obj1_key," stored at server ",getserver(int(obj1_key))) fmt.Println("obj2 ",obj2," hash,",obj2_key," stored at server ",getserver(int(obj2_key))) fmt.Println("obj3 ",obj3," hash,",obj3_key," stored at server ",getserver(int(obj3_key))) fmt.Println("obj4 ",obj4," hash,",obj4_key," stored at server ",getserver(int(obj4_key))) fmt.Println("obj5 ",obj5," hash,",obj5_key," stored at server ",getserver(int(obj5_key))) fmt.Println("obj6 ",obj6," hash,",obj6_key," stored at server ",getserver(int(obj6_key))) fmt.Println("obj7 ",obj7," hash,",obj7_key," stored at server ",getserver(int(obj7_key))) } // MurMurHash算法 func hashStr(key string) uint32 { return crc32.ChecksumIEEE([]byte(key)) } func getserver(objkey int) string { for _,v:=range sortedKeys{ if objkey<v{ return serverMap[uint32(v)] } } return serverMap[uint32(sortedKeys[0])] }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?