Мазмұны[Жасыру][Көрсету]
Қолданбалардың қолжетімділігі ешқашан біз қолданбаларды тек жеке немесе кәсіби байланыс үшін ғана емес, сонымен қатар қолданбалар бизнес болған кезде пайдаланған кездегідей байыпты қабылданған емес.
Үнемі желіде емес немесе тұрақсыз қолданбалар өз пайдаланушыларын және өзектілігін жоғалтады, сайып келгенде ескіреді. Бұл бір сәтте болды. Интернет ешқашан ұйықтамайды және тәулігіне 24 сағат, аптасына 7 күн жұмыс істейтіндіктен, сол идея қолданбаларға да қатысты болуы керек.
Мұны істеу және қолданбаның қолжетімділігін қамтамасыз ету үшін ауқымдылық маңызды. Жүктемені теңестіру қол жетімділікті қамтамасыз етудегі ең маңызды құрамдастардың бірі болып табылады. Көптеген адамдар әлі де жүктемені теңестіруді қарапайым сценарий арқылы орындауға болады деп санайды.
Алайда бұлай емес. Ол кез келген уақытта және кез келген құрылғыдан бүкіл әлем бойынша бағдарламаларға қол жеткізуге мүмкіндік береді.
Бұл постта біз жүктемені теңестіруді, оның алгоритмдерін және оның микросервистерге қалай қатысы барын және басқа нәрселерді қарастырамыз. Бастайық!
Жүктемені теңестіру дегеніміз не?
Веб-сайтқа немесе бизнес қолданбасына сұраныс өскен сайын, бір сервер көп ұзамай бүкіл жүктемені көтере алмайды. Ұйымдар сұранысты қанағаттандыру үшін жұмыс жүктемесін көптеген серверлерге таратады. «Жүктемені теңестіру» деп аталатын бұл әдіс бір серверді шамадан тыс жүктеуден сақтайды, бұл оның баяулауына, сұрауларды тастауға немесе тіпті істен шығуына әкелуі мүмкін.
Жүктемені теңестіру ресурстың шамадан тыс жүктелуіне байланысты сәтсіздікке жол бермеу үшін желі трафигін бірдей бөледі. Қолданбалар, веб-сайттар, дерекқорлар және басқа компьютерлік ресурстар осы әдісті пайдалану арқылы жақсырақ жұмыс істейді және қол жетімді. Ол сондай-ақ пайдаланушы сұрауларын дұрыс және уақтылы өңдеуге көмектеседі.
Пайдаланушы көзқарасы бойынша, жүктемені теңестіру клиент пен серверлер жинағы арасында көрінбейтін делдал ретінде қызмет етеді, бұл қосылым сұрауларының жойылмауын қамтамасыз етеді. Қолданбалар, веб-сайттар, дерекқорлар және онлайн қызметтер жүктемені теңестірусіз сұраныс тым жоғары болса, құлдырауы мүмкін.
Жүздеген мың пайдаланушы сұрауларын бір уақытта жоғары трафикті бір веб-сайтқа жіберуге болады. Веб-беттерді мәтін, кескіндер, бейне және аудио ағыны сияқты сұралған мазмұнмен дұрыс толтыру үшін бірнеше сервер қажет. Жүктемені теңестіру әдетте жоғары трафикті веб-сайт сервер фермаларында, сондай-ақ DNS серверлерінде, дерекқорларында және File Transfer Protocol (FTP) тораптарында қолданылады.
Бір серверге шамадан тыс жүктеме болса, ол нашар жұмыс істеуі немесе тіпті бұзылуы мүмкін. Жүктемені теңестірушілер пайдаланушы сұрауларын серверлер жинағы арасында біркелкі тарату арқылы тоқтап қалу мүмкіндігін азайтады. Топтағы серверлердің бірі сәтсіз болса, трафик топтағы басқа серверлерге қайта бағытталады. Жүктеме теңестіруші жаңа серверлерді сервер пулына қосылған кезде трафикті тарату процесіне автоматты түрде қосады.
Жүктемені теңестіру қалай жұмыс істейді?
Ол келесідей жұмыс істейді:
- Клиент сұрауды, мысалы, шолғыш немесе қолданба арқылы алғанда, ол серверге қосылуға әрекет жасайды.
- Жүктеме теңестіруші сұрауды алғанда, оны алгоритм (немесе ферма) арқылы белгіленген үлгілерге негізделген серверлер тобының серверлерінің біріне бағыттайды.
- Сервер қосылым сұрауын қабылдайды және клиентке жүктеме балансы арқылы жауап береді.
- Жүктеме теңестіруші жауап алған кезде, ол клиенттің IP мекенжайын таңдалған сервердің IP мекенжайымен сәйкестендіреді. Осыдан кейін жауап пакетпен бірге беріледі.
- SSL түсіру серверлерге қажет болмас үшін Security Socket Layer шифрлау протоколы арқылы деректер шифрын шешу процесі болып табылады.
- Процесс сессия аяқталғанша қайталанады.
Жүктемені теңестіру әдістері
Сервер фермасындағы серверлердің қайсысы келесі сұрауды алатынын таңдау үшін әрбір жүктемені теңестіру техникасы шарттар жинағын пайдаланады. Жүктемені теңестірудің бес типтік тәсілі бар:
- Дөңгелек Робин: Бұл әдепкі тәсіл және ол айтылғандай жұмыс істейді. Жүктемені теңестіруші сұрауларды топтағы бірінші серверден бастап және қайтадан шақыруды күтетін төменгі жаққа қарай жылжыту үлгісінде таратады. Бұл әдіс әрбір сервердің шамамен бірдей қосылымдар санын өңдеуін қамтамасыз етеді.
- Салмағы бар Робин: Бұл тәсіл әрбір серверге әдетте оның сыйымдылығына пропорционалды салмақты (немесе артықшылықты) тағайындайды. Сервер неғұрлым көп сұраныс алса, соғұрлым салмақ жоғары болады. Мысалы, салмақ мәні екі болатын сервер салмақ мәні бір серверге қарағанда екі есе көп сұрауларды қабылдайды.
- Жабысқақ сессия: Сеанс тұрақтылығы деп те белгілі бұл тәсіл белгілі бір клиенттер мен серверлерді сеанс ұзақтығына қосады. Сілтемені орнату үшін жүктеме теңестіруші cookie файлын немесе пайдаланушы төлсипатын анықтау үшін пайдаланушының IP мекенжайын пайдаланады. Қосылым орнатылғаннан кейін пайдаланушының сұраулары сеанс аяқталғанша сол серверге бағытталады. Бұл желі ресурстарын оңтайландырады, сонымен қатар пайдаланушы тәжірибесін жақсартады.
- Ең аз қосылымдар: Бұл стратегия барлық сұраулар тең сервер жүктемесіне әкелетінін болжайды. Нәтижесінде сұраныстардың ең аз саны бар сервер келесі сұрауды алады.
- IP хэш: Бұл алгоритм клиент пен сервердің бастапқы және тағайындалған IP мекенжайларына негізделген бірегей хэш кілтін жасайды. Кілт сұрауды бағыттау үшін пайдаланылады және сол сервермен жоғалған қосылымды қалпына келтіруге мүмкіндік береді.
Аппараттық құралдарға қарсы. Бағдарламалық жасақтаманың жүктеме балансы
Аппараттық жүктемені теңестіруші
Құрылғы сияқты физикалық жабдық аппараттық жүктемені теңестірушілерді құрайды. Бұл бар қосылымдар саны, процессорды пайдалану және сервер өнімділігі сияқты факторларға байланысты серверлерге трафикті бағыттайды. Аппараттық жүктемені теңестіргіштерде жаңа нұсқалар мен қауіпсіздік түзетулері қол жетімді болған кезде сақталуы және жаңартылуы қажет меншікті микробағдарлама бар.
Аппараттық жүктемені теңестірушілер жиі жоғары өнімділік пен басқаруды, сондай-ақ Kerberos аутентификациясы және SSL аппараттық құралын жеделдету сияқты мүмкіндіктердің кең ауқымын қамтамасыз етеді, бірақ олар басқару және техникалық қызмет көрсету тәжірибесінің кейбір деңгейін қажет етеді. Аппараттық жүктемені теңестіргіштер бағдарламалық жасақтама жүктемесін теңестірушілерге қарағанда икемді және масштабталатын болғандықтан, аппараттық жүктеме теңестіргіштерін шамадан тыс қамтамасыз етуге бейім.
Бағдарламалық жасақтаманың жүктеме балансы
Бағдарламалық жасақтама жүктемесінің теңестірушілерін орнату, әдетте, аппараттық құралдарға қарағанда оңайырақ. Олар сонымен қатар үнемді және бейімделгіш және бағдарламалық жасақтаманы әзірлеу ортасымен жақсы жұмыс істейді. Бағдарламалық құрал әдісі жүктемені теңестіргішті ортаңыздың нақты талаптарына сәйкес реттеуге мүмкіндік береді. Жоғары икемділік жүктеме балансын орнатуға кеткен қосымша уақыт есебінен болуы мүмкін.
Бағдарламалық жасақтаманы теңестірушілер сізге модификациялар мен жаңартуларды жасау үшін көбірек икемділікті қамтамасыз етеді, олар жабық қораптағы тәсілге ие аппараттық құралдарға қарағанда. Алдын ала оралған виртуалды машиналарды бағдарламалық жасақтама жүктемесін теңестірушілер (VM) ретінде пайдалануға болады. Виртуалды машиналар сізге орнату уақытын үнемдейді, бірақ олардың аппараттық әріптестерінде қол жетімді барлық функциялар болмауы мүмкін.
Қарапайым жүктемені теңестіруді жүзеге асыру
Біз Spring Cloud кітапханасын пайдаланамыз қолданбаларды құрастыру басқа қолданбаларға жүктемені теңестіру арқылы қосылатын. Қашықтан қызмет көрсету сұрауларын өңдеу кезінде біз өзімізге ұнайтын кез келген техниканы пайдалана отырып, жүктемені теңестіруді оңай құра аламыз. Мысал ретінде келесі кодты қарастырыңыз. Біз негізгі серверлік қолданбадан бастаймыз.
Серверде тек бір HTTP соңғы нүктесі болады және бірнеше жағдайда жұмыс істейді. Содан кейін сұрауларды бірнеше сервер даналары бойынша тарату үшін Load Balancer пайдаланатын клиент қолданбасын құрастырамыз.
Сервер
Біз негізгіден бастаймыз Көктемгі етік мысал серверімізге арналған қолданба:
Бастау үшін instance_ID деп аталатын теңшелетін айнымалыны енгіземіз. Бұл жұмыс істеп тұрған көптеген даналарды ажыратуға көмектеседі. Осыдан кейін хабар мен дананы идентификаторды қайтаратын жалғыз HTTP GET соңғы нүктесін жасаймыз.
ID 1 әдепкі данасы 8080 портында жұмыс істейді. Екінші дананы іске қосу үшін бізге тек бірнеше бағдарлама параметрлерін қосу керек:
клиент
Енді клиент кодын қарастырайық. Бұл жерде Load Balancer кіреді, сондықтан оны қолданбамызға қосудан бастайық:
Осыдан кейін біз ServiceInstanceListSupplier іске асыруды әзірлейміз. Бұл Load Balancer ішіндегі ең маңызды интерфейстердің бірі. Ол қолжетімді қызмет даналарын қалай табатынымызды көрсетеді.
Үлгі қолданбада мысал серверіміздің екі бөлек данасын қатаң кодтаймыз. Олар бір жүйеде жұмыс істейді, бірақ бөлек порттарды пайдаланады:
LoadBalancerConfiguration класын қазір жасаңыз:
Бұл сыныптың бір ғана мақсаты бар: қашықтағы сұрауларды жасау үшін жүктемеге теңестірілген WebClient құрастырушысын жасайды. Біздің аннотациямызда қызмет үшін жалған атау қолданылады.
Бұл даналарды іске қосу үшін нақты хост атаулары мен порттарды алдын ала білмеуімізге байланысты. Нәтижесінде біз жалған атауды толтырғыш ретінде қолданамыз және жұмыс істеп тұрған дананы таңдаған кезде, құрылым нақты ақпаратты ауыстырады.
Әрі қарай, қызмет данасын жеткізуді жасау үшін пайдаланылатын Конфигурация сыныбын жасайық. Бұрынғыдай бүркеншік атты қолданатынымызды ескеріңіз:
Енді біз нақты клиенттік қосымшаны құра аламыз. Бұрынғы WebClient бұршағын пайдаланып үлгі серверіне 10 сұрау жіберейік:
Шығарудан біз екі бөлек дананың арасындағы жүктемені теңестіретінімізді көреміз:
Микросервистерде жүктемені теңестіру
Микросервис архитектурасын Netflix және Amazon сияқты бірнеше компаниялар еркін байланысқан қызметтер жиынтығы ретінде іскери қолданбаларды әзірлеу үшін пайдаланады. Күрделі қолданбалар үшін гипермасштабты және үздіксіз жеткізу - бұл таратылған, еркін байланысқан архитектураға көшудің екі себебі ғана.
Бұл кәсіпорындардың командалары дәстүрлі әдістерге қарағанда қолданбаларды тезірек және төмен сәтсіздікпен шығару үшін Agile және DevOps стратегияларын енгізді. Дегенмен, үлестірілген архитектураның күрделілігі мен қолданбаның талаптары, масштаб талаптары және нарыққа шығу уақытының шектеулері арасындағы тепе-теңдікті сақтау керек.
Көптеген жылдар бойы қолданбаларды жеткізу контроллері (ADC) жергілікті немесе бұлтта орналастырылған корпоративтік қолданбаларға арналған қызмет деңгейіндегі талаптарды қанағаттандыру үшін маңызды болды. Микросервистерге негізделген қолданбамен жұмыс істейтін клиент клиентті және микросервистерді дербес өсіру үшін оны қамтамасыз ететін даналар туралы білуі қажет емес.
Бұл кері прокси немесе жүктеме теңестіруші арқылы қамтамасыз етілген ажырату. Тағы да, жүктемені теңестіру микросервистердің сұранысты, қауіпсіздікті және қол жетімділікті өңдей алатынын қамтамасыз ету шешімі болып табылады.
Клиент пен микросервистерге негізделген қолданбалар арасындағы дәстүрлі Солтүстік-Оңтүстік жүктемені теңестіруді көлденең масштабтауға арналған Шығыс-Батыс орналастыруымен біріктіргенде, сіз айтарлықтай күшке ие боласыз. Мақсаты – АТ талап ететін қауіпсіз және реттелетін ортаны дамытудың икемділігін жоғалтпастан немесе DevOps автоматтандыру Талаптар.
артықшылықтары
Жүктемені теңестіру ресурстарды пайдалануды, деректерді жеткізуді және трафикті жоғары веб-сайттар мен қолданбалар үшін жауап беру уақытын, сондай-ақ көптеген сұрауларды алатын дерекқорларды жақсарту арқылы әртүрлі артықшылықтар береді. Жүктемені теңестіру жоғары трафик сценарийлерінде пайдаланушы сұрауларының жылдам және дұрыс орындалуын қамтамасыз етеді.
Олар пайдаланушыларды баяу бағдарламалармен және ресурстармен жұмыс істеуді қиындатады. Жүктемені теңестіру сонымен қатар тоқтап қалуды болдырмауға және қауіпсіздікті жеңілдетуге көмектеседі, өнімділік пен компанияңыз үшін табыстың жоғалу қаупін азайтады.
- Жүктемені теңестіру трафикті оңтайлы тиімділікке дейін басқарудан басқа, сұранысқа сай серверлерді қосу және жою икемділігін қамтамасыз етеді. Техникалық қызмет көрсету кезінде трафик басқа серверлерге бағытталатындықтан, пайдаланушыларға кедергі келтірместен серверге техникалық қызмет көрсетуді де жүзеге асыруға болады.
- Жүктемені теңестіру трафикті серверлер жинағы арасында бөлу арқылы кірістірілген резервті қамтамасыз етеді. Егер біреуі сәтсіз болса, жүктемені басқа серверлерге дереу аударып, пайдаланушыларға әсерін азайта аласыз.
- Қолданбаны немесе веб-сайтты пайдалану өссе, тиімді өңделмеген жағдайда, жоғарылаған трафик оның өнімділігін төмендетуі мүмкін. Жүктемені теңестіру арқылы сұранысты қанағаттандыру үшін қызметті үзбей нақты немесе виртуалды серверді қосуға болады. Жүктеме теңестіруші жаңа серверлерді желіге қосылған кезде анықтайды және оларды операцияға оңай қосады. Бұл әдіс веб-сайтты шамадан тыс жүктелген серверден жаңасына көшіру үшін жақсырақ, ол жиі тоқтап қалуды қажет етеді.
қорытынды
Жүктемені теңестіру қазіргі, ақауларға төзімді жүйелердің маңызды құрамдас бөлігі болып табылады. Біз әртүрлі жүктемені теңестіру тәсілдерін пайдалана отырып, сұрауларды бірнеше қызмет даналарына тарататын қолданбаларды жай ғана құра аламыз. Бағдарламаларды қауіпсіз қамтамасыз ету үшін кәсіпорындар күрделі АТ жүйелеріне қолдау көрсетуі керек.
Домен аралық микросервистерді конфигурациялау, орналастыру және техникалық қызмет көрсету қатеге бейім, қымбат және уақытты қажет етуі мүмкін. АТ осы микросервистерді орнатуды және оларға техникалық қызмет көрсетуді жеңілдету үшін автоматтандыруды, көрінуді, аналитиканы және басқарудың озық тәжірибелері мен олардың икемді және DevOps процестерімен үйлесімді технологияларды пайдалануы керек.
пікір қалдыру