Системийн ачаалал ихсэхийг хэрхэн тэсвэрлэх вэ: Хар Баасан гарагт хийх томоохон хэмжээний бэлтгэлийн талаар бид ярьж байна

Хөөе Хабр!

2017 онд Хар Баасан гарагт ачаалал бараг нэг хагас дахин нэмэгдэж, манай серверүүд хязгаартаа байсан. Жилийн туршид үйлчлүүлэгчдийн тоо мэдэгдэхүйц нэмэгдэж, урьдчилсан бэлтгэлгүйгээр платформ нь 2018 оны ачааллыг тэсвэрлэхгүй байх нь тодорхой болсон.

Бид хамгийн их амбицтай зорилгыг тавьсан: бид аливаа, тэр ч байтугай хамгийн хүчирхэг, үйл ажиллагааны өсөлтөд бүрэн бэлэн байхыг хүсч, жилийн турш шинэ хүчин чадлыг урьдчилан эхлүүлж эхэлсэн.

Манай техникийн захирал Андрей Чиж (chizh_andrey) бид 2018 оны Хар Баасан гарагт хэрхэн бэлтгэсэн, уналтаас зайлсхийхийн тулд ямар арга хэмжээ авсан, мэдээжийн хэрэг, ийм болгоомжтой бэлтгэлийн үр дүнг өгүүлдэг.

Системийн ачаалал ихсэхийг хэрхэн тэсвэрлэх вэ: Хар Баасан гарагт хийх томоохон хэмжээний бэлтгэлийн талаар бид ярьж байна

Өнөөдөр би 2018 оны Хар Баасан гарагийн бэлтгэлийн талаар ярихыг хүсч байна. Яагаад одоо ихэнх томоохон борлуулалт ард хоцорч байхад? Бид томоохон хэмжээний арга хэмжээ болохоос жил орчмын өмнө бэлдэж эхэлсэн бөгөөд туршилт, алдааны үр дүнд оновчтой шийдлийг олсон. Халуун улирлыг урьдчилан анхаарч, хамгийн тохиромжгүй мөчид гарч болох луйвраас урьдчилан сэргийлэхийг зөвлөж байна.
Материал нь ийм хувьцаанаас хамгийн их ашиг олохыг хүсдэг хүн бүрт ашигтай байх болно, учир нь Асуудлын техникийн тал нь энд маркетингийн талаас дутахгүй.

Том борлуулалтын замын хөдөлгөөний онцлог

Түгээмэл итгэл үнэмшлээс ялгаатай нь Хар Баасан гараг жилд нэг өдөр биш, бараг бүтэн долоо хоног болдог: анхны хямдралын саналууд худалдаанаас 7-8 хоногийн өмнө ирдэг. Вэб сайтын ачаалал долоо хоногийн турш жигдхэн өсч, Баасан гарагт дээд цэгтээ хүрч, Бямба гарагт дэлгүүрийн ердийн түвшинд хүртэл огцом буурч байна.

Системийн ачаалал ихсэхийг хэрхэн тэсвэрлэх вэ: Хар Баасан гарагт хийх томоохон хэмжээний бэлтгэлийн талаар бид ярьж байна

Үүнийг анхаарч үзэх нь чухал: онлайн дэлгүүрүүд систем дэх аливаа "удаашрал" -д онцгой мэдрэмтгий болдог. Нэмж дурдахад, манай цахим шуудангийн мэдээллийн шугамд илгээсэн мэдээллийн тоо мэдэгдэхүйц нэмэгдсэн.

Хар баасан гаригийг осолгүй өнгөрүүлэх нь стратегийн ач холбогдолтой, учир нь... Вэбсайт болон дэлгүүрийн мэдээллийн товхимолуудын хамгийн чухал ажиллагаа нь платформын үйл ажиллагаанаас хамаарна, тухайлбал:

  • Бүтээгдэхүүний зөвлөмжийг дагаж мөрдөх, гаргах,
  • Холбогдох материалыг гаргах (жишээлбэл, сум, лого, дүрс болон бусад харааны элементүүд гэх мэт зөвлөмжийн блокуудын дизайны зураг);
  • Шаардлагатай хэмжээтэй бүтээгдэхүүний зургийг өгөх (эдгээр зорилгоор бид "ImageResizer" -ийг дэлгүүрийн серверээс зураг татаж, шаардлагатай хэмжээгээр шахаж, кэш серверээр дамжуулан бүтээгдэхүүн тус бүрт шаардлагатай хэмжээтэй зургийг гаргадаг дэд системтэй. зөвлөмжийн блок бүр).

