JavaRush /Блоги Java /Random-TG /Меъмории Microservice: мусбат ва манфии
Roman Beekeeper
Сатҳи

Меъмории Microservice: мусбат ва манфии

Дар гурӯҳ нашр шудааст
Микросервисҳо як роҳи шикастани як барномаи калон ба модулҳои ба ҳам пайвастшуда мебошанд, ки бо ҳамдигар тавассути API оддӣ муошират мекунанд.
Меъмории микросервис: мусбат ва манфии - 1
Вақтҳои охир танҳо одамони гунг дар бораи хидматрасонии хурд ҳарф намезананд. Ин торафт бештар маъмул мегардад. Услуби меъмории модулӣ ба назар мерасад, ки махсусан барои муҳити абрӣ мувофиқ аст ва маъруфияти он меафзояд. Пеш аз он ки ба тафсилот ворид шавем, биёед ба ҳама чиз бо чашми парранда назар андозем . Аз ин рӯ: Микросервисҳо як роҳи шикастани як лоиҳаи калон ба модулҳои хурд, мустақил ва ба ҳам пайвастшуда мебошанд. Модулҳои мустақил барои вазифаҳои дақиқ муайяншуда ва дискретӣ масъуланд ва бо ҳамдигар тавассути API оддӣ ва дастрас муошират мекунанд. Ба ибораи дигар, микросервисҳо танҳо як услуби дигари меъморӣ барои тарроҳии мураккаб, асосан барномаҳои веб мебошанд. Аммо дар бораи қарорҳои мавҷудаи меъморӣ, ба монанди SOA (архитектураи ба хидматрасонӣ нигаронидашуда) чӣ бад аст? Аксарияти қарорҳои муосири корхона, ки бо истифода аз SOA навишта шудаанд, хеле хуб кор мекунанд. Ин шояд вакти хубе бошад, ки дар бораи баъзе душворихое, ки дар ин рузхо саноат дучори он аст, сухан ронем... Биёед, бо мисоли оддй сар кунем. Фарз мекунем, ки ман бояд як барномаи классикии дар Java навишташударо иҷро кунам. Аввал ман интерфейси корбарро таҳия мекунам, баъд қабати мантиқии тиҷорӣ бо якчанд ҷузъҳо, ки бо UI мутақобила мекунанд ва дар ниҳоят қабати пойгоҳи додаҳо, ки ба пойгоҳи додаҳои доимӣ дастрас хоҳанд буд. Ҳоло мувофиқи он ки ман мехоҳам барномаро иҷро кунам, ман WAR/EAR/JAR эҷод мекунам ва онро дар server насб мекунам (ба монанди JBoss, Tomcat ё WebLogic). Азбаски ин ҳама дар як ҷо анҷом дода мешавад, ман як барномаи монолитӣ мегирам, ки ин маънои онро дорад, ки ҳамаи ҷузъҳо дар як ҷо ҳастанд... Мисол дар расм:
Меъмории микросервис: мусбат ва манфии - 2
Эҳтимол, шумо аллакай бо ин равиш шинос ҳастед ва онро истифода бурдаед, аммо идея ин аст, ки ин мисолро истифода баред, то нишон диҳад, ки таҳиягарон бо истифода аз ин ҳалли меъморӣ бо чӣ мушкилот дучор хоҳанд шуд. Аризаи монолитӣ: мушкилот
  • Вақте ки барнома афзоиш меёбад, миқдори рамзи навишташуда зиёд мешавад, ки метавонад ҳар дафъае, ки шумо онро кушоед, муҳити таҳияро аз ҳад зиёд бор кунед. Ин бешубҳа самаранокии таҳиягарро коҳиш медиҳад.
  • Азбаски ҳама чиз бояд дар як ҷо васл карда шавад, ин ба он оварда мерасонад, ки гузариш ба забони дигари барномасозӣ ё гузаштан ба технологияҳои дигар мушкилоти бузург аст. Масалан, шумо дар Java ариза навиштед ва пас аз чанде Котлин баромад ва шумо мехостед онро ба он дубора нависед, зеро он ҳамчун сардтар, беҳтар ва тезтар пешбарӣ карда шуд. Бо як барномаи монолитӣ, ҳатто фикр кардан дар бораи рефакторинг дарди воқеиро ба бор меорад, на аз худи раванд. Дар айни замон барномаҳои зиёде мавҷуданд, ки бо ин роҳ сохта шудаанд ва шумораи сатрҳои code бениҳоят аҷиб аст.
  • Агар яке аз ҷузъҳо бо ягон сабаб корашро қатъ кунад , тамоми барнома низ вайрон мешавад. Тасаввур кунед, ки як барномаи веб мавҷуд аст, ки дорои модулҳои монанди авторизатсия, пардохт, таърих ва ғайра мебошад. Ва аз чй сабаб бошад, ки яке аз онхо мешиканад. Ин танҳо як зарба барои тиҷорат ва дар натиҷа барои таҳиягарон аст.
  • Миқёси як барномаи монолитиро танҳо тавассути баланд бардоштани замимаи дигари ҳамон намуд ба даст овардан мумкин аст. Аммо чӣ мешавад, агар ба шумо танҳо як ҷузъро васеъ кардан лозим аст, на тамоми барнома. Чӣ қадар захираҳо бехуда сарф мешаванд?...
  • Ин метавонад ба раванди таҳия ва насби барнома таъсири калон расонад. Чӣ қадаре ки барнома калонтар бошад, ҳамон қадар муҳимтар аст, ки таҳиягарон метавонанд барномаро ба қисмҳои хурдтари корӣ тақсим кунанд. Азбаски ҳамаи модулҳо дар як барномаи монолитӣ ба ҳам пайвастанд, таҳиягарон наметавонанд ин модулҳоро новобаста аз ҳамдигар кор/васл кунанд. Азбаски таҳиягарон аз ҳамдигар вобастаанд, вақти таҳия зиёд мешавад.
