Алгоритм для разделения трафика по переменному количеству серверов - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть AAA службы .NET Core, которая извлекает часть данных из другой BBB службы Core. BBB имеет кэш в памяти (ConcurrentDictionary) и развернут в 10 блоков. Общий размер кэшируемых данных составляет около 100 ГБ.

У AAA будет список серверов, на которых работает BBB, и я думал о том, чтобы сделать что-то вроде ServerId = DataItemId % 10, чтобы каждый из блоков мог обслуживать и кэшировать 10% всего набора данных. Я не могу понять, что делать, когда один из ящиков BBB выходит из строя (например, из-за Центра обновления Windows).

Существует ли какой-либо алгоритм для разделения трафика, который позволит серверам отключаться и подниматься, но все же перенаправлять большинство запросов на сервер, который получил значительную часть данных, обналиченных? *

1 Ответ

0 голосов
/ 18 сентября 2018

Azure Load Balancer не взаимодействует с полезной нагрузкой приложения. Он принимает решения на основе хеш-функции, которая включает в себя 5 кортежей транспортного IP-пакета TCP / UDP. Здесь есть разница между Basic и Standard LB в том, что Standard LB использует улучшенную функцию хеширования. Нет строгой гарантии на долю запросов, но количество потоков, поступающих с течением времени, должно быть относительно равномерным. Проверка работоспособности может использоваться для определения того, является ли серверный экземпляр здоровым или больным Это контролирует, поступают ли новые потоки на экземпляр сервера. https://aka.ms/lbprobes имеет подробную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...