Үнэн хэрэгтээ 2019 оны Хар Баасан гарагт үйлчилгээний ачаалал 40% -иар нэмэгдсэн, өөрөөр хэлбэл. Retail Rocket систем нь онлайн дэлгүүрийн сайтууд дээр дагаж мөрдөж, боловсруулдаг үйл явдлын тоо секундэд 5-аас 8 мянган хүсэлт хүртэл нэмэгджээ. Бид илүү ноцтой ачаалалд бэлтгэж байсан тул ийм өсөлтийг амархан даван туулсан.

Системийн ачаалал ихсэхийг хэрхэн тэсвэрлэх вэ: Хар Баасан гарагт хийх томоохон хэмжээний бэлтгэлийн талаар бид ярьж байна

Ерөнхий бэлтгэл

Хар баасан гараг бол бүх жижиглэн худалдаа, цахим худалдааны хувьд завгүй цаг юм. Энэ үед хэрэглэгчдийн тоо болон тэдний үйл ажиллагаа ихээхэн нэмэгдэж байгаа тул бид үргэлж энэ завгүй үед сайтар бэлдсэн. Бид зөвхөн Орост төдийгүй Европт маш олон онлайн дэлгүүрүүдтэй холбоотой байдаг бөгөөд үүнд сэтгэл догдлом байдал нь илүү өндөр байдаг бөгөөд бид Бразилийн цувралаас ч илүү хүсэл тэмүүлэлтэй байдаг. Ачаалал ихсэхэд бүрэн бэлтгэлтэй байхын тулд юу хийх хэрэгтэй вэ?

Серверүүдтэй ажиллах

Эхлээд серверийн хүчийг нэмэгдүүлэхийн тулд яг юу хэрэгтэйг олж мэдэх шаардлагатай байв. 10-р сард бид Хар Баасан гарагт тусгайлан шинэ сервер захиалж эхэлсэн - нийтдээ XNUMX нэмэлт машин нэмсэн. XNUMX-р сар гэхэд тэд бүрэн тулалдаанд оров.

Үүний зэрэгцээ зарим бүтээх машинуудыг Програмын сервер болгон ашиглахаар дахин суулгасан. Бид тэдгээрийг өөр өөр функцуудыг ашиглахад нэн даруй бэлтгэсэн: зөвлөмж гаргах болон ImageResizer үйлчилгээнд хоёуланд нь ачааллын төрлөөс хамааран тус бүрийг эдгээр үүргүүдийн аль нэгэнд ашиглах боломжтой болсон. Ердийн горимд Програм болон ImageResizer серверүүд нь тодорхой функцтэй байдаг: эхнийх нь зөвлөмж өгөх, сүүлийнх нь захидлын зураг, онлайн худалдааны вэбсайт дээрх зөвлөмжийн блокуудыг нийлүүлдэг. Хар баасан гаригт бэлтгэхийн тулд татан авалтын төрлөөс хамааран тэдгээрийн хоорондын урсгалыг тэнцвэржүүлэхийн тулд бүх давхар зориулалттай серверүүдийг хийхээр шийдсэн.

Дараа нь бид Кафка (Apache Kafka)-д зориулж хоёр том сервер нэмж, 5 хүчирхэг машинаас бүрдсэн кластертай болсон. Харамсалтай нь бүх зүйл бидний хүссэн шиг жигд явагдсангүй: өгөгдлийг синхрончлох явцад хоёр шинэ машин сүлжээний сувгийн бүх өргөнийг эзэлж байсан тул бид нэмэх процессыг хэрхэн хурдан, найдвартай хийх талаар яаралтай олж мэдэх шаардлагатай болсон. бүхэл бүтэн дэд бүтэц. Энэ асуудлыг шийдэхийн тулд манай админууд амралтын өдрүүдээ зоригтойгоор золиослох хэрэгтэй болсон.

Өгөгдөлтэй ажиллах

Серверүүдээс гадна ачааллыг хөнгөвчлөхийн тулд файлуудыг оновчтой болгохоор шийдсэн бөгөөд бидний хувьд том алхам бол статик файлуудыг орчуулах явдал байв. Өмнө нь сервер дээр байрлуулсан бүх статик файлуудыг S3 + Cloudfront руу шилжүүлсэн. Серверийн ачаалал хязгаарт ойрхон байсан тул бид үүнийг хийхийг удаан хугацаанд хүсч байсан бөгөөд одоо маш том боломж гарч ирэв.

Хар Баасан гарагаас долоо хоногийн өмнө бид зургийн кэш хийх хугацааг 3 хоног болгон нэмэгдүүлсэн бөгөөд хэрэв ImageResizer гацвал урьд нь кэш хийсэн зургуудыг cdn-ээс татаж авах болно. Энэ нь мөн манай серверүүдийн ачааллыг бууруулсан, учир нь зураг удаан хадгалагдах тусам хэмжээг өөрчлөхөд нөөц зарцуулах шаардлагагүй болно.