Ҳамзамон, мо омодаем, ки маънои микросервисҳоро баррасӣ ва фаҳмем, яъне чӣ гуна онҳоро барои барқарор кардани чандирии бо услуби SOA гумшуда истифода бурдан мумкин аст. God Microservices барои наҷот Яке аз хусусиятҳои муҳимтарин дар ҳама гуна ҳалли меъморӣ миқёспазирӣ мебошад. Вақте ки ман бори аввал микросервисҳоро меомӯзам, ман дидам, ки ҳама чиз ба иқтибосҳо аз китоби "Санъати миқёспазирӣ" монанд аст. Ин ибтидо ва ҷои хубест барои муҳокима. Ин китоб модели ба истилоҳ "Cube Scalability" -ро муайян мекунад, ки системаи миқёспазирии сеченакаро тавсиф мекунад:
Меъмории микросервис: мусбат ва манфии - 3
Тавре ки шумо мебинед, меҳвари X "миқёси уфуқӣ" -ро тавсиф мекунад (ки мо дидаем, барои меъмории монолитӣ низ дастрас аст), меҳвари Y миқёсро ба маънои ҷудо кардани ҷузъҳои гуногуни хидматрасонӣ ифода мекунад . Идеяи меҳвари Z вақте фаҳмида мешавад, ки маълумот тақсим карда мешавад ва барнома дархостҳоро ба он ҷое, ки маълумот ҷойгир аст, мефиристад. Яъне на ҳама дар як ҷо ҳастанд. Идеяи меҳвари Y ҳамон чизест, ки мо ба таври муфассал тамаркуз хоҳем кард. Ин меҳвар таҷзияи функсионалӣ мебошад . Дар ин стратегия вазифаҳои гуногунро метавон ҳамчун хидматҳои мустақил баррасӣ кард. Аз ин рӯ, бо васл кардани тамоми барнома танҳо вақте ки ҳама чиз анҷом дода мешавад, таҳиягарон метавонанд хидматҳои инфиродӣро новобаста аз ҳамдигар насб кунанд ва интизор нашаванд, ки дигарон кор дар модулҳои худ анҷом диҳанд. Ин на танҳо вақти таҳияро беҳтар мекунад, балки инчунин чандириро барои тағир додан ва аз нав пайваст кардан бидуни ташвиш дар бораи боқимондаи ҷузъҳои барнома пешниҳод мекунад. Биёед ин диаграммаро бо диаграммаи монолитии қаблӣ муқоиса кунем:
Меъмории микросервис: мусбат ва манфии - 4
Хидматҳои хурд: Манфиатҳо Манфиатҳои хидматрасонии хурд барои итминон додани таҳиягарони корхона, аз қабor Amazon, Netflix, Ebay ба истифодаи ин равиш кофӣ мебошанд. Баръакси замимаҳои меъмории монолитӣ, хидматрасонии хурд:
  • Изолятсияи нокомии ҷузъҳоро беҳтар мекунад: Барномаҳои калон метавонанд ҳатто дар сурати ноком шудани як модул кори самаранокро идома диҳанд.
  • Уҳдадории барномаро ба як стек технологӣ нест мекунад: агар шумо хоҳед, ки стеки технологияи навро дар ягон хидмат санҷед, пеш равед. Вобастагӣ нисбат ба як монолитӣ хеле сабуктар хоҳад буд ва баргардонидани ҳама чиз низ осонтар хоҳад буд. Чӣ қадаре ки code дар як барнома камтар бошад, кор кардан ҳамон қадар осонтар аст.
  • Барои кормандони нав фаҳмидани функсияҳои хидматро хеле осон мекунад.
