Ҷудокунии масъулият дар дархости фармон Намунаи хеле муҳим, зеро он ба мизоҷони гуногун имкон медиҳад, ки на танҳо ба хидматҳои гуногун пайваст шаванд, балки инчунин як ҷараёнҳои рӯйдодҳоро қабул кунанд. Манфиатҳои он барои як барномаи оддӣ чандон возеҳ нестанд, аммо барои хидмати банд хеле муҳим (ва оддӣ) аст. Моҳияти он: ҷараёнҳои маълумотҳои воридотӣ ва содиротӣ набояд бо ҳам пайваст шаванд. Яъне, шумо наметавонед дархост ирсол кунед ва посух интизор шавед, ба ҷои ин, шумо ба хидмати А дархост мефиристед, аммо аз хидмати В посух мегиред.
Ҷолиб он аст, ки рамзи коркарди паёмҳои воридотӣ ҳам барои рӯйдодҳое, ки худи муштарӣ таъсир кардааст ва ҳам барои рӯйдодҳои дигар, аз ҷумла аз муштариёни дигар яксон мешавад (на 100%).
Аммо, дар асл мо бонуси иловагӣ мегирем, зеро ҷараёни якҷониба метавонад дар услуби функсионалӣ (бо истифода аз RX ва шабеҳ) коркард карда шавад. Ва ин аллакай як плюси ҷиддӣ аст, зеро дар асл барнома метавонад комилан реактивӣ ва инчунин бо истифода аз равиши функсионалӣ бошад. Барои барномаҳои фарбеҳ, ин метавонад ба таври назаррас захираҳои рушд ва дастгирии захираҳоро сарфа кунад.
Агар мо ин равишро бо миқёси уфуқӣ якҷоя кунем, пас ҳамчун бонус мо қобилияти фиристодани дархостҳо ба як сервер ва гирифтани посухҳоро аз сервери дигар мегирем. Ҳамин тариқ, муштарӣ метавонад хидматеро, ки барои ӯ мувофиқ аст, интихоб кунад ва система дар дохили он ҳоло ҳам метавонад рӯйдодҳоро дуруст коркард кунад.
Сарчашмаи рӯйдодҳо
Чунон ки маълум аст, яке аз хусусиятхои асосии системаи таксимшуда мавчуд набудани вакти умумй, кисми умумии танкиди мебошад. Барои як раванд, шумо метавонед ҳамоҳангсозӣ кунед (дар ҳамон мутексҳо), ки дар дохили он шумо боварӣ доред, ки ҳеҷ каси дигар ин кодро иҷро намекунад. Аммо, ин барои системаи тақсимшуда хатарнок аст, зеро он хароҷоти зиёдро талаб мекунад ва инчунин тамоми зебоии миқёсро мекушад - ҳама ҷузъҳо то ҳол якро интизор мешаванд.
Аз ин ҷо мо як далели муҳимро ба даст меорем - системаи зуд паҳншуда ҳамоҳанг карда намешавад, зеро он гоҳ мо корҳоро кам мекунем. Аз тарафи дигар, мо аксар вақт ба мувофиқати муайяни байни ҷузъҳо ниёз дорем. Ва барои ин шумо метавонед равишро бо истифода баред мувофиқати ниҳоӣ, ки дар он кафолат дода мешавад, ки агар дар тӯли чанд вақт пас аз навсозии охирин ("охирон") ягон тағйироти додаҳо ба амал наояд, ҳама дархостҳо арзиши охирини навшударо бармегардонанд.
Фаҳмидани он муҳим аст, ки барои пойгоҳи додаҳои классикӣ он аксар вақт истифода мешавад мутобиқати қавӣ, ки ҳар як гиреҳ дорои маълумоти якхела аст (ин аксар вақт дар ҳолате ба даст меояд, ки транзаксия танҳо пас аз посухи сервери дуюм муқаррар карда мешавад). Дар ин ҷо бо сабаби сатҳи ҷудошавӣ баъзе истироҳатҳо мавҷуданд, аммо идеяи умумӣ бетағйир боқӣ мемонад - шумо метавонед дар ҷаҳони комилан ҳамоҳангшуда зиндагӣ кунед.
Бо вуҷуди ин, биёед ба вазифаи аввала баргардем. Агар кисми системаро бо сохтан мумкин бошад мувофиқати ниҳоӣ, пас мо метавонем диаграммаи зеринро созем.
Хусусиятҳои муҳими ин равиш:
Ҳар як дархости воридотӣ дар як навбат ҷойгир карда мешавад.
Ҳар як ҳодисаи воридотӣ дорои идентификатор аст (ки барои нусхабардорӣ зарур аст).
Навбат аз чихати идеологй аз руи схемаи «фа-кат замима кардан» кор мекунад. Шумо наметавонед элементҳоро аз он хориҷ кунед ё онҳоро аз нав танзим кунед.
Навбат аз рӯи схемаи FIFO кор мекунад (барои тавтология бахшиш). Агар ба шумо иҷрои параллелӣ лозим бошад, пас дар як марҳила шумо бояд объектҳоро ба навбатҳои гуногун интиқол диҳед.
Файлҳоро аз рӯи намуд ҷудо кунед. Масалан, тасвирҳо/видеоҳоро метавон рамзкушоӣ кард ва формати муассиртарро интихоб кардан мумкин аст.
Ҳисобҳои алоҳида аз рӯи кишвар. Бо сабаби бисёр қонунҳо, ин метавонад талаб карда шавад, аммо ин схемаи меъморӣ чунин имкониятро ба таври худкор фароҳам меорад
Вақте ки навбати нав нисбатан холӣ аст (яъне фарқияти миёнаи вақти байни илова кардани элемент ва дарёфти он қобили қабул аст), шумо метавонед ба гузариш ба анбори нав шурӯъ кунед.
Чи тавре ки мебинед, дар системам мо собиткадамонаи катъй надошт ва холо хам нест. Танҳо пайвастагии ниҳоӣ вуҷуд дорад, яъне кафолати коркарди рӯйдодҳо бо як тартиб (вале эҳтимол бо таъхирҳои гуногун). Ва бо истифода аз ин, мо метавонем нисбатан ба осонӣ маълумотро бидуни қатъ кардани система ба тарафи дигари ҷаҳон интиқол диҳем.
Мо метавонем баъзе маълумотро дар дохили ширкатҳо нигоҳ дорем. Масалан, корбарони Enterprise аксар вақт талаб мекунанд, ки маълумоти онҳо дар марказҳои додаҳои идорашаванда нигоҳ дошта шаванд (барои пешгирӣ кардани ихроҷи маълумот). Тавассути sharding мо метавонем инро ба осонӣ дастгирӣ кунем. Ва вазифа боз ҳам осонтар аст, агар муштарӣ абри мувофиқ дошта бошад (масалан, Azure худ мизбон кард).
Ва муҳимтар аз ҳама он аст, ки мо набояд ин корро кунем. Дар ниҳоят, барои оғоз кардан, мо аз як анбор барои ҳама ҳисобҳо хеле қаноатманд хоҳем буд (барои зуд ба кор оғоз кардан). Ва хусусияти асосии ин система дар он аст, ки гарчанде он васеъшаванда аст, дар марҳилаи аввал он хеле содда аст. Ба шумо лозим нест, ки фавран код нависад, ки бо як миллион навбатҳои алоҳидаи мустақил ва ғайра кор мекунад. Агар зарур бошад, дар оянда ин корро кардан мумкин аст.
Хостинги мундариҷаи статикӣ
Ин нукта метавонад хеле возеҳ ба назар расад, аммо он барои як барномаи кам ё камтар стандартӣ зарур аст. Моҳияти он оддӣ аст: ҳама мундариҷаи статикӣ на аз ҳамон сервере, ки барнома ҷойгир аст, балки аз серверҳои махсусе, ки махсус ба ин вазифа бахшида шудаанд, тақсим карда мешавад. Дар натиҷа, ин амалиётҳо зудтар иҷро мешаванд (nginx шартӣ нисбат ба сервери Java ба файлҳо зудтар ва арзонтар хизмат мерасонад). Plus меъмории CDN (Шабакаи интиқолдиҳии мундариҷа) ба мо имкон медиҳад, ки файлҳои худро ба корбарони ниҳоӣ наздиктар ҷойгир кунем, ки ин ба роҳати кор бо хидмат таъсири мусбӣ мерасонад.
Намунаи соддатарин ва стандартии мундариҷаи статикӣ маҷмӯи скриптҳо ва тасвирҳо барои вебсайт мебошад. Бо онҳо ҳама чиз оддӣ аст - онҳо пешакӣ маълуманд, пас бойгонӣ ба серверҳои CDN бор карда мешавад ва аз он ҷо онҳо ба корбарони ниҳоӣ тақсим карда мешаванд.
Аммо, муҳимтар аз ҳама, ҳамаи ин намунаҳо дар замимаҳои муосир хеле осон шудаанд (агар онҳо мувофиқ бошанд, албатта). Абрҳо фавран Sharding ва миқёси уфуқӣ пешниҳод мекунанд, ки ин аз фармоиш додани серверҳои гуногуни бахшидашуда дар марказҳои гуногуни маълумот хеле осонтар аст. CQRS хеле осонтар шудааст, агар танҳо аз сабаби рушди китобхонаҳо ба монанди RX. Тақрибан 10 сол пеш, як вебсайти нодир метавонад инро дастгирӣ кунад. Ба туфайли контейнерҳои омода бо Apache Kafka насб кардани манбаъи ҳодиса низ бениҳоят осон аст. 10 сол пеш ин як навоварӣ мебуд, ҳоло маъмул аст. Бо хостинги мундариҷаи статикӣ ҳамин тавр аст: аз сабаби технологияҳои нисбатан қулай (аз ҷумла он, ки ҳуҷҷатҳои муфассал ва пойгоҳи калони ҷавобҳо мавҷуданд), ин равиш боз ҳам соддатар шудааст.
Дар натиҷа, татбиқи як қатор намунаҳои хеле мураккаби меъморӣ ҳоло хеле осонтар шудааст, яъне беҳтар аст, ки онро пешакӣ дида бароем. Агар дар як барномаи даҳсола яке аз роҳҳои дар боло зикршуда бо сабаби хароҷоти баланди татбиқ ва истифода партофта шуда бошад, ҳоло дар як барномаи нав ё пас аз рефакторинг, шумо метавонед хидматеро эҷод кунед, ки аллакай аз ҷиҳати меъморӣ васеъшаванда бошад ( аз ҷиҳати иҷроиш) ва омода ба дархостҳои нави муштариён (масалан, барои маҳаллисозии маълумоти шахсӣ).
Ва муҳимтар аз ҳама: лутфан ин равишҳоро истифода набаред, агар шумо як барномаи оддӣ дошта бошед. Бале, онҳо зебо ва ҷолибанд, аммо барои як сайте, ки бо сафари қуллаи 100 нафар иборат аст, шумо метавонед аксар вақт бо як монолити классикӣ ба даст оред (ҳадди аққал дар берун, ҳама чизро дар дохили он ба модулҳо тақсим кардан мумкин аст ва ғайра).