You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package broker
import ( "github.com/cespare/xxhash" "github.com/buraksezer/consistent" )
type Member string
func (m Member) String() string { return string(m) }
type hasher struct{}
func (h hasher) Sum64(data []byte) uint64 { return xxhash.Sum64(data) }
func PickMember(members []string, key []byte) string { cfg := consistent.Config{ PartitionCount: 9791, ReplicationFactor: 2, Load: 1.25, Hasher: hasher{}, }
cmembers := []consistent.Member{} for _, m := range members { cmembers = append(cmembers, Member(m)) }
c := consistent.New(cmembers, cfg)
m := c.LocateKey(key)
return m.String() }
|