Микросервисҳо: хусусиятҳои васлкунӣ ва виртуализатсия Акнун мо фаҳмидем, ки хидматрасонии хурд чист. Ва бузургтарин бартарӣ дар он аст, ки он бо зиёда аз як бойгонии WAR/EAR/JAR насб шудааст. Аммо он чӣ гуна насб карда шудааст? Роҳи беҳтарини насб кардани хидматҳои микросервис дар дохor контейнерҳо. Контейнер як системаи оператсионии маҷозии комилан конфигуратсияшуда бо муҳити зарурии танзимшуда мебошад, ки барои ҷудо кардани дастрасӣ ба захираҳои системаи сахтафзор, ки дар он контейнер насб шудааст, кӯмак мекунад. Ҳалли машҳуртарин дар бозор албатта Docker аст . Мошинҳои виртуалӣ аз IaaS (инфрасохтор ҳамчун хидмат) ба монанди AWS инчунин метавонанд барои насб кардани хидматҳои хурд хуб кор кунанд, аммо микросервисҳои нисбатан сабук наметавонанд ҳама захираҳои дар мошини маҷозӣ мавҷудбударо истифода баранд, ки метавонанд даромаднокии истифодаро коҳиш диҳанд. Шумо инчунин метавонед хидматрасониҳои хурди худро бо истифода аз бастаи OSGI (Open Service Gateway Initiative) васл кунед. Дар ин ҳолат, ҳама хидматрасониҳои хурд дар як JVM кор мекунанд, аммо ин масъалаҳои муомилоти байни назорат ва ҷудокуниро дар бар мегирад. Микросервисҳо: Камбудиҳо Танҳо аз он сабаб, ки "ин ҳама аҷиб аст" ва "мо инро қаблан надида будем" маънои онро надорад, ки ҳеҷ гуна камбудиҳо вуҷуд надоранд. Дар зер рӯйхати минтақаҳои эҳтимолии дардовар аст, ки меъмории microservice бо он меорад:
  • Таҳияи системаҳои тақсимшуда метавонад душвор бошад. Бо ин ман дар назар дорам, ки ҳама ҷузъҳо ҳоло хидматҳои мустақил мебошанд - ба шумо лозим аст, ки дархостҳоеро, ки байни модулҳо мегузаранд, хеле бодиққат ҳал кунед. Мумкин аст сенарияе вуҷуд дошта бошад, ки як модул ҷавоб намедиҳад ва шуморо маҷбур мекунад, ки codeи иловагӣ нависед, то аз садама дучор шавед. Ин метавонад душвортар шавад, агар зангҳои дурдаст ба таъхир ҳассос бошанд .
  • Якчанд пойгоҳи додаҳо ва идоракунии транзаксия метавонад дарди воқеӣ бошад.
  • санҷиши барномаҳои микросервис метавонад душвор бошад. Бо истифода аз як барномаи монолитӣ, мо танҳо бояд бойгонии WAR/EAR/JAR-ро дар server иҷро кунем ва боварӣ ҳосил кунем, ки он ба пойгоҳи додаҳо пайваст аст. Ва дар хидматҳои хурд, ҳар як хидмати инфиродӣ бояд пеш аз оғози санҷиш оғоз шавад.
  • Насб кардани замимаҳо метавонад душвор бошад. Онҳо метавонанд ҳамоҳангсозӣ дар атрофи хидматҳои сершуморро талаб кунанд, ки насб кардан ба мисли контейнери WAR осон нест.
.... Албатта, бо воситаю равиши дуруст ин норасоихоро пешгирй кардан мумкин аст. Аммо худи онхо ба дастгирй эхтиёч доранд ва на хамаи проблемахоро пурра хал мекунанд. Мақола аз вебсайти CloudAcademy тарҷума шудааст . Тарҷумаи ройгон. Ҳар як шахс озод аст, ки тамоми андешаҳои худро дар шарҳҳо баён кунад. Онҳо бешубҳа хонда хоҳанд шуд. Мақолаи аслӣ ҳисоби ман Github
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION