Содржина[Крие][Прикажи]
Достапноста на апликациите никогаш не била сфатена толку сериозно како што е денес кога ги користиме апликациите за повеќе од само комуникација, без разлика дали станува збор за лична или професионална и кога апликациите се бизнис.
Апликациите кои не се постојано онлајн или се нестабилни, ги губат своите корисници и релевантност, и на крајот стануваат застарени. Тоа се случи во блесок. Бидејќи интернетот никогаш не спие и работи 24 часа на ден, 7 дена во неделата, истата идеја мора да важи и за апликациите.
Приспособливоста е клучна за да се направи ова и да се обезбеди достапност на апликацијата. Балансирањето на товарот е една од најважните компоненти во обезбедувањето достапност. Многу луѓе сè уште веруваат дека балансирањето на товарот може да се постигне со едноставна скрипта.
Сепак, тоа не е така. Само тој обезбедува пристап до програми низ целиот свет — во секое време и од кој било уред.
Во овој пост, ќе разгледаме длабоко балансирање на оптоварување, неговите алгоритми и како тоа се поврзува со микросервисите, меѓу другото. Да почнеме!
Што е балансирање на оптоварување?
Како што расте побарувачката за веб-локација или деловна апликација, еден сервер наскоро нема да може да се справи со целиот товар. Организациите го дистрибуираат обемот на работа преку бројни сервери со цел да ја задоволат побарувачката. Овој метод, познат како „балансирање на оптоварување“, спречува преоптоварување на еден сервер, што може да предизвика забавување, испуштање барања или дури и паѓање.
Балансирањето на оптоварување го дистрибуира мрежниот сообраќај подеднакво за да се избегне дефект поради преоптоварување на ресурсите. Апликациите, веб-локациите, базите на податоци и другите компјутерски ресурси работат подобро и се подостапни со користење на овој метод. Таа, исто така помага во правилна и навремена обработка на барањата на корисниците.
Од перспектива на корисникот, балансирањето на оптоварување служи како невиден посредник помеѓу клиентот и збирката сервери, осигурувајќи дека барањата за поврзување не се отфрлаат. Апликациите, веб-локациите, базите на податоци и онлајн услугите најверојатно ќе пропаднат ако побарувачката стане преголема без балансирање на оптоварување.
Стотици илјади кориснички барања можат да се испратат на една веб-локација со голем сообраќај во исто време. Потребни се повеќе сервери за правилно пополнување на веб-страниците со бараната содржина, како што се текст, слики, видео и аудио стриминг. Балансирањето на оптоварување најчесто се користи во фарми за сервери за веб-локации со голем сообраќај, како и за DNS сервери, бази на податоци и страници на протокол за пренос на датотеки (FTP).
Ако еден сервер е преоптоварен, ова може да функционира лошо или дури и да се сруши. Балансите на оптоварување ја намалуваат шансата за застој со рамномерно распределување на барањата на корисниците меѓу збирката сервери. Ако еден од серверите во групата не успее, сообраќајот се пренасочува кон други сервери во групата. Балансерот на оптоварување автоматски додава нови сервери во процесот на дистрибуција на сообраќај кога тие се додаваат во серверот.
Како функционира балансирањето на оптоварување?
Работи на следниов начин:
- Кога клиентот добива барање, како на пример преку прелистувач или апликација, тој се обидува да се поврзе со серверот.
- Кога балансерот на оптоварување добива барање, го насочува кон еден од серверите во серверската група врз основа на воспоставените шеми од алгоритмот (или фармата).
- Серверот го прима барањето за поврзување и му одговара на клиентот преку балансерот на оптоварување.
- Кога балансерот на оптоварување ќе го добие одговорот, тој ја совпаѓа IP адресата на клиентот со IP адресата на избраниот сервер. После тоа, одговорот се пренесува со пакетот.
- SSL offload е процес на дешифрирање на податоците со помош на протоколот за шифрирање на Security Socket Layer, така што серверите не мораат да го прават тоа.
- Процесот се повторува додека не заврши сесијата.
Методи за балансирање на товарот
За да изберете кој од серверите во фармата за сервери ќе го прими следното барање, секоја техника за балансирање на оптоварување користи сет на критериуми. Постојат пет типични пристапи за балансирање на оптоварување:
- Круг Робин: Ова е стандардниот пристап и работи исто како што звучи. Балансерот на оптоварување ги дистрибуира барањата во ротирачка шема, почнувајќи од првиот сервер во групата и продолжувајќи до дното, каде што чека повторно да биде повикан. Овој метод осигурува дека секој сервер работи со приближно ист број врски.
- Пондериран круг Робин: Овој пристап на секој сервер му доделува тежина (или предност) што е генерално пропорционална на неговиот капацитет. Колку повеќе барања добива серверот, толку е поголема тежината. На пример, сервер со вредност на тежина од два добива двојно повеќе барања од сервер со вредност на тежина од еден.
- Леплива сесија: Овој пристап, познат и како упорност на сесијата, поврзува одредени клиенти и сервери за времетраењето на сесијата. За да се воспостави врската, балансерот на оптоварување користи колаче или IP адреса на корисникот за да идентификува кориснички атрибут. Откако ќе се воспостави врската, барањата на корисникот се упатуваат на истиот сервер додека не заврши сесијата. Ова ги оптимизира мрежните ресурси, а истовремено го подобрува корисничкото искуство.
- Најмалку врски: Оваа стратегија претпоставува дека сите барања резултираат со еднаков товар на серверот. Како резултат на тоа, серверот со најмал број барања го прима следното барање.
- IP Хаш: Овој алгоритам генерира уникатен хаш клуч врз основа на изворните и дестинации IP-адреси на клиентот и серверот. Клучот се користи за насочување на барањето и овозможува продолжување на изгубената врска со истиот сервер.
Хардвер против. Балансери на оптоварување на софтвер
Хардверски Load Balancer
Физичкиот хардвер, како што е апаратот, ги сочинува балансирачите на оптоварување на хардверот. Овие го насочуваат сообраќајот до серверите во зависност од фактори како што се бројот на постоечки конекции, употребата на процесорот и перформансите на серверот. Балансите на оптоварување на хардверот имаат сопствен фирмвер што треба да се одржува и ажурира кога ќе станат достапни нови верзии и безбедносни поправки.
Балансите на оптоварување на хардверот често обезбедуваат повисоки перформанси и контрола, како и поширок опсег на способности како што се Kerberos автентикација и SSL хардверско забрзување, но тие бараат одредено ниво на експертиза за управување и одржување. Бидејќи хардверските балансери на оптоварување се помалку флексибилни и скалабилни од софтверските балансери на оптоварување, постои склоност кон прекумерно обезбедување хардверски балансери на оптоварување.
Софтвер Load Balancer
Балансите на оптоварување на софтвер обично се полесни за поставување од нивните хардверски колеги. Тие се исто така поекономични и поприлагодливи, и добро работат со околини за развој на софтвер. Софтверскиот метод ви овозможува да го приспособите балансерот на оптоварување според точните барања на вашата околина. Зголемената флексибилност може да дојде на сметка на дополнителното време потрошено за поставување на балансерот на товарот.
Софтверските балансери ви обезбедуваат поголема флексибилност за правење модификации и ажурирања отколку хардверските, кои имаат пристап со повеќе затворени кутии. Претпакуваните виртуелни машини може да се користат како софтверски балансери на оптоварување (ВМ). Виртуелните машини ќе ви заштедат одредено време за поставување, но можеби нема да ја имаат целата функционалност достапна во нивните хардверски колеги.
Едноставна имплементација на балансирање на товарот
Ќе ја користиме библиотеката Spring Cloud за да изгради апликации кои се поврзуваат со други апликации на балансиран начин. Додека ги обработуваме барањата за услуги од далечина, лесно можеме да конструираме балансирање на оптоварување користејќи која било техника што ја сакаме. Размислете за следниов код како пример. Ќе започнеме со основна апликација за сервер.
Серверот ќе има само една HTTP крајна точка и ќе се управува во неколку случаи. Потоа ќе изградиме клиентска апликација која користи Load Balancer за дистрибуција на барања низ неколку примероци на сервери.
сервер
Започнуваме со основно Пролетна чизма апликација за нашиот примерен сервер:
За почеток, инјектираме приспособлива променлива наречена instance_ID. Ова ни помага да направиме разлика помеѓу бројни случаи кои работат. После тоа, создаваме единствена HTTP GET крајна точка која враќа порака и ID на пример.
Стандардната инстанца со ID 1 ќе работи на портата 8080. Треба само да додадеме неколку програмски параметри за да започнеме втор пример:
клиентот
Ајде сега да го погледнеме кодот на клиентот. Тука доаѓа Load Balancer, па ајде да започнеме со тоа што ќе го вклучиме во нашата апликација:
После тоа, развиваме имплементација на ServiceInstanceListSupplier. Ова е еден од најважните интерфејси во Load Balancer. Тоа специфицира како ги лоцираме достапните примероци на услуги.
Ќе хард-кодираме два одделни примероци на нашиот примерен сервер во нашата примерок апликација. Тие работат на истиот систем, но користат посебни порти:
Креирајте класа за конфигурација на LoadBalancer сега:
Оваа класа има само една цел: создава градител на WebClient избалансиран со оптоварување за поднесување барања од далечина. Нашата прибелешка користи фиктивно име за услугата.
Ова се должи на фактот дека, најверојатно, нема да ги знаеме прецизните имиња на домаќини и порти за извршување на примероци пред време. Како резултат на тоа, користиме фиктивно име како место за задржување, а рамката ќе ги замени вистинските информации кога ќе избере инстанца што работи.
Следно, ајде да направиме класа за конфигурација што ќе се користи за инстанцирање на снабдувањето со примери на услуги. Имајте предвид дека го користиме истиот псевдоним како и претходно:
Сега можеме да ја изградиме вистинската клиентска апликација. Ајде да испратиме 10 прашања до серверот за примероци користејќи го WebClient bean од порано:
Од излезот можеме да видиме дека балансираме помеѓу два посебни примери:
Load Balancing во микросервисите
Микросервисната архитектура се користи од неколку компании, како Netflix и Amazon, за развој на деловни апликации како збир на лабаво поврзани услуги. Хиперскалата и континуираната испорака за комплицирани апликации се само две од причините за преминување кон оваа дистрибуирана, лабаво поврзана архитектура.
Тимовите на овие претпријатија имплементираа Agile и DevOps стратегии со цел да произведуваат апликации побрзо и со помала стапка на неуспех од традиционалните методи. Сепак, мора да постигнете рамнотежа помеѓу сложеноста на дистрибуираната архитектура и барањата на апликацијата, барањата за обем и ограничувањата од времето до пазарот.
Толку многу години, контролорите за испорака на апликации (ADC) беа клучни за исполнување на барањата на ниво на услуга за корпоративни апликации хостирани во простории или во облак. Клиент кој се занимава со апликација заснована на микроуслуги не треба да знае за примерите што ја обезбедуваат за да може самостојно да ги развива клиентот и микросервисите.
Ова е токму раздвојувањето обезбедено од обратен прокси или балансирач на оптоварување. Повторно, балансирањето на оптоварување е решение за да се осигура дека микросервисите можат да се справат со побарувачката, безбедноста и достапноста.
Кога ќе го комбинирате традиционалното балансирање на оптоварување Север-Југ помеѓу клиентски и апликации засновани на микроуслуги со распоредување од Исток-Запад за хоризонтална приспособливост, добивате значителен поттик. Целта е да се одржи безбедното и регулирано опкружување кое го бара ИТ без да се жртвува развојната агилност или Автоматизација на DevOps барања.
Предности
Балансирањето на оптоварување обезбедува различни придобивки преку подобрување на искористеноста на ресурсите, испораката на податоци и времето на одговор за веб-локациите и апликациите со голем сообраќај, како и базите на податоци кои добиваат голем број прашања. Балансирањето на товарот гарантира брзо и правилно исполнување на барањата на корисниците во сценарија со голем сообраќај.
Тие им заштедуваат на корисниците на влошување на справувањето со бавните програми и ресурси. Балансирањето на товарот, исто така, помага да се избегне застојот и да се поедностави безбедноста, намалувајќи го ризикот од изгубена продуктивност и заработка за вашата компанија.
- Балансирањето на оптоварување обезбедува флексибилност за додавање и отстранување на сервери како што налага побарувачката, покрај управувањето со сообраќајот до оптимална ефикасност. Бидејќи сообраќајот се пренасочува кон други сервери за време на одржувањето, исто така е изводливо да се изврши одржување на серверот без да се попречуваат корисниците.
- Балансирањето на оптоварување обезбедува вграден вишок преку делење на сообраќајот меѓу збир на сервери. Можете веднаш да го пренасочите товарот на други сервери ако некој не успее, минимизирајќи го влијанието врз корисниците.
- Доколку расте користењето на апликацијата или веб-локацијата, зголемениот сообраќај може да ги влоши неговите перформанси доколку не се постапува ефективно. Со балансирање на оптоварување, можете да додадете реален или виртуелен сервер за да ја задоволите побарувачката без да ја нарушите услугата. Балансерот на оптоварување ги идентификува новите сервери како што доаѓаат онлајн и без напор ги вклучува во работата. Овој метод се претпочита од мигрирање на веб-локација од преоптоварен сервер на нов, што често вклучува одредено време на застој.
Заклучок
Балансирањето на товарот е критична компонента на современите системи толерантни на грешки. Ние едноставно можеме да конструираме апликации кои дистрибуираат барања до повеќе примероци на услуги користејќи различни пристапи за балансирање на оптоварување. Бизнисите мора да поддржуваат комплицирани ИТ системи за безбедно да обезбедат апликации.
Конфигурацијата, распоредувањето и одржувањето на микросервисите меѓу домени може да бидат склони кон грешки, скапи и одземаат многу време. ИТ треба да користи автоматизација, видливост, аналитика и најдобри практики и технологии за оркестрација кои се компатибилни со нивните агилни и DevOps процеси за да го олеснат поставувањето и одржувањето на овие микросервиси.
Оставете Одговор