Блокҳои сохтани барномаҳои тақсимшуда. Наздиккунии сифр

Блокҳои сохтани барномаҳои тақсимшуда. Наздиккунии сифр

Дунё дар як ҷо намеистад. Пешравӣ мушкилоти нави технологӣ ба вуҷуд меорад. Мувофиқи талаботи тағйирёбанда, меъмории системаҳои иттилоотӣ бояд таҳаввул ёбад. Имрӯз мо дар бораи меъмории ба рӯйдодҳо асосёфта, ҳамзамонӣ, ҳамоҳангӣ, асинхронӣ ва чӣ гуна шумо метавонед бо ин ҳама дар Эрланг осоишта зиндагӣ кунед.

Муқаддима

Вобаста ба андозаи системаи тарҳрезишуда ва талабот ба он, мо, таҳиягарон, усули мубодилаи иттилоотро дар система интихоб мекунем. Дар аксари ҳолатҳо, барои ташкили ҳамкории хидматҳо, варианти корӣ метавонад нақшаи бо брокер, масалан, дар асоси RabbitMQ ё kafka бошад. Аммо баъзан ҷараёни рӯйдодҳо, SLA ва сатҳи назорат аз болои система чунин аст, ки паёмнависии омода барои мо мувофиқ нест. Албатта, шумо метавонед бо гирифтани масъулият барои қабати нақлиёт ва ташаккули кластер, масалан, бо истифода аз ZeroMQ ё nanomsg, системаро каме мушкилтар кунед. Аммо агар система дорои қобилияти кофӣ ва қобилияти кластери стандартии Эрланг бошад, пас масъалаи ҷорӣ намудани субъекти иловагӣ омӯзиши муфассал ва асоснокии иқтисодиро талаб мекунад.

Мавзӯи барномаҳои реактивии тақсимшуда хеле васеъ аст. Барои нигоҳ доштани формати мақола, мавзӯи муҳокимаи имрӯза танҳо муҳити якхела хоҳад буд, ки дар Erlang/Elixir сохта шудаанд. Экосистемаи Erlang/OTP ба шумо имкон медиҳад, ки меъмории реактивиро бо камтарин саъй амалӣ намоед. Аммо дар ҳар сурат, мо ба қабати паёмнависӣ ниёз дорем.

Асоси назариявӣ

Тарҳ бо муайян кардани ҳадафҳо ва маҳдудиятҳо оғоз меёбад. Ҳадафи асосӣ дар соҳаи рушд ба хотири рушд нест. Мо бояд як абзори амн ва миқёспазирро ба даст орем, ки дар асоси он мо метавонем барномаҳои муосири сатҳҳои гуногунро созем ва аз ҳама муҳимтар таҳия кунем: аз замимаҳои яксерверӣ, ки ба аудиторияи хурд хизмат мерасонанд, ки баъдтар ба кластерҳои то 50 адад табдил ёфта метавонанд. -60 гиреҳ, ки бо федератсияҳои кластер ба итмом мерасад. Ҳамин тариқ, ҳадафи асосӣ ин ба ҳадди аксар расонидани фоида тавассути кам кардани хароҷоти таҳия ва моликияти системаи ниҳоӣ мебошад.

Биёед 4 талаботи асосиро барои системаи ниҳоӣ қайд кунем:

  • Сба рӯйдод нигаронида шудааст.
    Система ҳамеша омода аст, ки аз ҷараёни ҳодисаҳо гузарад ва амалҳои заруриро иҷро кунад;
  • Ммиқёспазирӣ.
    Блокҳои инфиродӣ метавонанд амудӣ ва уфуқӣ васеъ карда шаванд. Тамоми система бояд қодир ба афзоиши беохири уфуқӣ бошад;
  • Отаҳаммулпазирии хатогиҳо.
    Ҳама сатҳҳо ва ҳама хидматҳо бояд қодир бошанд, ки аз нокомиҳо ба таври худкор барқарор шаванд;
  • Гвақти ҷавоб кафолат дода мешавад.
    Вақт арзишманд аст ва корбарон набояд аз ҳад зиёд интизор шаванд.