Хамгийн сүүлд гэхдээ хамгийн багаар бодоход: Хар Баасан гарагаас 5 хоногийн өмнө аливаа шинэ функцийг ашиглах, түүнчлэн дэд бүтэцтэй холбоотой аливаа ажилд мораторий зарласан - бүх анхаарал нэмэгдсэн ачааллыг даван туулахад чиглэв.

Хэцүү нөхцөл байдалд хариу арга хэмжээ авах төлөвлөгөө

Хичнээн өндөр чанартай бэлтгэл байсан ч гэсэн факапууд үргэлж боломжтой байдаг. Мөн бид болзошгүй эгзэгтэй нөхцөл байдалд хариу арга хэмжээ авах 3 төлөвлөгөө боловсруулсан:

  • ачааллыг бууруулах,
  • зарим үйлчилгээг идэвхгүй болгох,
  • үйлчилгээг бүрэн зогсоох.

Төлөвлөгөө А: Ачааллыг багасгах. Ачаалал ихэссэний улмаас манай серверүүд хүлээн зөвшөөрөгдсөн хариу өгөх хугацаанаас хэтэрсэн тохиолдолд идэвхжүүлсэн байх ёстой. Энэ тохиолдолд бид ачааллын нэг хэсгийг Амазон сервер рүү шилжүүлэх замаар ачааллыг аажмаар бууруулах механизмуудыг бэлтгэсэн бөгөөд энэ нь бүх хүсэлтэд "200 OK" гэж хариулж, хоосон хариулт өгөх болно. Энэ нь үйлчилгээний чанарыг доройтуулж байна гэж бид ойлгосон ч замын хөдөлгөөний 10 орчим хувьд үйлчилгээ огт ажиллахгүй эсвэл зөвлөмж өгөхгүй байх хоёрын аль нэгийг сонгох нь ойлгомжтой.

Төлөвлөгөө В: Үйлчилгээг идэвхгүй болгох. Үйлчилгээний хэсэгчилсэн доройтол. Жишээлбэл, зарим мэдээллийн сан, харилцааны сувгийг буулгахын тулд хувийн зөвлөмжийг тооцоолох хурдыг багасгах. Хэвийн горимд зөвлөмжийг бодит цаг хугацаанд тооцож, зочин бүрт онлайн дэлгүүрийн өөр хувилбарыг бий болгодог боловч ачаалал ихэссэн нөхцөлд хурдыг бууруулах нь бусад үндсэн үйлчилгээг үргэлжлүүлэх боломжийг олгодог.

Төлөвлөгөө С: Армагеддоны тохиолдолд. Хэрэв системийн бүрэн доголдол гарвал бид үйлчлүүлэгчдээсээ найдвартай салгах төлөвлөгөөг бэлтгэсэн. Дэлгүүрийн худалдан авагчид зүгээр л зөвлөмжийг харахаа болино, онлайн дэлгүүрийн гүйцэтгэл ямар ч байдлаар буурахгүй. Үүнийг хийхийн тулд шинэ хэрэглэгчид үйлчилгээтэй харилцахаа болихын тулд бид нэгтгэх файлаа дахин тохируулах шаардлагатай болно. Өөрөөр хэлбэл, бид үндсэн хяналтын кодыг идэвхгүй болгож, үйлчилгээ нь мэдээлэл цуглуулж, зөвлөмжийг тооцоолохоо зогсоож, хэрэглэгч зүгээр л зөвлөмж блокгүй хуудсыг харах болно. Өмнө нь нэгтгэх файлыг хүлээн авсан бүх хүмүүст бид DNS бичлэгийг Amazon болон 200 OK stub руу шилжүүлэх сонголтыг өгсөн.

Үр дүн

Бид нэмэлт барилгын машин ашиглах шаардлагагүй байсан ч бүх ачааллыг даван туулсан. Урьдчилсан бэлтгэлийн ачаар бид боловсруулсан хариу арга хэмжээний төлөвлөгөөний аль нь ч хэрэггүй болсон. Гэхдээ хийсэн бүх ажил бол хамгийн гэнэтийн, асар их урсгалыг даван туулахад бидэнд туслах үнэлж баршгүй туршлага юм.
2017 оных шиг үйлчилгээний ачаалал 40%-иар, хар баасан гарагт онлайн дэлгүүрийн хэрэглэгчдийн тоо 60%-иар өссөн байна. Бэлтгэл ажлын явцад бүх бэрхшээл, алдаа гарсан нь биднийг болон үйлчлүүлэгчдийг урьдчилан тооцоолоогүй нөхцөл байдлаас аварсан.

Хар баасан гарагийг хэрхэн даван туулж байна вэ? Чухал ачаалалд хэрхэн бэлддэг вэ?

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх