Mundarija[Yashirish][Show]
Ilovalarning mavjudligi hech qachon bugungidek jiddiy qabul qilinmagan, chunki biz ilovalardan shunchaki muloqot qilishdan ko'ra ko'proq foydalanamiz, xoh shaxsiy yoki professional, xoh ilovalar biznes bo'lsa.
Doimiy ravishda onlayn bo'lmagan yoki barqaror bo'lmagan ilovalar o'z foydalanuvchilarini va dolzarbligini yo'qotadi va oxir-oqibat eskiradi. Bu bir lahzada sodir bo'ldi. Internet hech qachon uxlamaydi va kuniga 24 soat, haftada 7 kun ishlaydi, xuddi shu fikr ilovalarga ham tegishli bo'lishi kerak.
Buni amalga oshirish va ilovalar mavjudligini ta'minlash uchun masshtablilik juda muhimdir. Yukni muvozanatlash mavjudlikni ta'minlashning eng muhim tarkibiy qismlaridan biridir. Ko'p odamlar hali ham yuk muvozanatini oddiy skript yordamida amalga oshirish mumkinligiga ishonishadi.
Biroq, bunday emas. Faqatgina u butun dunyo bo'ylab dasturlarga - istalgan vaqtda va istalgan qurilmadan kirishni ta'minlaydi.
Ushbu postda biz yuklarni muvozanatlash, uning algoritmlari va mikroservislar bilan qanday bog'liqligini va boshqa narsalarni chuqur ko'rib chiqamiz. Keling, boshlaymiz!
Yukni muvozanatlash nima?
Veb-sayt yoki biznes ilovasiga talab ortib borayotganligi sababli, tez orada bitta server butun yukni ko'tara olmaydi. Tashkilotlar talabni qondirish uchun ish yukini ko'plab serverlar bo'ylab taqsimlaydi. "Yuklarni muvozanatlash" deb nomlanuvchi bu usul bitta serverni haddan tashqari yuklanishidan saqlaydi, bu esa uning sekinlashishiga, so'rovlarning tushishiga yoki hatto ishdan chiqishiga olib kelishi mumkin.
Resursning haddan tashqari yuklanishi tufayli nosozlikni oldini olish uchun yuk balansi tarmoq trafigini teng taqsimlaydi. Ilovalar, veb-saytlar, ma'lumotlar bazalari va boshqa kompyuter resurslari ushbu usul yordamida yaxshiroq ishlaydi va ko'proq mavjud. Shuningdek, u foydalanuvchi so'rovlarini to'g'ri va o'z vaqtida qayta ishlashga yordam beradi.
Foydalanuvchi nuqtai nazaridan, yukni muvozanatlash mijoz va serverlar to'plami o'rtasida ko'rinmas vositachi bo'lib xizmat qiladi va ulanish so'rovlari to'xtatilmasligini ta'minlaydi. Ilovalar, veb-saytlar, ma'lumotlar bazalari va onlayn xizmatlar, agar yukni muvozanatlashtirmasdan talab juda katta bo'lsa, qulashi mumkin.
Yuz minglab foydalanuvchi so'rovlari bir vaqtning o'zida yuqori trafikli bitta veb-saytga yuborilishi mumkin. Veb-sahifalarni matn, tasvir, video va audio oqimlari kabi so'ralgan tarkib bilan to'g'ri to'ldirish uchun bir nechta serverlar talab qilinadi. Yuklarni muvozanatlash odatda yuqori trafikli veb-sayt server fermalarida, shuningdek DNS serverlarida, ma'lumotlar bazalarida va Fayl uzatish protokoli (FTP) saytlarida qo'llaniladi.
Agar bitta server haddan tashqari yuklangan bo'lsa, u yomon ishlashi yoki hatto ishdan chiqishi mumkin. Yuk balanslagichlari foydalanuvchi so'rovlarini serverlar to'plami o'rtasida teng taqsimlash orqali ishlamay qolish ehtimolini kamaytiradi. Agar guruhdagi serverlardan biri ishlamay qolsa, trafik guruhdagi boshqa serverlarga qayta yo'naltiriladi. Yuk balanslagichi avtomatik ravishda yangi serverlarni server hovuziga qo'shilganda trafikni taqsimlash jarayonida qo'shadi.
Yuk balansi qanday ishlaydi?
U quyidagicha ishlaydi:
- Mijoz so'rovni, masalan, brauzer yoki dastur orqali qabul qilganda, u serverga ulanishga harakat qiladi.
- Yuk balanslagichi so'rovni qabul qilganda, uni algoritm (yoki ferma) tomonidan o'rnatilgan naqshlar asosida server guruhidagi serverlardan biriga yo'naltiradi.
- Server ulanish so'rovini oladi va mijozga yuk balansi orqali javob beradi.
- Yuk balanslagichi javobni olganida, u mijozning IP-manzilini tanlangan serverning IP-manziliga moslashtiradi. Shundan so'ng, javob paket bilan uzatiladi.
- SSL o'chirish - bu serverlarga kerak bo'lmasligi uchun Security Socket Layer shifrlash protokoli yordamida ma'lumotlarni shifrlash jarayoni.
- Jarayon sessiya tugaguncha takrorlanadi.
Yuklarni muvozanatlash usullari
Server fermasidagi serverlardan qaysi biri keyingi so'rovni olishini tanlash uchun har bir yuk balanslash texnikasi bir qator mezonlardan foydalanadi. Yukni muvozanatlashning beshta tipik yondashuvi mavjud:
- Dumaloq Robin: Bu birlamchi yondashuv boʻlib, u xuddi koʻringandek ishlaydi. Yuk balanslagichi so'rovlarni guruhdagi birinchi serverdan boshlab va pastga qarab, yana chaqirilishini kutadigan aylanuvchi shaklda tarqatadi. Ushbu usul har bir server taxminan bir xil miqdordagi ulanishlarni boshqarishini ta'minlaydi.
- Og'irlangan Round Robin: Ushbu yondashuv har bir serverga odatda uning sig'imiga mutanosib bo'lgan vazn (yoki afzallik) belgilaydi. Server qancha ko'p so'rovlarni qabul qilsa, og'irlik shunchalik yuqori bo'ladi. Masalan, vazni ikkiga teng bo'lgan server og'irlik qiymati bir bo'lgan serverga qaraganda ikki barobar ko'p so'rovlarni oladi.
- Yopishqoq sessiya: Seans davomiyligi sifatida ham tanilgan ushbu yondashuv seans davomida ma'lum mijozlar va serverlarni bog'laydi. Bog'lanishni o'rnatish uchun yuk balanslagichi cookie faylidan yoki foydalanuvchi atributini aniqlash uchun foydalanuvchining IP manzilidan foydalanadi. Ulanish o'rnatilgandan so'ng, foydalanuvchi so'rovlari sessiya tugaguniga qadar bir xil serverga yo'naltiriladi. Bu tarmoq resurslarini optimallashtiradi, shu bilan birga foydalanuvchi tajribasini yaxshilaydi.
- Eng kam ulanishlar: Ushbu strategiya barcha so'rovlar teng server yukiga olib kelishini nazarda tutadi. Natijada, so'rovlar soni eng kam bo'lgan server keyingi so'rovni oladi.
- IP xash: Bu algoritm mijoz va serverning manba va maqsad IP manzillariga asoslangan noyob xesh kalitini yaratadi. Kalit so'rovni yo'naltirish uchun ishlatiladi va bir xil server bilan uzilgan ulanishni qayta tiklashga imkon beradi.
Uskuna va boshqalar. Dasturiy ta'minot yuk balansi
Uskuna yuk balansi
Jihoz kabi jismoniy qurilmalar apparat yukini muvozanatlashtirgichlarni tashkil qiladi. Bu mavjud ulanishlar soni, protsessordan foydalanish va server unumdorligi kabi omillarga qarab serverlarga trafikni yo'naltiradi. Uskuna yukini muvozanatlash moslamalarida yangi versiyalar va xavfsizlik tuzatishlari mavjud bo'lganda saqlanishi va yangilanishi kerak bo'lgan xususiy proshivka mavjud.
Uskuna yuk balanslagichlari ko'pincha yuqori mahsuldorlik va boshqaruvni, shuningdek, Kerberos autentifikatsiyasi va SSL apparat tezlashuvi kabi kengroq imkoniyatlarni ta'minlaydi, ammo ular boshqaruv va texnik xizmat ko'rsatish bo'yicha ma'lum darajadagi tajribani talab qiladi. Uskuna yuk balanslagichlari dasturiy yuk balanslagichlariga qaraganda kamroq moslashuvchan va kengaytiriladigan bo'lganligi sababli, apparat yuk balanslagichlarini ortiqcha ta'minlashga moyillik mavjud.
Dasturiy ta'minot yuk balansi
Dasturiy ta'minot yuk balanslagichlarini o'rnatish, odatda, apparatdagi hamkasblariga qaraganda osonroq. Ular, shuningdek, tejamkorroq va moslashuvchan va dasturiy ta'minotni ishlab chiqish muhitlari bilan yaxshi ishlaydi. Dasturiy ta'minot usuli yuk balanslagichini sizning muhitingizning aniq talablariga moslashtirishga imkon beradi. Moslashuvchanlikning oshishi yuk balanslagichini o'rnatish uchun sarflangan qo'shimcha vaqt hisobiga paydo bo'lishi mumkin.
Dasturiy ta'minot balanslagichlari sizga ko'proq yopiq quti yondashuviga ega bo'lgan apparat vositalariga qaraganda o'zgartirish va yangilanishlarni amalga oshirish uchun ko'proq moslashuvchanlikni ta'minlaydi. Oldindan paketlangan virtual mashinalar dasturiy ta'minot yukini muvozanatlashtiruvchi (VM) sifatida ishlatilishi mumkin. Virtual mashinalar sozlash vaqtini tejaydi, lekin ular o'zlarining apparatdagi hamkasblarida mavjud bo'lgan barcha funksiyalarga ega bo'lmasligi mumkin.
Oddiy yuk balansini amalga oshirish
Biz Spring Cloud kutubxonasidan foydalanamiz ilovalar yaratish yukni muvozanatlashgan holda boshqa ilovalarga ulanadi. Masofaviy xizmat ko'rsatish so'rovlarini ko'rib chiqayotganda, biz o'zimizga yoqqan texnikadan foydalangan holda yuk muvozanatini osongina qurishimiz mumkin. Misol sifatida quyidagi kodni ko'rib chiqing. Biz asosiy server ilovasidan boshlaymiz.
Server faqat bitta HTTP so'nggi nuqtasiga ega bo'ladi va bir nechta holatlarda ishlaydi. Keyin biz bir nechta server misollari bo'ylab so'rovlarni tarqatish uchun Load Balancer-dan foydalanadigan mijoz ilovasini yaratamiz.
Server
Biz asosiy narsadan boshlaymiz Bahorgi yuklash misol serverimiz uchun ilova:
Boshlash uchun biz instance_ID deb nomlangan moslashtirilgan o'zgaruvchini kiritamiz. Bu ishlayotgan ko'plab misollarni ajratishga yordam beradi. Shundan so'ng, biz xabar va misol identifikatorini qaytaradigan yagona HTTP GET so'nggi nuqtasini yaratamiz.
ID 1 bilan standart namuna 8080 portda ishlaydi. Ikkinchi nusxani ishga tushirish uchun faqat bir nechta dastur parametrlarini qo‘shishimiz kerak:
mijoz
Keling, mijoz kodini ko'rib chiqaylik. Bu erda Load Balancer kiradi, shuning uchun uni ilovamizga kiritishdan boshlaylik:
Shundan so'ng biz ServiceInstanceListSupplier dasturini ishlab chiqamiz. Bu Load Balancer-dagi eng muhim interfeyslardan biridir. U kirish mumkin bo'lgan xizmat misollarini qanday topishimizni belgilaydi.
Biz namunaviy ilovamizda misol serverimizning ikkita alohida nusxasini qattiq kodlaymiz. Ular bir xil tizimda ishlaydi, lekin alohida portlardan foydalanadi:
Endi LoadBalancerConfiguration sinfini yarating:
Bu sinfning faqat bitta maqsadi bor: u masofaviy so'rovlarni amalga oshirish uchun yukni muvozanatlashgan WebClient quruvchisini yaratadi. Bizning izohimiz xizmat uchun xayoliy nomdan foydalanadi.
Buning sababi, biz oldindan aniq host nomlari va misollarni ishga tushirish uchun portlarni bilmasligimiz mumkin. Natijada, biz to'ldiruvchi sifatida xayoliy nomdan foydalanamiz va ramka ishlaydigan misolni tanlaganda haqiqiy ma'lumotni almashtiradi.
Keyinchalik, xizmat ko'rsatish namunasini taqdim etish uchun ishlatiladigan Konfiguratsiya sinfini yarataylik. E'tibor bering, biz avvalgidek bir xil taxallusdan foydalanamiz:
Endi biz haqiqiy mijoz ilovasini yaratishimiz mumkin. Keling, WebClient fasolidan foydalangan holda namuna serveriga 10 ta so'rov yuboraylik:
Natijadan biz ikkita alohida misol o'rtasida yukni muvozanatlashtirayotganimizni ko'rishimiz mumkin:
Mikroservislarda yuklarni muvozanatlash
Mikroservis arxitekturasi Netflix va Amazon kabi bir nechta kompaniyalar tomonidan erkin bog'langan xizmatlar to'plami sifatida biznes ilovalarini ishlab chiqish uchun foydalaniladi. Murakkab ilovalar uchun yuqori miqyosli va uzluksiz yetkazib berish ushbu taqsimlangan, erkin bog'langan arxitekturaga o'tishning faqat ikkita sababidir.
Ushbu korxonalar jamoalari ilovalarni an'anaviy usullarga qaraganda tezroq va kamroq muvaffaqiyatsizlik bilan ishlab chiqarish uchun Agile va DevOps strategiyalarini amalga oshirdilar. Biroq, siz taqsimlangan arxitekturaning murakkabligi va dastur talablari, o'lchov talablari va bozorga chiqish vaqtini cheklashlar o'rtasida muvozanatni saqlashingiz kerak.
Ko'p yillar davomida ilovalarni etkazib berish kontrollerlari (ADC) mahalliy yoki bulutda joylashtirilgan korporativ ilovalar uchun xizmat ko'rsatish darajasidagi talablarni qondirish uchun juda muhim bo'lib kelgan. Mikroservislarga asoslangan dastur bilan shug'ullanadigan mijoz mijoz va mikroservislarni mustaqil ravishda rivojlantirish uchun uni taqdim etayotgan holatlar haqida bilishi shart emas.
Bu aynan teskari proksi-server yoki yuk balansi tomonidan taqdim etilgan ajratish. Shunga qaramay, yuk balansi mikroservislar talab, xavfsizlik va mavjudlik bilan shug'ullanishini ta'minlash uchun yechimdir.
Mijoz va mikroservislarga asoslangan ilovalar oʻrtasida anʼanaviy Shimol-Janub yuk muvozanatini gorizontal oʻlchash uchun Sharq-Gʻarb oʻrnatish bilan birlashtirganingizda, siz sezilarli oʻsishga erishasiz. Maqsad IT tomonidan talab qilinadigan xavfsiz va tartibga solinadigan muhitni rivojlanish tezligini yo'qotmasdan saqlab qolishdir DevOps avtomatizatsiyasi Talablar.
foydasi
Yuklarni muvozanatlash resursdan foydalanish, ma'lumotlarni yetkazib berish va yuqori trafikli veb-saytlar va ilovalar uchun javob berish vaqtini yaxshilash orqali, shuningdek, ko'p sonli so'rovlarni oladigan ma'lumotlar bazalarini ta'minlaydi. Yuklarni muvozanatlash yuqori trafikli stsenariylarda foydalanuvchi so'rovlarining tez va to'g'ri bajarilishini ta'minlaydi.
Ular foydalanuvchilarni sust dasturlar va resurslar bilan ishlashni og'irlashtirishdan qutqaradi. Yuklarni muvozanatlash, shuningdek, ishlamay qolishdan qochish va xavfsizlikni soddalashtirish, kompaniyangiz uchun unumdorlik va daromadlarni yo'qotish xavfini kamaytirishga yordam beradi.
- Yuklarni muvozanatlash optimal samaradorlik uchun trafikni boshqarishdan tashqari, talabga ko'ra serverlarni qo'shish va o'chirish uchun moslashuvchanlikni ta'minlaydi. Texnik xizmat ko'rsatish vaqtida trafik boshqa serverlarga yo'naltirilganligi sababli, foydalanuvchilarga xalaqit bermasdan serverga texnik xizmat ko'rsatish ham mumkin.
- Yuklarni muvozanatlash trafikni serverlar to'plamiga bo'lish orqali o'rnatilgan ortiqchalikni ta'minlaydi. Agar bitta server muvaffaqiyatsiz bo'lsa, siz darhol yukni boshqa serverlarga yo'naltirishingiz mumkin, bu esa foydalanuvchilarga ta'sirni kamaytiradi.
- Agar ilova yoki veb-saytdan foydalanish ortib borayotgan bo'lsa, samarali ishlov berilmasa, ortib borayotgan trafik uning ish faoliyatini yomonlashtirishi mumkin. Yukni muvozanatlash bilan siz xizmatni buzmasdan talabni qondirish uchun haqiqiy yoki virtual serverni qo'shishingiz mumkin. Yuk balanslagichi yangi serverlarni ular onlayn bo'lganda aniqlaydi va ularni operatsiyaga osonlikcha kiritadi. Ushbu usul veb-saytni haddan tashqari yuklangan serverdan yangisiga ko'chirishdan ko'ra afzalroqdir, bu ko'pincha biroz ishlamay qolishni o'z ichiga oladi.
Xulosa
Yuklarni muvozanatlash zamonaviy, nosozliklarga chidamli tizimlarning muhim tarkibiy qismidir. Biz turli xil yuklarni muvozanatlash yondashuvlaridan foydalangan holda so'rovlarni bir nechta xizmat ko'rsatish misollariga tarqatadigan ilovalarni yaratishimiz mumkin. Ilovalarni xavfsiz ta'minlash uchun korxonalar murakkab IT tizimlarini qo'llab-quvvatlashlari kerak.
Domenlararo mikroxizmatlarni sozlash, joylashtirish va texnik xizmat ko'rsatish xatolarga moyil, qimmat va ko'p vaqt talab qilishi mumkin. AT ushbu mikroservislarni sozlash va ularga xizmat ko'rsatishni osonlashtirish uchun ularning tezkor va DevOps jarayonlariga mos keladigan avtomatlashtirish, ko'rinish, tahlil va orkestrlashning eng yaxshi amaliyotlari va texnologiyalaridan foydalanishi kerak.
Leave a Reply