Мазмуну[Жашыруу][Көрсөтүү]
Колдонмолорду жеке же профессионалдуу байланыш үчүн эмес, тиркемелер бизнес болгон учурда колдонсок, тиркемелердин жеткиликтүүлүгү эч качан азыркыдай олуттуу кабыл алынган эмес.
Дайыма онлайн режиминде турбаган же туруксуз тиркемелер өз колдонуучуларын жана актуалдуулугун жоготуп, акыры эскирип калат. Бул бир заматта болду. Интернет эч качан уктабайт жана суткасына 24 саат, жумасына 7 күн иштегендиктен, ушул эле идея колдонмолорго да колдонулушу керек.
Масштабдуулук муну аткаруу жана колдонмонун жеткиликтүүлүгүн камсыз кылуу үчүн абдан маанилүү. Жүктүн тең салмактуулугу жеткиликтүүлүгүн камсыз кылууда эң маанилүү компоненттердин бири болуп саналат. Көптөр дагы эле жүк балансын жөнөкөй скрипт менен ишке ашырууга болот деп эсептешет.
Бирок, бул андай эмес. Ал жалгыз гана дүйнө жүзүндөгү программаларга каалаган убакта жана каалаган түзмөктөн кирүү мүмкүнчүлүгүн берет.
Бул постто биз жүктүн тең салмактуулугун, анын алгоритмдерин жана анын микросервистерге кандай байланышы бар экенин жана башка нерселерди терең карап чыгабыз. баштайлы!
жүк баланстоо деген эмне?
Вебсайтка же бизнес тиркемеге суроо-талап өскөн сайын, бир сервер жакында бүт жүктү көтөрө албай калат. Уюмдар суроо-талапты канааттандыруу үчүн жумуш жүгүн көптөгөн серверлерге бөлүштүрүшөт. "Жүк балансы" деп аталган бул ыкма бир серверди ашыкча жүктөөдөн сактайт, бул анын жайлап кетишине, суроо-талаптардын түшүп калышына, ал тургай кыйроого алып келиши мүмкүн.
Жүктүн тең салмактуулугу ресурстун ашыкча жүктөлүшүнө байланыштуу иштебей калбаш үчүн тармак трафигин бирдей бөлүштүрөт. Тиркемелер, веб-сайттар, маалымат базалары жана башка компьютердик ресурстар бул ыкманы колдонуу менен жакшыраак иштешет жана жеткиликтүү. Ал ошондой эле колдонуучунун суроо-талаптарын туура жана өз убагында иштетүүгө жардам берет.
Колдонуучунун көз карашы боюнча, жүктүн тең салмактуулугу кардар менен серверлердин жыйындысынын ортосунда көрүнбөгөн ортомчу катары кызмат кылат, бул байланыш суроо-талаптары түшүп калбасын камсыз кылат. Тиркемелер, веб-сайттар, маалымат базалары жана онлайн кызматтары, жүк балансын түзбөстөн, суроо-талап өтө чоң болуп калса, кыйрап калышы мүмкүн.
Жүз миңдеген колдонуучунун суроо-талаптары бир эле учурда трафик көп болгон бир веб-сайтка жөнөтүлүшү мүмкүн. Веб баракчаларды текст, сүрөттөр, видео жана аудио агым сыяктуу суралган мазмун менен туура толтуруу үчүн бир нече сервер талап кылынат. Жүктөлгөн баланстоо көбүнчө трафики жогору веб-сайт сервер фермаларында, ошондой эле DNS серверлеринде, маалымат базаларында жана File Transfer Protocol (FTP) сайттарында колдонулат.
Эгер бир серверге ашыкча жүк жүктөлсө, ал начар иштеши же ал тургай кыйроого учурашы мүмкүн. Жүктөлгөн баланстоочулар колдонуучулардын суроо-талаптарын серверлердин коллекциясына бирдей бөлүштүрүү менен токтоп калуу мүмкүнчүлүгүн азайтат. Топтогу серверлердин бири иштебей калса, трафик топтун башка серверлерине багытталат. Жүктөлгөн баланстоочу жаңы серверлерди сервер бассейнине кошкондо трафикти бөлүштүрүү процессине автоматтык түрдө кошот.
Жүктүн тең салмактуулугу кантип иштейт?
Ал төмөнкүдөй иштейт:
- Кардар суроо-талапты алганда, мисалы, браузер же тиркеме аркылуу, ал сервер менен байланышууга аракет кылат.
- Жүктөлгөн баланстоочу суроо-талапты алганда, аны алгоритм (же ферма) тарабынан белгиленген үлгүлөрдүн негизинде сервер тобунун серверлеринин бирине багыттайт.
- Сервер туташуу суроо-талабын кабыл алат жана кардарга жүк баланстоочу аркылуу жооп берет.
- Жүктөлгөн баланстоочу жоопту алганда, ал кардардын IP дареги менен тандалган сервердин IP дарегин дал келет. Андан кийин жооп пакет менен жөнөтүлөт.
- SSL түшүрүү - серверлерге кереги жок болушу үчүн Security Socket Layer шифрлөө протоколун колдонуу менен маалыматтарды чечмелөө процесси.
- Процесс сессия аяктаганга чейин кайталанат.
Жүктөлүштү теңдөө ыкмалары
Сервер фермасындагы серверлердин кайсынысы кийинки суроо-талапты алаарын тандоо үчүн ар бир жүктү теңдөө техникасы критерийлердин топтомун колдонот. Жүктөлүштү теңдөөнүн беш типтүү ыкмасы бар:
- Робин Раунд: Бул демейки ыкма болуп саналат жана ал айтылгандай иштейт. Жүктөлгөн тең салмактоочу суроо-талаптарды топтун биринчи серверинен баштап, ылдый жагына чейин айлануучу схемада бөлүштүрөт. Бул ыкма ар бир сервердин болжол менен бирдей сандагы туташуулар менен иштешин камсыздайт.
- Weighted Round Robin: Бул ыкма ар бир серверге жалпысынан анын сыйымдуулугуна пропорционалдуу салмакты (же артыкчылыкты) дайындайт. Сервер канчалык көп суроо-талаптарды кабыл алса, салмагы ошончолук жогору болот. Мисалы, салмагы экиге барабар болгон сервер салмагы бир болгон серверге караганда эки эсе көп суроо-талаптарды алат.
- Жабышкак сессия: Бул ыкма, ошондой эле сеанс туруктуулугу катары белгилүү, сеанстын узактыгы үчүн белгилүү кардарларды жана серверлерди бириктирет. Шилтемени орнотуу үчүн жүк баланстоочу колдонуучунун атрибутун аныктоо үчүн cookie файлын же колдонуучунун IP дарегин колдонот. Туташуу орнотулгандан кийин, колдонуучунун суроо-талаптары сессия аяктаганга чейин ошол эле серверге багытталат. Бул тармак ресурстарын оптималдаштыруу менен бирге колдонуучу тажрыйбасын жакшыртат.
- Эң аз байланыштар: Бул стратегия бардык суроо-талаптар бирдей сервер жүгүн алып келет деп болжолдойт. Натыйжада, суроо-талаптардын эң аз саны бар сервер кийинки суроо-талапты алат.
- IP хэш: Бул алгоритм кардар менен сервердин булагы жана көздөгөн IP даректеринин негизинде уникалдуу хэш ачкычты жаратат. Ачкыч суроону багыттоо үчүн колдонулат жана ошол эле сервер менен жоголгон байланышты калыбына келтирүүгө мүмкүндүк берет.
Аппараттык камсыздоо Vs. Программалык камсыздоону жүктөө балансы
Аппараттык жүктү тең салмактоочу
Прибор сыяктуу физикалык жабдыктар аппараттык жүктү тең салмактоочуларды түзөт. Бул трафикти серверлерге болгон байланыштардын саны, процессордун колдонулушу жана сервердин иштеши сыяктуу факторлорго жараша багыттайт. Аппараттык жүктөмдөрдүн тең салмактуулугунда жаңы версиялар жана коопсуздук оңдоп-түзөөлөрү жеткиликтүү болгондо сакталып жана жаңыртылышы керек болгон менчик микропрограммасы бар.
Аппараттык жүктү тең салмактоочулар көбүнчө жогорку аткарууну жана башкарууну, ошондой эле Kerberos аутентификациясы жана SSL аппараттык тездетилиши сыяктуу мүмкүнчүлүктөрдүн кеңири спектрин камсыз кылат, бирок алар башкаруунун жана техникалык тейлөөнүн кандайдыр бир деңгээлин талап кылат. Аппараттык жүктү тең салмактоочулар программалык жүктөмдү тең салмактоочуларга караганда аз ийкемдүү жана масштабдуу болгондуктан, аппараттык жүктү тең салмактагычтарды ашыкча камсыздоого жакын.
Программалык камсыздоону жүктөө балансы
Программалык жүктөмдөрдүн тең салмактуулугун орнотуу, адатта, алардын аппараттык кесиптештерине караганда оңой. Алар ошондой эле үнөмдүү жана ийкемдүү жана программалык камсыздоону иштеп чыгуу чөйрөлөрү менен жакшы иштешет. Программалык камсыздоо ыкмасы жүк баланстоочуну чөйрөңүздүн так талаптарына ылайыкташтырууга мүмкүндүк берет. Көбөйтүлгөн ийкемдүүлүк жүк балансын орнотууга кеткен кошумча убакыттын эсебинен келип чыгышы мүмкүн.
Программалык камсыздоо баланстоочулары сизге көбүрөөк жабык кутуча мамилеси бар аппараттык жабдыктарга караганда модификацияларды жана жаңыртууларды жасоо үчүн көбүрөөк ийкемдүүлүктү камсыз кылат. Алдын ала таңгакталган виртуалдык машиналар программалык жүктөмдү тең салмактоочу (VM) катары колдонулушу мүмкүн. Виртуалдык машиналар сизге жөндөө убактысын үнөмдөйт, бирок алардын аппараттык кесиптештеринде жеткиликтүү болгон бардык функциялар жок болушу мүмкүн.
Жөнөкөй жүк балансын ишке ашыруу
Биз Spring Cloud китепканасын колдонобуз колдонмолорду куруу жүк-салмактуу түрдө башка колдонмолорго туташуу. Алыскы тейлөө өтүнүчтөрүн иштеп чыгууда, биз каалаган техниканы колдонуу менен жүк балансын оңой түзө алабыз. Мисал катары төмөнкү кодду карап көрөлү. Биз негизги сервердик тиркемеден баштайбыз.
Серверде бир гана HTTP акыркы чекити болот жана бир нече учурларда иштетилет. Андан кийин биз бир нече сервер инстанциялары боюнча суроо-талаптарды жайылтуу үчүн Load Balancer колдонгон кардар колдонмосун курабыз.
Server
Биз негизги менен баштайбыз Жазгы жүктөө биздин мисал серверибиз үчүн колдонмо:
Баштоо үчүн, instance_ID деп аталган өзгөчөлөштүрүлүүчү өзгөрмө киргизебиз. Бул бизге иштеп жаткан көптөгөн учурларды айырмалоого жардам берет. Андан кийин, биз билдирүүнү жана инстанциянын идентификаторун кайтарган бирдиктүү HTTP GET акыркы чекитин түзөбүз.
ID 1 менен демейки инстанция 8080 портунда иштейт. Экинчи инстанцияны ишке киргизүү үчүн бир нече программанын параметрлерин гана кошуш керек:
керектөөчү
Эми кардар кодун карап көрөлү. Бул жерде Load Balancer кирет, андыктан аны колдонмобузга киргизүү менен баштайлы:
Андан кийин биз ServiceInstanceListSupplier ишке ашырууну иштеп чыгабыз. Бул Load Balancerдеги эң маанилүү интерфейстердин бири. Ал жеткиликтүү тейлөө инстанцияларын кантип табаарыбызды көрсөтөт.
Үлгү колдонмобузда үлгү серверибиздин эки өзүнчө инстанциясын катаал коддойбуз. Алар бир эле системада иштешет, бирок өзүнчө портторду колдонушат:
Азыр LoadBalancerConfiguration классын түзүңүз:
Бул класстын бир гана максаты бар: ал алыскы суроо-талаптарды жасоо үчүн жүктөм тең салмакталган WebClient куруучуну түзөт. Биздин аннотацияда кызмат үчүн ойдон чыгарылган аталыш колдонулат.
Мунун себеби, биз инстанцияларды иштетүү үчүн так хост аттарын жана портторун алдын ала билбешибиз мүмкүн. Натыйжада, биз жасалма аталышты толтургуч катары колдонобуз жана алкак иштеп жаткан инстанцияны тандаганда анык маалыматты алмаштырат.
Андан кийин, келгиле, Конфигурация классын түзөлү, ал биздин кызмат көрсөтүү инстанциясын камсыздоону баштоо үчүн колдонулат. Эсиңизде болсун, биз мурункудай эле лакап аттарды колдонобуз:
Эми биз чыныгы кардар тиркемесин кура алабыз. Мурунку WebClient төө буурчагы менен үлгү серверине 10 суроо жөнөтөлү:
Жыйынтыктан биз эки башка инстанциянын ортосунда жүктү тең салмактап жатканыбызды көрө алабыз:
Микросервистерде жүктөөнү теңдөө
Микросервис архитектурасы Netflix жана Amazon сыяктуу бир нече компаниялар тарабынан эркин туташкан кызматтардын жыйындысы катары бизнес тиркемелерди иштеп чыгуу үчүн колдонулат. Татаал колдонмолор үчүн гипер масштабдуу жана үзгүлтүксүз жеткирүү - бул бөлүштүрүлгөн, эркин байланышкан архитектурага өтүүнүн эки гана себеби.
Бул ишканалардын командалары тиркемелерди тезирээк жана салттуу ыкмаларга караганда азыраак ийгиликсиз чыгаруу үчүн Agile жана DevOps стратегияларын ишке ашырышты. Бирок, сиз бөлүштүрүлгөн архитектуранын татаалдыгы менен колдонмонун талаптары, масштаб талаптары жана рынокко чыгуу убактысынын чектөөлөрүнүн ортосунда тең салмактуулукту сакташыңыз керек.
Көп жылдар бою тиркемелерди жеткирүү контроллерлору (ADCs) жергиликтүү же булуттагы корпоративдик тиркемелер үчүн тейлөө деңгээлиндеги талаптарды канааттандыруу үчүн маанилүү болуп келген. Микросервистерге негизделген тиркеме менен алектенген кардар кардарды жана микросервистерди өз алдынча өстүрүү үчүн аны камсыз кылган инстанциялар жөнүндө билиши керек эмес.
Бул тескери прокси же жүк баланстоочу тарабынан камсыздалган ажыратуу. Дагы бир жолу, жүк балансы микросервистердин суроо-талапты, коопсуздукту жана жеткиликтүүлүктү чече аларын камсыз кылуу үчүн чечим болуп саналат.
Кардар менен микросервистерге негизделген колдонмолордун ортосундагы Түндүк-Түштүк жүктөмүнүн тең салмактуулугун горизонталдуу масштабдашуу үчүн Чыгыш-Батыш жайгаштыруу менен айкалыштырганыңызда, сиз олуттуу күчкө ээ болосуз. Максаты IT талап кылган коопсуз жана жөнгө салынган чөйрөнү өнүктүрүүнүн шамдагайлыгын жоготпостон сактап калуу DevOps автоматташтыруу талаптар.
пайдасы
Жүктөлүштүн тең салмактуулугу ресурстарды пайдаланууну, берилиштерди жеткирүүнү жана жогорку трафиги бар веб-сайттар жана колдонмолор үчүн жооп берүү убактысын, ошондой эле көп сандагы суроону алган маалымат базаларын жакшыртуу аркылуу ар кандай артыкчылыктарды берет. Жүктөлүштүн тең салмактуулугу трафик көп болгон сценарийлерде колдонуучунун суроо-талаптары тез жана туура аткарылышын камсыздайт.
Алар колдонуучуларды жалкоо программалар жана ресурстар менен иштөөнүн оорлошуусунан куткарат. Жүктүн тең салмактуулугу ошондой эле иштебей калуудан качууга жана коопсуздукту жөнөкөйлөштүрүүгө жардам берип, сиздин компанияңыз үчүн өндүрүмдүүлүктү жана кирешени жоготуу коркунучун азайтат.
- Жүктөлүштүн тең салмактуулугу оптималдуу эффективдүүлүк үчүн трафикти башкаруудан тышкары, суроо-талапка жараша серверлерди кошуу жана алып салуу ийкемдүүлүгүн камсыз кылат. Техникалык тейлөө учурунда трафик башка серверлерге бурулгандыктан, колдонуучуларды үзгүлтүккө учуратпастан серверди тейлөөгө да болот.
- Жүктөлүштүн тең салмактуулугу серверлердин топтому арасында трафикти бөлүштүрүү менен камтылган ашыкчаны камсыз кылат. Эгер бирөө иштебей калса, жүктү дароо башка серверлерге буруп, колдонуучуларга тийгизген таасирин азайта аласыз.
- Тиркеме же веб-сайттын колдонулушу өссө, натыйжалуу иштетилбесе, трафиктин көбөйүшү анын иштешин начарлатышы мүмкүн. Жүктөлүштү теңдөө менен сиз кызматты үзгүлтүккө учуратпастан суроо-талапты канааттандыруу үчүн реалдуу же виртуалдык серверди кошо аласыз. Жүктөлгөн баланстоочу жаңы серверлерди онлайнга киргенде аныктайт жана аларды операцияга оңой эле киргизет. Бул ыкма веб-сайтты ашыкча жүктөгөн серверден жаңысына көчүрүүдөн жакшыраак, ал көбүнчө бир аз иштебей калууларды камтыйт.
жыйынтыктоо
Жүктөлүштүн тең салмактуулугу заманбап, каталарга чыдамдуу системалардын маанилүү компоненти болуп саналат. Биз жөн гана ар кандай жүктөрдү тең салмактоо ыкмаларын колдонуу менен бир нече тейлөө инстанцияларына суроо-талаптарды тараткан колдонмолорду түзө алабыз. Тиркемелерди коопсуз камсыз кылуу үчүн ишканалар татаал IT системаларын колдоого алышы керек.
Домендер аралык микросервистерди конфигурациялоо, жайылтуу жана тейлөө катага жакын, кымбат жана көп убакытты талап кылышы мүмкүн. IT бул микросервистерди орнотууну жана тейлөөнү жеңилдетүү үчүн алардын ийкемдүү жана DevOps процесстерине шайкеш келген автоматташтыруу, көрүнөөлүк, аналитика жана оркестрдин мыкты тажрыйбаларын жана технологияларын колдонушу керек.
Таштап Жооп