Преглед садржаја[Сакрити][Прикажи]
Доступност апликација никада није схваћена тако озбиљно као данас када користимо апликације за више од комуникације, било личне или професионалне и када су апликације посао.
Апликације које нису стално на мрежи или су нестабилне, губе своје кориснике и релевантност, на крају постају застареле. То се догодило у трену. Пошто интернет никада не спава и ради 24 сата дневно, 7 дана у недељи, иста идеја мора да важи и за апликације.
Скалабилност је кључна за ово и обезбеђивање доступности апликација. Балансирање оптерећења је једна од најважнијих компоненти у обезбеђивању доступности. Многи људи и даље верују да се балансирање оптерећења може постићи једноставном скриптом.
Међутим, то није случај. Само он обезбеђује приступ програмима широм света — у било које време и са било ког уређаја.
У овом посту ћемо детаљно погледати балансирање оптерећења, његове алгоритме и како се то односи на микроуслуге, између осталог. Почнимо!
Шта је балансирање оптерећења?
Како потражња за веб-сајтом или пословном апликацијом расте, један сервер ускоро неће моћи да поднесе цело оптерећење. Организације распоређују оптерећење на бројне сервере како би задовољиле потражњу. Овај метод, познат као „балансирање оптерећења“, спречава преоптерећење једног сервера, што може довести до његовог успоравања, испуштања захтева или чак пада.
Балансирање оптерећења дистрибуира мрежни саобраћај подједнако како би се избегао квар услед преоптерећења ресурса. Апликације, веб локације, базе података и други рачунарски ресурси раде боље и доступнији су коришћењем овог метода. Такође помаже у правилној и благовременој обради захтева корисника.
Из перспективе корисника, балансирање оптерећења служи као невидљиви посредник између клијента и скупа сервера, осигуравајући да захтеви за повезивање не буду одбачени. Апликације, веб локације, базе података и онлајн услуге би највероватније пропали ако би потражња постала превелика без балансирања оптерећења.
Стотине хиљада корисничких захтева могу бити послате на једну веб локацију са великим прометом у исто време. Потребно је више сервера да би се веб странице исправно попуниле траженим садржајем, као што су текст, слике, видео и аудио стримовање. Балансирање оптерећења се обично користи у фармама сервера веб локација са великим прометом, као и на ДНС серверима, базама података и локацијама са протоколом за пренос датотека (ФТП).
Ако је један сервер преоптерећен, ово би могло лоше да функционише или се чак сруши. Балансери оптерећења смањују шансу застоја равномерном дистрибуцијом корисничких захтева међу збирком сервера. Ако један од сервера у групи не успе, саобраћај се преусмерава на друге сервере у групи. Балансатор оптерећења аутоматски додаје нове сервере у процесу дистрибуције саобраћаја када се додају у скуп сервера.
Како функционише балансирање оптерећења?
Ради на следећи начин:
- Када клијент прими захтев, на пример преко претраживача или апликације, он покушава да се повеже са сервером.
- Када балансатор оптерећења прими захтев, он га усмерава на један од сервера у групи сервера на основу утврђених шаблона од стране алгоритма (или фарме).
- Сервер прима захтев за повезивање и одговара клијенту преко балансера оптерећења.
- Када балансатор оптерећења прими одговор, он поклапа ИП адресу клијента са ИП адресом изабраног сервера. Након тога, одговор се преноси са пакетом.
- ССЛ оффлоад је процес дешифровања података помоћу протокола за шифровање Сецурити Соцкет Лаиер тако да сервери не морају.
- Процес се понавља док се сесија не заврши.
Методе балансирања оптерећења
Да бисте изабрали који од сервера у фарми сервера прима следећи захтев, свака техника балансирања оптерећења користи скуп критеријума. Постоји пет типичних приступа за балансирање оптерећења:
- разигравање: Ово је подразумевани приступ и ради баш како звучи. Балансатор оптерећења дистрибуира захтеве у ротирајућем обрасцу, почевши од првог сервера у групи и настављајући до дна, где чека да буде поново позван. Овај метод осигурава да сваки сервер рукује отприлике истим бројем веза.
- Веигхтед Роунд Робин: Овај приступ сваком серверу додељује тежину (или преференцију) која је генерално пропорционална његовом капацитету. Што више захтева сервер прими, то је већа тежина. На пример, сервер са тежинском вредношћу два прима дупло више захтева од сервера са вредношћу један.
- Стицки Сессион: Овај приступ, такође познат као постојаност сесије, повезује одређене клијенте и сервере током трајања сесије. Да би успоставио везу, балансатор оптерећења користи колачић или ИП адресу корисника да идентификује кориснички атрибут. Када се веза успостави, захтеви корисника се усмеравају на исти сервер све док се сесија не заврши. Ово оптимизује мрежне ресурсе, а истовремено побољшава корисничко искуство.
- Најмање везе: Ова стратегија претпоставља да сви захтеви резултирају једнаким оптерећењем сервера. Као резултат, сервер са најмањим бројем захтева прима следећи захтев.
- ИП Хасх: Овај алгоритам генерише јединствени хеш кључ на основу изворне и одредишне ИП адресе клијента и сервера. Кључ се користи за рутирање захтева и омогућава да се изгубљена веза са истим сервером настави.
Хардвер вс. Софтверски балансери оптерећења
Хардверски балансатор оптерећења
Физички хардвер, као што је уређај, чини балансирање хардверског оптерећења. Ови усмеравају саобраћај ка серверима у зависности од фактора као што су број постојећих веза, употреба процесора и перформансе сервера. Балансери оптерећења хардвера имају власнички фирмвер који се мора одржавати и ажурирати када нове верзије и безбедносне исправке постану доступне.
Балансери хардверског оптерећења често пружају веће перформансе и контролу, као и шири спектар могућности као што су Керберос аутентификација и ССЛ хардверско убрзање, али захтевају одређени ниво стручности за управљање и одржавање. Пошто су хардверски балансери оптерећења мање флексибилни и скалабилни од софтверских балансера оптерећења, постоји склоност ка прекомерном обезбеђивању хардверских балансера оптерећења.
Софтваре Лоад Баланцер
Софтверске балансере оптерећења обично је лакше поставити него њихове хардверске колеге. Они су такође исплативији и прилагодљивији и добро раде са окружењима за развој софтвера. Софтверски метод вам омогућава да прилагодите балансер оптерећења тачним захтевима вашег окружења. Повећана флексибилност може доћи на рачун додатног времена утрошеног на подешавање балансера оптерећења.
Софтверски балансери вам пружају већу флексибилност за прављење модификација и ажурирања од хардверских, који имају више затворени приступ. Претходно упаковане виртуелне машине се могу користити као балансери оптерећења софтвера (ВМ). Виртуелне машине ће вам уштедети време за подешавање, али можда неће имати све функције доступне у својим хардверским колегама.
Једноставна имплементација балансирања оптерећења
Користићемо библиотеку Спринг Цлоуд да правите апликације које се повезују са другим апликацијама на начин уравнотеженог оптерећења. Док обрађујемо захтеве за удаљену услугу, лако можемо да направимо балансирање оптерећења користећи било коју технику коју желимо. Размотрите следећи код као пример. Почећемо са основном серверском апликацијом.
Сервер ће имати само једну ХТТП крајњу тачку и њиме ће се управљати у неколико инстанци. Затим ћемо направити клијентску апликацију која користи Лоад Баланцер за дистрибуцију захтева на неколико инстанци сервера.
сервер
Почињемо са основним Пролећна чизма апликација за наш пример сервера:
За почетак, убризгавамо прилагодљиву променљиву под називом инстанце_ИД. Ово нам помаже да разликујемо бројне инстанце које раде. Након тога, креирамо једну ХТТП ГЕТ крајњу тачку која враћа поруку и ИД инстанце.
Подразумевана инстанца са ИД-ом 1 ће радити на порту 8080. Потребно је само да додамо неколико параметара програма да бисмо покренули другу инстанцу:
Купац
Хајде сада да погледамо клијентски код. Овде долази Лоад Баланцер, па хајде да почнемо тако што ћемо га укључити у нашу апликацију:
Након тога, развијамо имплементацију СервицеИнстанцеЛистСупплиер. Ово је један од најважнијих интерфејса у Лоад Баланцер-у. Он одређује како лоцирамо доступне инстанце услуге.
Ми ћемо чврсто кодирати две одвојене инстанце нашег примера сервера у нашој апликацији за пример. Они раде на истом систему, али користе одвојене портове:
Креирајте класу ЛоадБаланцерЦонфигуратион сада:
Ова класа има само једну сврху: креира ВебЦлиент буилдер са балансираним оптерећењем за прављење удаљених захтева. Наша напомена користи измишљено име за услугу.
То је због чињенице да највероватније нећемо знати прецизна имена хостова и портове за покретање инстанци унапред. Као резултат тога, користимо измишљено име као чувар места, а оквир ће заменити стварне информације када одабере покренуту инстанцу.
Затим, направимо класу Цонфигуратион која ће се користити за инстанцирање наше понуде инстанце услуге. Имајте на уму да користимо исти псеудоним као и раније:
Сада можемо да направимо праву клијентску апликацију. Хајде да пошаљемо 10 упита серверу узорка користећи ВебЦлиент беан од раније:
Из излаза можемо видети да балансирамо оптерећење између две одвојене инстанце:
Балансирање оптерећења у микросервисима
Микросервисну архитектуру користи неколико компанија, као што су Нетфлик и Амазон, за развој пословних апликација као скупа слабо повезаних услуга. Хиперскала и континуирана испорука за компликоване апликације су само два од разлога за прелазак на ову дистрибуирану, слабо повезану архитектуру.
Тимови ових предузећа су применили Агиле и ДевОпс стратегије како би производили апликације брже и са нижом стопом неуспеха од традиционалних метода. Међутим, морате успоставити равнотежу између сложености дистрибуиране архитектуре и захтева апликације, захтева за размером и ограничења времена до пуштања на тржиште.
Толико година, контролери испоруке апликација (АДЦ) су били критични за испуњавање захтева на нивоу услуге за корпоративне апликације хостоване на локацији или у облаку. Клијент који се бави апликацијом заснованом на микроуслугама не мора да зна о инстанцама које је пружају да би самостално развијао клијента и микросервисе.
Ово је управо раздвајање које обезбеђује обрнути прокси или балансатор оптерећења. Опет, балансирање оптерећења је решење за обезбеђивање да микросервис може да се носи са потражњом, безбедношћу и доступношћу.
Када комбинујете традиционално балансирање оптерећења север-југ између апликација заснованих на клијенту и микроуслугама са применом Исток-Запад за хоризонталну скалабилност, добијате значајно повећање. Циљ је да се одржи безбедно и регулисано окружење које захтева ИТ без жртвовања агилности развоја или ДевОпс аутоматизација захтевима.
Предности
Балансирање оптерећења пружа различите предности побољшањем коришћења ресурса, испоруке података и времена одговора за веб-сајтове и апликације са великим прометом, као и базе података које добијају велики број упита. Балансирање оптерећења осигурава да се захтеви корисника испуне брзо и исправно у сценаријима великог саобраћаја.
Они штеде корисницима отежано суочавање са спорим програмима и ресурсима. Балансирање оптерећења такође помаже у избегавању застоја и поједностављује безбедност, смањујући ризик од губитка продуктивности и зараде за вашу компанију.
- Балансирање оптерећења пружа флексибилност додавања и уклањања сервера како то захтева захтев, поред управљања саобраћајем до оптималне ефикасности. Пошто се саобраћај преусмерава на друге сервере током одржавања, такође је могуће предузети одржавање сервера без ометања корисника.
- Балансирање оптерећења обезбеђује уграђену редундантност поделом саобраћаја између скупа сервера. Можете одмах да преусмерите оптерећење на друге сервере ако један не успе, минимизирајући утицај на кориснике.
- Ако употреба апликације или веб-сајта расте, повећани саобраћај би могао да угрози њене перформансе ако се њиме ефикасно не рукује. Са балансирањем оптерећења, можете додати прави или виртуелни сервер да бисте задовољили потражњу без ометања услуге. Балансатор оптерећења идентификује нове сервере када дођу на мрежу и без напора их укључује у рад. Овај метод је пожељнији од миграције веб локације са преоптерећеног сервера на нови, што често укључује застоје.
Zakljucak
Балансирање оптерећења је критична компонента савремених система отпорних на грешке. Можемо једноставно да направимо апликације које дистрибуирају захтеве на више инстанци услуге користећи различите приступе балансирања оптерећења. Предузећа морају подржавати компликоване ИТ системе како би безбедно обезбедила апликације.
Конфигурација микроуслуга за више домена, примена и одржавање могу бити подложни грешкама, скупи и дуготрајни. ИТ би требало да користи најбоље праксе и технологије аутоматизације, видљивости, аналитике и оркестрације које су компатибилне са њиховим агилним и ДевОпс процесима како би се олакшало подешавање и одржавање ових микроуслуга.
Ostavite komentar