예제 #1
0
        private string GetTargetServerNode(string key)
        {
            var hashValue  = ConsistentHashingUtil.ComputeHash(key);
            var serverNode = ConsistentHashingUtil.ConsistentHashingRingBinarySearch(_hashRing.Keys.ToArray(), hashValue);

            return(_hashRing[serverNode]);
        }
예제 #2
0
        public void AddServer(string server)
        {
            var virtualNodesHash = ConsistentHashingUtil.ComputeVirtualNodesHash(server, _virtualNodesCount);

            foreach (var virtualHash in virtualNodesHash)
            {
                if (_hashRing.ContainsKey(virtualHash))
                {
                    Console.WriteLine($"Oooops, already has a key {virtualHash}");
                }
                _hashRing.Add(virtualHash, server);
            }
        }