github.com/awesome-flow/flow@v0.0.3-0.20190918184116-508d75d68a2c/pkg/util/hash/jump_hash.go (about) 1 package hash 2 3 // <3 Damian 4 // https://medium.com/@dgryski/consistent-hashing-algorithmic-tradeoffs-ef6b8e2fcae8 5 6 func JumpHash(key uint64, numBuckets int) int32 { 7 var b int64 = -1 8 var j int64 9 10 for j < int64(numBuckets) { 11 b = j 12 key = key*2862933555777941757 + 1 13 j = int64(float64(b+1) * (float64(int64(1)<<31) / float64((key>>33)+1))) 14 } 15 16 return int32(b) 17 }