aboutsummaryrefslogtreecommitdiff
path: root/core/hash.go
blob: af15546bec8152963503d8769368e565d05fe92c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package core

import "hash/fnv"

const DefaultMaxParallelism = 128

func AssignToKeyGroup(key string, maxParallelism int) int {

	if maxParallelism <= 0 {
		maxParallelism = DefaultMaxParallelism
	}

	// hash
	h := fnv.New32a()
	h.Write([]byte(key))
	hash := h.Sum32()

	return int(hash % uint32(maxParallelism))
}