Балансиране на натоварването
Когато даден клъстер има повече от една здрава дестинация, YARP избира коя от тях ще обработи всяка заявка, използвайки конфигурируема политика за балансиране на натоварването.
Политики
YARP предлага няколко вградени политики за балансиране на натоварването:
- Кръгова обработка — обхожда списъка с дестинации последователно, като дава на всяка равен дял от трафика.
- Най-малко заявки — изпраща всяка заявка към дестинацията, която в момента има най-малко заявки в процес на обработка.
- Случаен избор — избира дестинация на случаен принцип.
- Избор измежду две дестинации — избира на случаен принцип две дестинации и предпочита тази с по-малко заявки в процес на обработка; добър избор по подразбиране при мащаб, тъй като избягва ефекта на струпване, който самият случаен избор може да причини.
- Първа — винаги първата налична дестинация; полезна главно за тестване и A/B сценарии.
Задаване на политика за клъстер
Полето LoadBalancingPolicy на клъстер.
JSON{
"Clusters": {
"cluster1": {
"LoadBalancingPolicy": "PowerOfTwoChoices",
"Destinations": {
"cluster1/destination1": { "Address": "https://localhost:10000/" },
"cluster1/destination2": { "Address": "https://localhost:10010/" }
}
}
}
}Конфигурация
По подразбиране, когато не е зададена политика, се използва Избор измежду две дестинации. Разглеждат се само дестинации, за които е известно, че са здрави - вижте Проверки на състоянието на дестинациите за начина, по който дестинация се маркира като нездрава и се изключва от ротацията.
Балансирането на натоварването разпределя заявките между дестинациите; то не закача даден клиент към една и съща дестинация между отделните заявки. Ако имате нужда точно от това, вижте Афинитет на сесията.
Персонализирани политики
Имплементирайте ILoadBalancingPolicy и го регистрирайте в DI контейнера, за да включите собствена логика за избор - същата точка за разширяване, върху която са изградени и вградените политики на самия YARP.