Дар хотир доред, ки афсонаи кӯҳна дар бораи "Моторе, ки метавонист" буд? Барои он ки системаи тарҳрезишуда бомуваффақият аз марҳилаи прототипӣ берун шавад ва пешрав бошад, таҳкурсии он бояд ба талаботи ҳадди аққал ҷавобгӯ бошад. SMOG.

Як нуктаи дигар ба паёмнависӣ ҳамчун воситаи инфрасохтор ва асоси ҳама хидматҳо илова карда мешавад: осонии истифода барои барномасозон.

Ба рӯйдод нигаронидашуда

Барои он ки барнома аз як сервер ба кластер афзоиш ёбад, меъмории он бояд пайвастагии фуҷурро дастгирӣ кунад. Модели асинхронӣ ба ин талабот ҷавобгӯ аст. Дар он, ирсолкунанда ва қабулкунанда дар бораи сарбории иттилоотии паём ғамхорӣ мекунанд ва дар бораи интиқол ва масир дар дохили система хавотир нашаванд.

Миқёспазирӣ

Миқёспазирӣ ва самаранокии система дар паҳлӯи ҳамдигаранд. Қисмҳои барнома бояд тамоми захираҳои мавҷударо истифода баранд. Мо хар кадар самараноктар истифода бурдани иктидорхо ва усулхои коркарди худро хар кадар оптималтар истифода барем, барои тачхизот хамон кадар камтар маблаг сарф мекунем.

Дар дохили як мошини ягона Эрланг муҳити рақобатпазирро ба вуҷуд меорад. Тавозуни байни ҳамзамон ва параллелизмро тавассути интихоби шумораи риштаҳои системаи оператсионӣ, ки барои Erlang VM дастрасанд ва шумораи барномасозоне, ки ин риштаҳоро истифода мебаранд, муқаррар кардан мумкин аст.
Равандҳои Эрланг ҳолатро мубодила намекунанд ва дар реҷаи ғайрибандӣ кор мекунанд. Ин назар ба замимаҳои анъанавӣ, ки ба басташавӣ асос ёфтааст, таъхири нисбатан паст ва гузариши баландтарро таъмин мекунад. Банақшагирии Эрланг тақсимоти одилонаи CPU ва IO-ро таъмин мекунад ва набудани басташавӣ ба барнома имкон медиҳад, ки ҳатто ҳангоми сарборӣ ё нокомиҳо вокуниш нишон диҳад.

Дар сатҳи кластер низ мушкилот бо партов вуҷуд дорад. Муҳим аст, ки ҳамаи мошинҳои кластер яксон бор карда шаванд ва шабака аз ҳад зиёд пурбор нашавад. Биёед вазъро тасаввур кунем: трафики корбар ба балансаторҳои воридотӣ (haproxy, nginx ва ғайра) ворид мешавад, онҳо дархостҳои коркардро дар байни маҷмӯи пуштибонии дастрас ба қадри имкон баробар тақсим мекунанд. Дар дохили инфрасохтори барнома, хидмате, ки интерфейси лозимиро амалӣ мекунад, танҳо як милаи охирин аст ва бояд як қатор хидматҳои дигарро барои посух додан ба дархости аввалия дархост кунад. Дархостҳои дохилӣ инчунин масир ва мувозинатро талаб мекунанд.
Барои самаранок идора кардани ҷараёни додаҳо, паёмнависӣ бояд ба таҳиягарон интерфейси идоракунии масир ва мувозинати сарборӣ диҳад. Ба шарофати ин, таҳиягарон метавонанд бо истифода аз намунаҳои хидматрасонии микросервис (агрегатор, прокси, занҷир, филиал ва ғайра) ҳам мушкилоти стандартӣ ва ҳам мушкилоти кам пайдошударо ҳал кунанд.

