У меня есть AAA службы .NET Core, которая извлекает часть данных из другой BBB службы Core. BBB имеет кэш в памяти (ConcurrentDictionary) и развернут в 10 блоков. Общий размер кэшируемых данных составляет около 100 ГБ.
У AAA будет список серверов, на которых работает BBB, и я думал о том, чтобы сделать что-то вроде ServerId = DataItemId % 10
, чтобы каждый из блоков мог обслуживать и кэшировать 10% всего набора данных. Я не могу понять, что делать, когда один из ящиков BBB выходит из строя (например, из-за Центра обновления Windows).
Существует ли какой-либо алгоритм для разделения трафика, который позволит серверам отключаться и подниматься, но все же перенаправлять большинство запросов на сервер, который получил значительную часть данных, обналиченных? *