Гарчиг[Нуух][Үзүүлэх]
Аппликешнүүдийг хувийн болон мэргэжлийн аль алиных нь хувьд, мөн бизнесийнх нь хувьд зөвхөн харилцаа холбоонд ашиглахаас илүүтэйгээр ашиглахад өнөөдрийнх шиг ийм нухацтай авч үзэж байгаагүй.
Байнга онлайн байдаггүй, эсвэл тогтворгүй байдаг программууд нь хэрэглэгчид болон хамаарлаа алдаж, улмаар хуучирдаг. Энэ нь гэнэт тохиолдсон. Интернэт хэзээ ч унтдаггүй бөгөөд 24 хоногийн 7 өдөр, XNUMX цагийн турш ажилладаг тул ижил санаа нь програмуудад хэрэгжих ёстой.
Өргөтгөх чадвар нь үүнийг хийх, програмын хүртээмжийг баталгаажуулахад чухал ач холбогдолтой. Ачааллыг тэнцвэржүүлэх нь бэлэн байдлыг хангах хамгийн чухал бүрэлдэхүүн хэсгүүдийн нэг юм. Ачааллын тэнцвэрийг энгийн скриптээр хийж болно гэдэгт олон хүмүүс итгэдэг.
Гэсэн хэдий ч энэ нь тийм биш юм. Зөвхөн энэ нь дэлхийн өнцөг булан бүрээс ямар ч үед, ямар ч төхөөрөмжөөс програмуудад хандах боломжийг олгодог.
Энэ нийтлэлд бид ачааллын тэнцвэржүүлэлт, түүний алгоритмууд, микро үйлчилгээтэй хэрхэн холбогдож байгааг нарийвчлан авч үзэх болно. Эхэлцгээе!
Ачаалал тэнцвэржүүлэх гэж юу вэ?
Вэбсайт эсвэл бизнесийн хэрэглээний эрэлт хэрэгцээ өсөхийн хэрээр нэг сервер удахгүй бүх ачааллыг даах боломжгүй болно. Байгууллагууд эрэлт хэрэгцээг хангахын тулд ажлын ачааллыг олон серверт хуваарилдаг. "Ачаалал тэнцвэржүүлэх" гэж нэрлэгддэг энэ арга нь нэг серверийг хэт ачааллаас хамгаалдаг бөгөөд энэ нь удаашрах, хүсэлт гаргах, бүр гацахад хүргэдэг.
Ачаалал тэнцвэржүүлэх нь нөөцийн хэт ачааллаас болж бүтэлгүйтэхээс зайлсхийхийн тулд сүлжээний урсгалыг тэнцүү хуваарилдаг. Програмууд, вэбсайтууд, мэдээллийн сан болон бусад компьютерийн нөөцүүд энэ аргыг ашиглан илүү сайн ажилладаг бөгөөд илүү боломжтой байдаг. Энэ нь мөн хэрэглэгчийн хүсэлтийг зөв, цаг тухайд нь боловсруулахад тусалдаг.
Хэрэглэгчийн үүднээс авч үзвэл ачааллыг тэнцвэржүүлэх нь үйлчлүүлэгч болон серверүүдийн цуглуулгын хооронд үл үзэгдэх зуучлагч болж, холболтын хүсэлтийг тасалдуулахгүй байхыг баталгаажуулдаг. Ачаалал тэнцвэржүүлэхгүйгээр эрэлт хэрэгцээ хэт ихэсвэл програмууд, вэбсайтууд, мэдээллийн сан, онлайн үйлчилгээнүүд сүйрэх магадлалтай.
Хэдэн зуун мянган хэрэглэгчийн хүсэлтийг нэгэн зэрэг өндөр ачаалалтай вэб сайт руу илгээх боломжтой. Текст, зураг, видео, аудио дамжуулалт гэх мэт хүссэн контентоор вэб хуудсыг зөв бөглөхийн тулд олон сервер шаардлагатай. Ачаалал тэнцвэржүүлэх нь ихэвчлэн өндөр ачаалалтай вэб сайт серверийн фермүүд, түүнчлэн DNS серверүүд, мэдээллийн сан, файл дамжуулах протокол (FTP) сайтуудад ашиглагддаг.
Хэрэв нэг сервер хэт ачаалалтай байвал энэ нь муу ажиллах эсвэл бүр сүйрэх магадлалтай. Ачаалал тэнцвэржүүлэгч нь хэрэглэгчийн хүсэлтийг серверүүдийн цуглуулгад жигд хуваарилах замаар сул зогсолтын боломжийг бууруулдаг. Хэрэв бүлгийн серверүүдийн аль нэг нь ажиллахаа больсон бол урсгалыг бүлгийн бусад серверүүд рүү шилжүүлнэ. Ачаалал тэнцвэржүүлэгч нь шинэ серверүүдийг серверийн санд нэмэх үед траффик түгээлтийн процесст автоматаар нэмдэг.
Ачаалал тэнцвэржүүлэх нь хэрхэн ажилладаг вэ?
Энэ нь дараах байдлаар ажилладаг.
- Үйлчлүүлэгч нь хөтөч эсвэл програмаар дамжуулан хүсэлт хүлээн авах үед сервертэй холбогдохыг оролддог.
- Ачаалал тэнцвэржүүлэгч хүсэлтийг хүлээн авахдаа алгоритмын (эсвэл фермийн) тогтоосон загварт үндэслэн серверийн бүлгийн аль нэг сервер рүү чиглүүлдэг.
- Сервер нь холболтын хүсэлтийг хүлээн авч, ачааллын тэнцвэржүүлэгчээр дамжуулан үйлчлүүлэгчид хариулдаг.
- Ачаалал тэнцвэржүүлэгч хариуг хүлээн авснаар үйлчлүүлэгчийн IP хаягийг сонгосон серверийн IP хаягтай тааруулна. Үүний дараа хариултыг багцаар дамжуулна.
- SSL унтраах нь серверүүд үүнийг хийх шаардлагагүй болохын тулд Security Socket Layer шифрлэлтийн протоколыг ашиглан өгөгдлийг тайлах үйл явц юм.
- Хурал дуусах хүртэл процесс давтагдана.
Ачааллыг тэнцвэржүүлэх аргууд
Серверийн ферм дэх серверүүдийн аль нь дараагийн хүсэлтийг хүлээн авахыг сонгохын тулд ачааллыг тэнцвэржүүлэх техник бүр нь олон шалгуурыг ашигладаг. Ачааллыг тэнцвэржүүлэх таван энгийн арга байдаг:
- Тойрон Эргэх: Энэ бол анхдагч арга бөгөөд яг сонсогдож байгаа шигээ ажилладаг. Ачаалал тэнцвэржүүлэгч нь бүлгийн эхний серверээс эхлээд доод тал руугаа эргэдэг загвараар хүсэлтийг хуваарилж, дахин дуудагдахыг хүлээнэ. Энэ арга нь сервер бүр ойролцоогоор ижил тооны холболттой байхыг баталгаажуулдаг.
- Жинтэй дугуй Робин: Энэ арга нь сервер бүрд ерөнхийдөө хүчин чадалтай нь пропорциональ жин (эсвэл давуу тал) оноодог. Сервер илүү их хүсэлт хүлээн авах тусам жин өндөр болно. Жишээлбэл, жингийн хоёр утгатай сервер нь нэг жинтэй серверээс хоёр дахин их хүсэлт хүлээн авдаг.
- Наалттай сесс: Энэ арга нь сессийн тогтвортой байдал гэгддэг бөгөөд сессийн туршид тодорхой үйлчлүүлэгч болон серверүүдийг холбодог. Холбоосыг бий болгохын тулд ачаалал тэнцвэржүүлэгч нь хэрэглэгчийн шинж чанарыг тодорхойлохын тулд күүки эсвэл хэрэглэгчийн IP хаягийг ашигладаг. Холболт дууссаны дараа хэрэглэгчийн хүсэлтийг сесс дуусах хүртэл нэг сервер рүү чиглүүлнэ. Энэ нь сүлжээний нөөцийг оновчтой болгохын зэрэгцээ хэрэглэгчийн туршлагыг сайжруулдаг.
- Хамгийн бага холболт: Энэ стратеги нь бүх хүсэлт нь серверийн ачааллыг тэнцүү болгодог гэж үздэг. Үүний үр дүнд хамгийн бага хүсэлттэй сервер дараагийн хүсэлтийг хүлээн авдаг.
- IP хэш: Энэ алгоритм нь үйлчлүүлэгч болон серверийн эх сурвалж болон очих IP хаяг дээр тулгуурлан өвөрмөц хэш түлхүүр үүсгэдэг. Түлхүүрийг хүсэлтийг чиглүүлэхэд ашигладаг бөгөөд ижил сервертэй тасарсан холболтыг сэргээх боломжийг олгодог.
Техник хангамж Vs. Програм хангамжийн ачаалал тэнцвэржүүлэгч
Тоног төхөөрөмжийн ачаалал тэнцвэржүүлэгч
Тоног төхөөрөмж гэх мэт физик тоног төхөөрөмж нь тоног төхөөрөмжийн ачааллын тэнцвэржүүлэгчийг бүрдүүлдэг. Эдгээр нь одоо байгаа холболтын тоо, процессорын хэрэглээ, серверийн гүйцэтгэл зэрэг хүчин зүйлээс хамаарч сервер рүү траффикийг чиглүүлдэг. Техник хангамжийн ачааллын тэнцвэржүүлэгчид шинэ хувилбарууд болон аюулгүй байдлын засварууд гарах үед засвар үйлчилгээ хийх, шинэчлэх шаардлагатай хувийн програм хангамжтай байдаг.
Техник хангамжийн ачааллын тэнцвэржүүлэгч нь ихэвчлэн илүү өндөр гүйцэтгэл, хяналт, түүнчлэн Kerberos нэвтрэлт танилт, SSL техник хангамжийн хурдатгал зэрэг илүү өргөн хүрээний чадамжийг өгдөг боловч зарим түвшний удирдлага, засвар үйлчилгээний мэдлэг шаарддаг. Техник хангамжийн ачаалал тэнцвэржүүлэгч нь програм хангамжийн ачаалал тэнцвэржүүлэгчээс бага уян хатан, өргөтгөх чадвартай байдаг тул техник хангамжийн ачаалал тэнцвэржүүлэгчийг хэт ихээр хангах хандлагатай байдаг.
Програм хангамжийн ачааллын тэнцвэржүүлэгч
Програм хангамжийн ачааллын тэнцвэржүүлэгчийг тохируулах нь техник хангамжийнхаас илүү хялбар байдаг. Эдгээр нь илүү хэмнэлттэй, дасан зохицох чадвартай бөгөөд програм хангамж хөгжүүлэх орчинд сайн ажилладаг. Програм хангамжийн арга нь ачааллын тэнцвэржүүлэгчийг хүрээлэн буй орчны шаардлагад нийцүүлэн тохируулах боломжийг танд олгоно. Уян хатан байдлыг нэмэгдүүлэх нь ачаалал тэнцвэржүүлэгчийг тохируулахад зарцуулсан нэмэлт цаг хугацаанаас үүдэлтэй байж болно.
Програм хангамжийн тэнцвэржүүлэгч нь илүү хаалттай арга барилтай техник хангамжаас илүү өөрчлөлт, шинэчлэлт хийх уян хатан байдлыг хангадаг. Урьдчилан савласан виртуал машинуудыг програм хангамжийн ачааллын тэнцвэржүүлэгч (VM) болгон ашиглаж болно. Виртуал машинууд нь танд тохируулах цагийг хэмнэх болно, гэхдээ тэдгээрт техник хангамжийн бүх функцууд байхгүй байж магадгүй юм.
Ачааллыг тэнцвэржүүлэх энгийн хэрэгжилт
Бид Spring Cloud номын санг ашиглах болно програмуудыг бүтээх ачааллын тэнцвэртэй байдлаар бусад програмуудтай холбогддог. Алсын үйлчилгээний хүсэлтийг боловсруулах явцад бид дуртай техникээ ашиглан ачааллын тэнцвэржүүлэлтийг хялбархан хийж чадна. Дараах кодыг жишээ болгон авч үзье. Бид үндсэн серверийн програмаас эхэлнэ.
Сервер нь зөвхөн нэг HTTP төгсгөлтэй байх бөгөөд хэд хэдэн тохиолдолд ажиллах болно. Дараа нь бид хэд хэдэн серверийн тохиолдлуудад хүсэлтийг түгээх ачааллын тэнцвэржүүлэгчийг ашигладаг клиент програмыг бүтээх болно.
Сервер
Бид үндсэн зүйлээс эхэлдэг Хавар ачаалах Манай жишээ серверийн програм:
Эхлэхийн тулд бид instance_ID нэртэй тохируулж болох хувьсагчийг оруулдаг. Энэ нь ажиллаж байгаа олон тохиолдлуудыг ялгахад тусалдаг. Үүний дараа бид мессеж болон жишээний ID-г буцаадаг ганц HTTP GET төгсгөлийн цэгийг үүсгэдэг.
ID 1-тэй өгөгдмөл жишээ нь 8080 порт дээр ажиллана. Хоёр дахь хувилбарыг эхлүүлэхийн тулд бид хэдхэн програмын параметр нэмэхэд л хангалттай.
Клиент
Одоо үйлчлүүлэгчийн кодыг харцгаая. Энд ачааллыг тэнцвэржүүлэгч орж ирдэг тул үүнийг програмдаа оруулаад эхэлцгээе:
Үүний дараа бид ServiceInstanceListSupplier-ийн хэрэгжилтийг боловсруулдаг. Энэ бол Load Balancer-ийн хамгийн чухал интерфейсүүдийн нэг юм. Энэ нь бид хүртээмжтэй үйлчилгээний тохиолдлуудыг хэрхэн олохыг тодорхойлдог.
Бид жишээ програмдаа жишээ серверийнхээ хоёр тусдаа жишээг хатуу кодлох болно. Тэд нэг систем дээр ажилладаг боловч тусдаа портуудыг ашигладаг:
Одоо LoadBalancerConfiguration анги үүсгэ:
Энэ анги нь зөвхөн нэг зорилготой: энэ нь алсын зайнаас хүсэлт гаргахад зориулж ачааллын тэнцвэртэй WebClient бүтээгчийг бий болгодог. Манай тайлбарт уг үйлчилгээний зохиомол нэрийг ашигладаг.
Энэ нь бид жишээнүүдийг ажиллуулах нарийн хостын нэр, портуудыг мэдэхгүй байх магадлалтай байгаатай холбоотой юм. Үүний үр дүнд бид хуурамч нэрийг орлуулагч болгон ашигладаг бөгөөд энэ хүрээ нь ажиллаж байгаа жишээг сонгохдоо бодит мэдээллийг орлуулах болно.
Дараа нь манай үйлчилгээний жишээний нийлүүлэлтийг эхлүүлэхэд хэрэглэгдэх Тохиргооны анги хийцгээе. Бид өмнөхтэй ижил нэрийг ашигладаг болохыг анхаарна уу:
Бид одоо жинхэнэ үйлчлүүлэгчийн програмыг бүтээх боломжтой. Өмнөх WebClient bean ашиглан жишээ сервер рүү 10 асуулга илгээцгээе:
Бид хоёр тусдаа тохиолдлын хооронд ачааллыг тэнцвэржүүлж байгааг гаралтаас харж болно:
Бичил үйлчилгээнд ачааллыг тэнцвэржүүлэх
Бичил үйлчилгээний архитектурыг Netflix, Amazon зэрэг хэд хэдэн компани бизнесийн программуудыг чөлөөтэй холбогдсон үйлчилгээний багц болгон хөгжүүлэхэд ашигладаг. Нарийн төвөгтэй програмуудыг хэт масштабтай, тасралтгүй хүргэх нь энэхүү тархсан, сул холбогдсон архитектур руу шилжих хоёр шалтгаан юм.
Эдгээр аж ахуйн нэгжийн багууд уламжлалт аргуудаас илүү хурдан бөгөөд алдаа багатай програмуудыг үйлдвэрлэхийн тулд Agile болон DevOps стратегийг хэрэгжүүлсэн. Гэсэн хэдий ч, та тархсан архитектурын нарийн төвөгтэй байдал болон хэрэглээний шаардлага, цар хүрээний шаардлага, зах зээлд нийлүүлэх цаг хугацааны хязгаарлалтын хооронд тэнцвэртэй байх ёстой.
Олон жилийн турш програм хангамжийн хянагч (ADC) нь газар дээр нь эсвэл үүлэн дээр байрлуулсан корпорацийн програмуудын үйлчилгээний түвшний шаардлагыг хангахад чухал үүрэг гүйцэтгэдэг. Микро үйлчилгээнд суурилсан програмтай ажиллаж байгаа үйлчлүүлэгч үйлчлүүлэгч болон микро үйлчилгээг бие даан хөгжүүлэхийн тулд үүнийг үзүүлж буй тохиолдлуудын талаар мэдэх шаардлагагүй.
Энэ нь урвуу прокси эсвэл ачаалал тэнцвэржүүлэгчээр хангагдсан салгах явдал юм. Дахин хэлэхэд ачааллыг тэнцвэржүүлэх нь микро үйлчилгээ нь эрэлт, аюулгүй байдал, хүртээмжийг зохицуулах шийдэл юм.
Үйлчлүүлэгч болон микро үйлчилгээнд суурилсан программуудын хооронд Хойд-Өмнөд ачааллын уламжлалт тэнцвэржүүлэлтийг хэвтээ чиглэлд өргөжүүлэхийн тулд Зүүн-Баруун зүгт байршуулахтай хослуулснаар та мэдэгдэхүйц өсөлтийг авах болно. Зорилго нь мэдээллийн технологийн шаардлагад нийцсэн, аюулгүй, зохицуулалттай орчныг хөгжүүлэх, авхаалж самбаагаа алдалгүйгээр хадгалах явдал юм DevOps автоматжуулалт шаардлага.
ашиг тус
Ачаалал тэнцвэржүүлэх нь ачаалал ихтэй вэб сайт, программуудын нөөцийн ашиглалт, өгөгдөл дамжуулах, хариу өгөх хугацааг сайжруулж, олон тооны асуулга хүлээн авдаг өгөгдлийн сангийн олон давуу талыг өгдөг. Ачаалал тэнцвэржүүлэх нь ачаалал ихтэй нөхцөлд хэрэглэгчийн хүсэлтийг хурдан бөгөөд зөв биелүүлэх боломжийг олгодог.
Тэд хэрэглэгчдийг удаашралтай хөтөлбөр, нөөцтэй харьцах асуудлыг хүндрүүлдэг. Ачаалал тэнцвэржүүлэх нь зогсолтоос зайлсхийх, аюулгүй байдлыг хөнгөвчлөхөд тусалж, танай компанийн бүтээмж, орлого алдах эрсдэлийг бууруулдаг.
- Ачаалал тэнцвэржүүлэх нь урсгалыг оновчтой үр ашигтайгаар удирдахаас гадна эрэлт хэрэгцээний дагуу сервер нэмэх, хасах уян хатан байдлыг хангадаг. Засвар үйлчилгээний явцад траффик бусад серверүүд рүү шилждэг тул хэрэглэгчдэд саад учруулахгүйгээр серверийн засвар үйлчилгээг хийх боломжтой.
- Ачааллын тэнцвэржүүлэлт нь серверүүдийн багцын хооронд траффикийг хуваах замаар нэмэлт нөөцийг бий болгодог. Хэрэв нэг нь амжилтгүй болвол та ачааллыг шууд өөр сервер рүү шилжүүлж, хэрэглэгчдэд үзүүлэх нөлөөллийг багасгах боломжтой.
- Хэрэв програм эсвэл вэб сайтын хэрэглээ өсөх юм бол үр дүнтэй зохицуулахгүй бол траффик нэмэгдсэн нь түүний гүйцэтгэлийг доройтуулж болзошгүй юм. Ачаалал тэнцвэржүүлснээр та үйлчилгээгээ тасалдуулахгүйгээр эрэлт хэрэгцээг хангахын тулд бодит эсвэл виртуал сервер нэмж болно. Ачаалал тэнцвэржүүлэгч нь шинэ серверүүдийг онлайн болох үед нь тодорхойлж, тэдгээрийг үйл ажиллагаанд хялбархан оруулдаг. Энэ арга нь вэбсайтыг ачаалал ихтэй серверээс шинэ сервер рүү шилжүүлэхэд илүү тохиромжтой бөгөөд энэ нь ихэвчлэн зарим нэг зогсолттой байдаг.
Дүгнэлт
Ачаалал тэнцвэржүүлэх нь орчин үеийн, гэмтэлд тэсвэртэй системийн чухал бүрэлдэхүүн хэсэг юм. Бид ачааллыг тэнцвэржүүлэх янз бүрийн аргуудыг ашиглан олон үйлчилгээний инстанцуудад хүсэлтийг түгээх програмуудыг бүтээж чадна. Аппликейшнүүдийг найдвартай хангахын тулд бизнесүүд нарийн төвөгтэй мэдээллийн технологийн системийг дэмжих ёстой.
Домэйн дамнасан микро үйлчилгээний тохиргоо, байршуулалт, засвар үйлчилгээ нь алдаа гаргадаг, үнэтэй, цаг хугацаа их шаарддаг байж болно. Мэдээллийн технологи нь автоматжуулалт, харагдах байдал, аналитик, зохион байгуулалтын шилдэг туршлага, технологийг ашиглах нь тэдний agile болон DevOps процессуудтай нийцэж байгаа бөгөөд эдгээр микро үйлчилгээг тохируулах, засвар үйлчилгээ хийхэд хялбар байх ёстой.
хариу үлдээх