static void Main(string[] args)
        {
            var generator          = new BoxItemsGenerator();
            var randomBoxItemsData = generator.GenerateRandomData(1000000, 1234).ToArray();
            var nodes = new List <Node>()
            {
                new Node("Machine A", 4),
                new Node("Machine B", 20),
                new Node("Machine C", 28)
            };

            var shardingDataProvider = new ShardingDataProvider(nodes);
            var shardingService      = new ShardingService(shardingDataProvider);

            var shardsData = randomBoxItemsData
                             .GroupBy(d => shardingService.GetShardingNode(d))
                             .ToArray();

            foreach (var shard in shardsData)
            {
                Console.WriteLine($"Shard {shard.Key.Name} contain {shard.Count()} elements");
            }
        }
 public ShardingService(ShardingDataProvider shardingDataProvider)
 => _shardingDataProvider = shardingDataProvider;