Аз нуқтаи назари тиҷорат, миқёспазирӣ яке аз воситаҳои идоракунии хавфҳо мебошад. Чизи асосиаш ин аст, ки қонеъ гардонидани дархостҳои муштариён тавассути истифодаи оптималии таҷҳизот:

  • Вакте ки дар натичаи пешравй иктидори тачхизот зиёд мешавад. Он аз сабаби номукаммалии нармафзор бекор намемонад. Эрланг миқёси амудӣ хуб дорад ва ҳамеша қодир аст, ки ҳамаи ядроҳои CPU ва хотираи дастрасро истифода барад;
  • Дар муҳити абрӣ, мо метавонем миқдори таҷҳизотро вобаста ба сарбории ҷорӣ ё пешбинишуда идора кунем ва SLA-ро кафолат диҳем.

таҳаммулпазирии хатогиҳо

Биёед ду аксиомаро дида бароем: "Муваффақиятҳо қобили қабул нестанд" ва "Муваффақиятҳо ҳамеша хоҳанд буд". Барои тиҷорат, нокомии нармафзор маънои аз даст додани пул ва бадтараш аз даст додани эътиборро дорад. Мувозинат байни талафоти эҳтимолӣ ва арзиши таҳияи нармафзори ба хатогӣ таҳаммулпазир, созишро аксар вақт пайдо кардан мумкин аст.

Дар муддати кӯтоҳ, меъморӣ, ки таҳаммулпазирии хатогиҳоро дар бар мегирад, пулро барои харидани ҳалли кластерҳои берун аз раф сарфа мекунад. Онҳо гарон ҳастанд ва онҳо инчунин хатогиҳо доранд.
Дар муддати тӯлонӣ, меъмории ба хатогиҳо тобовар дар ҳама марҳилаҳои рушд барои худ чандин маротиба пардохт мекунад.
Паёмнависӣ дар заминаи кодҳо ба шумо имкон медиҳад, ки ҳамкории ҷузъҳои дохили системаро дар марҳилаи таҳия муфассал кор кунед. Ин вазифаи вокуниш ва идоракунии нокомиро осон мекунад, зеро ҳамаи ҷузъҳои муҳим нокомиро ҳал мекунанд ва системаи натиҷавӣ медонад, ки чӣ гуна пас аз нокомӣ аз рӯи тарҳ ба таври худкор ба ҳолати муқаррарӣ бармегардад.

Ҷавобгарӣ

Новобаста аз нокомиҳо, барнома бояд ба дархостҳо ҷавоб диҳад ва ба SLA ҷавобгӯ бошад. Воқеият ин аст, ки одамон интизор шудан намехоҳанд, аз ин рӯ тиҷоратҳо бояд мувофиқи он мутобиқ шаванд. Интизор меравад, ки бештар ва бештари барномаҳо ҷавобгӯи баланд бошанд.
Барномаҳои ҷавобгӯ дар вақти воқеӣ кор мекунанд. Erlang VM дар реҷаи мулоими вақти воқеӣ кор мекунад. Барои баъзе соҳаҳо, ба монанди савдои саҳҳомӣ, доруворӣ ва назорати таҷҳизоти саноатӣ, режими сахти вақти воқеӣ муҳим аст.
Системаҳои ҷавобӣ UX-ро такмил медиҳанд ва ба тиҷорат фоида мерасонанд.

Хулосаи пешакӣ

Ҳангоми банақшагирии ин мақола, ман мехостам таҷрибаи худро дар бораи эҷоди брокери паёмнависӣ ва сохтани системаҳои мураккаб дар асоси он мубодила кунам. Аммо қисми назариявӣ ва ҳавасмандкунӣ хеле васеъ гардид.
Дар қисми дуюми мақола, ман дар бораи нозукиҳои татбиқи нуқтаҳои мубодила, шакли паёмнависӣ ва татбиқи онҳо сӯҳбат мекунам.
Дар қисми сеюм мо масъалаҳои умумии ташкили хизматрасонӣ, масир ва мувозинатро баррасӣ мекунем. Биёед дар бораи ҷанбаи амалии миқёспазирӣ ва таҳаммулпазирии хатогиҳои системаҳо сӯҳбат кунем.

Охири қисми якум.

фото @lucabravo.

Манбаъ: will.com

Илова Эзоҳ