Hi kollha! Għandna aħbar kbira, OTUS qed terġa' tniedi l-kors f'Ġunju
Jekk iltqajt ma' din il-ħaġa sħiħa tal-mikroservizzi mingħajr ebda kuntest, tkun maħfur talli taħseb li hija ftit stramba. Il-qsim ta 'applikazzjoni fi frammenti konnessi minn netwerk neċessarjament ifisser li żżid modi kumplessi ta' tolleranza ta 'ħsara mas-sistema distribwita li tirriżulta.
Għalkemm dan l-approċċ jinvolvi t-tqassim f'ħafna servizzi indipendenti, l-għan aħħari huwa ħafna aktar milli sempliċiment li dawk is-servizzi jitħaddmu fuq magni differenti. Hawnhekk qed nitkellmu dwar l-interazzjoni mad-dinja ta 'barra, li hija wkoll imqassma fl-essenza tagħha. Mhux fis-sens tekniku, iżda pjuttost fis-sens ta’ ekosistema li tikkonsisti f’ħafna nies, timijiet, programmi, u kull waħda minn dawn il-partijiet b’xi mod trid tagħmel xogħolha.
Il-kumpaniji, pereżempju, huma ġabra ta 'sistemi distribwiti li kollettivament jikkontribwixxu għall-kisba ta' xi għan. Aħna injorajna dan il-fatt għal għexieren ta 'snin, nippruvaw niksbu unifikazzjoni permezz ta' fajls FTP jew nużaw għodod ta 'integrazzjoni ta' intrapriżi filwaqt li niffukaw fuq l-għanijiet iżolati tagħna stess. Iżda bil-miġja tas-servizzi, kollox inbidel. Is-servizzi għenuna nħarsu lil hinn mill-orizzont u naraw dinja ta’ programmi interdipendenti li jaħdmu flimkien. Madankollu, biex naħdmu b'suċċess, huwa meħtieġ li nirrikonoxxu u niddisinjaw żewġ dinjiet fundamentalment differenti: id-dinja esterna, fejn ngħixu f'ekosistema ta 'ħafna servizzi oħra, u d-dinja personali, interna tagħna, fejn aħna nirregolaw waħedhom.
Din id-dinja mqassma hija differenti minn dik li trabbna fiha u mdorrijin biha. Il-prinċipji tal-kostruzzjoni ta 'arkitettura monolitika tradizzjonali ma jifilħux għall-kritika. Allura jkollna dawn is-sistemi dritt hija dwar aktar minn ħolqien ta 'dijagramma ta' whiteboard jibred jew prova ta 'kunċett jibred. Il-punt huwa li jiġi żgurat li sistema bħal din topera b'suċċess fuq perjodu twil ta 'żmien. Fortunatament, is-servizzi ilhom żmien mhux ħażin, għalkemm jidhru differenti.
Allura llum ser inħarsu lejn kif inbidlu r-regoli, għaliex għandna bżonn naħsbu mill-ġdid il-mod kif noqorbu lejn is-servizzi u d-dejta li jgħaddu lil xulxin, u għaliex ikollna bżonn għodod kompletament differenti biex nagħmlu dan.
L-inkapsulament mhux dejjem ikun ħabib tiegħek
Il-mikroservizzi jistgħu joperaw indipendentement minn xulxin. Hija din il-proprjetà li tagħtihom l-akbar valur. Din l-istess proprjetà tippermetti li s-servizzi jiżdiedu u jikbru. Mhux daqshekk fis-sens ta 'skala għal kwadriljuni ta' utenti jew petabytes ta 'data (għalkemm dawk jistgħu jgħinu hemmhekk ukoll), iżda fis-sens ta' skalar f'termini ta 'nies hekk kif timijiet u organizzazzjonijiet jikbru kontinwament.
Madankollu, l-indipendenza hija xabla doppja. Jiġifieri, is-servizz innifsu jista’ jaħdem faċilment u b’mod naturali. Imma jekk funzjoni tiġi implimentata fi ħdan servizz li teħtieġ l-użu ta’ servizz ieħor, allura nispiċċaw ikollna nagħmlu bidliet fiż-żewġ servizzi kważi simultanjament. F'monolith dan huwa faċli li tagħmel, inti sempliċiment tagħmel bidla u tibgħatha għar-rilaxx, iżda fil-każ ta 'sinkronizzazzjoni tas-servizzi indipendenti se jkun hemm aktar problemi. Il-koordinazzjoni bejn it-timijiet u ċ-ċikli tar-rilaxx teqred l-aġilità.
Bħala parti mill-approċċ standard, huma sempliċement jippruvaw jevitaw bidliet tedjanti minn tarf sa tarf, jaqsmu b'mod ċar il-funzjonalità bejn is-servizzi. Is-servizz ta' single sign-on jista' jkun eżempju tajjeb hawnhekk. Għandu rwol definit b'mod ċar li jiddifferenzjah minn servizzi oħra. Din is-separazzjoni ċara tfisser li f'dinja ta' talbiet li qed jinbidlu malajr fuq is-servizzi ta' madwarha, is-servizz ta' single sign-on x'aktarx li ma jinbidelx. Jeżisti f'kuntest strettament limitat.
Il-problema hija li fid-dinja reali, is-servizzi tan-negozju ma jistgħux iżommu l-istess separazzjoni pura tar-rwoli l-ħin kollu. Pereżempju, l-istess servizzi tan-negozju jaħdmu aktar b'dejta li ġejja minn servizzi oħra simili. Jekk inti involut fil-bejgħ bl-imnut onlajn, allura l-ipproċessar tal-fluss tal-ordnijiet, il-katalgu tal-prodott jew l-informazzjoni tal-utent se jsiru rekwiżit għal ħafna mis-servizzi tiegħek. Kull wieħed mis-servizzi se jkollu bżonn aċċess għal din id-dejta biex jopera.
Il-biċċa l-kbira tas-servizzi tan-negozju jaqsmu l-istess fluss tad-dejta, u għalhekk ix-xogħol tagħhom huwa invarjabbilment marbut ma' xulxin.
Għalhekk naslu għal punt importanti ta’ min jitkellem dwaru. Filwaqt li s-servizzi jaħdmu tajjeb għall-komponenti tal-infrastruttura li joperaw fil-biċċa l-kbira b’mod iżolat, il-biċċa l-kbira tas-servizzi tan-negozju jispiċċaw marbuta ħafna aktar mill-qrib.
Dikotomija tad-data
Jista' jkun li diġà jeżistu approċċi orjentati lejn is-servizz, iżda għad m'għandhomx għarfien dwar kif jaqsmu ammonti kbar ta' dejta bejn is-servizzi.
Il-problema ewlenija hija li d-dejta u s-servizzi huma inseparabbli. Min-naħa waħda, l-inkapsulament iħeġġiġna biex naħbu d-dejta sabiex is-servizzi jkunu jistgħu jiġu separati minn xulxin u jiffaċilitaw it-tkabbir tagħhom u aktar bidliet. Min-naħa l-oħra, jeħtieġ li nkunu nistgħu naqsmu u nirbħu liberament id-data kondiviża, bħal kull data oħra. Il-punt huwa li tkun tista 'tibda taħdem immedjatament, liberament bħal fi kwalunkwe sistema ta' informazzjoni oħra.
Madankollu, is-sistemi tal-informazzjoni ftit għandhom x'jaqsmu mal-inkapsulament. Fil-fatt, huwa pjuttost l-oppost. Id-databases jagħmlu dak kollu li jistgħu biex jipprovdu aċċess għad-data li jaħżnu. Jiġu b'interface dikjarattiva qawwija li tippermettilek timmodifika d-dejta kif għandek bżonn. Tali funzjonalità hija importanti fl-istadju ta’ riċerka preliminari, iżda mhux għall-ġestjoni tal-kumplessità dejjem tikber ta’ servizz li qed jevolvi kontinwament.
U hawn tqum dilemma. Kontradizzjoni. Dikotomija. Wara kollox, is-sistemi tal-informazzjoni huma dwar il-provvista tad-dejta, u s-servizzi huma dwar il-ħabi.
Dawn iż-żewġ forzi huma fundamentali. Huma jsaħħu ħafna mix-xogħol tagħna, kontinwament jiġġieldu għall-eċċellenza fis-sistemi li nibnu.
Hekk kif is-sistemi tas-servizz jikbru u jevolvu, naraw il-konsegwenzi tad-dikotomija tad-dejta f'ħafna modi. Jew l-interface tas-servizz se tikber, li tipprovdi firxa dejjem tiżdied ta 'funzjonalità u tibda tidher qisha database homegrown ħafna fancy, jew aħna se nsiru frustrati u nimplimentaw xi mod biex niksbu jew nimxu en masse settijiet sħaħ ta' data minn servizz għal servizz.
Min-naħa tiegħu, il-ħolqien ta 'xi ħaġa li tidher qisha database fancy homegrown se jwassal għal għadd sħiħ ta' problemi. Mhux se nidħlu fid-dettalji dwar għaliex hija perikoluża database kondiviża, ejja ngħidu biss li tirrappreżenta inġinerija u operazzjonali għalja sinifikanti
L-agħar huwa li l-volumi tad-dejta jkabbru l-problemi tal-konfini tas-servizz. Iktar ma jkun hemm dejta kondiviża f'servizz, iktar issir kumplessa l-interface u aktar se jkun diffiċli li jiġu kkombinati settijiet ta' dejta li ġejjin minn servizzi differenti.
L-approċċ alternattiv ta 'estrazzjoni u ċaqliq ta' settijiet ta 'dejta sħaħ għandu wkoll il-problemi tiegħu. Approċċ komuni għal din il-mistoqsija qisu sempliċiment irkuprar u jaħżnu s-sett tad-dejta kollu, u mbagħad jaħżnu lokalment f'kull servizz li jikkunsma.
Il-problema hija li servizzi differenti jinterpretaw id-dejta li jikkunsmaw b'mod differenti. Din id-data hija dejjem fil-idejn. Huma modifikati u pproċessati lokalment. Pjuttost malajr ma jibqgħux ikollhom xi ħaġa komuni mad-dejta fis-sors.
Iktar ma jkunu jistgħu jinbidlu l-kopji, aktar id-dejta se tvarja maż-żmien.
Biex tgħaxxaq, data bħal din hija diffiċli biex tikkoreġi retrospettivament (
Biex insibu soluzzjoni għal din il-problema, irridu naħsbu b'mod differenti dwar id-dejta kondiviża. Għandhom isiru oġġetti tal-ewwel klassi fl-arkitetturi li nibnu.
Il-problema hija li l-ebda approċċ mhu rilevanti llum, peress li la l-interfaces tas-servizz, la l-messaġġi, u lanqas id-Database Kondiviża ma joffru soluzzjoni tajba biex taħdem ma 'dejta esterna. L-interfaces tas-servizz mhumiex adattati ħażin għall-iskambju tad-dejta fi kwalunkwe skala. Il-messaġġi jċaqalqu d-dejta iżda ma jaħżnux l-istorja tagħha, u għalhekk id-dejta ssir korrotta maż-żmien. Databases Kondiviżi jiffokaw wisq fuq punt wieħed, li jżomm lura l-progress. Inevitabbilment nibqgħu mwaħħlin f'ċiklu ta' falliment tad-dejta:
Ċiklu ta' falliment tad-data
Streams: approċċ deċentralizzat għad-dejta u s-servizzi
Idealment, għandna bżonn nibdlu l-mod kif jaħdmu s-servizzi b'dejta kondiviża. F'dan il-punt, jew l-approċċi jiffaċċjaw id-dikotomija msemmija hawn fuq, peress li m'hemm l-ebda trab maġiku li jista 'jitbexxex fuqha biex tisparixxi. Madankollu, nistgħu naħsbu mill-ġdid il-problema u naslu għal kompromess.
Dan il-kompromess jinvolvi ċertu grad ta' ċentralizzazzjoni. Nistgħu nużaw il-mekkaniżmu ta 'log distribwit għaliex jipprovdi flussi affidabbli u skalabbli. Issa rridu li s-servizzi jkunu jistgħu jingħaqdu u joperaw fuq dawn il-fili kondiviżi, iżda rridu nevitaw Servizzi Alla kumplessi ċentralizzati li jagħmlu dan l-ipproċessar. Għalhekk, l-aħjar għażla hija li tinbena l-ipproċessar tal-flussi f'kull servizz tal-konsumatur. B'dan il-mod, is-servizzi jkunu jistgħu jgħaqqdu settijiet ta' data minn sorsi differenti u jaħdmu magħhom kif jeħtieġu.
Mod wieħed biex jinkiseb dan l-approċċ huwa permezz tal-użu ta 'pjattaforma ta' streaming. Hemm ħafna għażliet, iżda llum se nħarsu lejn Kafka, peress li l-użu tal-Ipproċessar Stateful Stream tiegħu jippermettilna nsolvu b'mod effettiv il-problema ppreżentata.
L-użu ta 'mekkaniżmu ta' qtugħ imqassam jippermettilna nsegwu l-mogħdija mifruxa sew u nużaw messaġġi biex naħdmu magħhom
Jekk sensar huwa responsabbli għal illoggjar distribwit aktar milli sistema ta 'messaġġi tradizzjonali, tista' tieħu vantaġġ minn karatteristiċi addizzjonali. It-trasport jista 'jiskala lineari kważi kif ukoll sistema ta' fajl distribwit. Id-dejta tista 'tinħażen fiz-zkuk għal żmien pjuttost twil, u għalhekk irridu mhux biss skambju ta' messaġġi, iżda wkoll ħażna ta 'informazzjoni. Ħażna skalabbli mingħajr il-biża 'ta' stat kondiviż mutabbli.
Imbagħad tista' tuża l-ipproċessar tal-flussi stateful biex iżżid għodod tad-database dikjarattivi mas-servizzi li jikkunsmaw. Din hija idea importanti ħafna. Filwaqt li d-dejta tinħażen fi flussi kondiviżi li s-servizzi kollha jistgħu jaċċessaw, l-aggregazzjoni u l-ipproċessar li jagħmel is-servizz huma privati. Huma jsibu ruħhom iżolati f'kuntest strettament limitat.
Elimina d-dikotomija tad-dejta billi tissepara l-fluss tal-istat immutabbli. Imbagħad żid din il-funzjonalità ma 'kull servizz billi tuża Stateful Stream Processing.
Għalhekk, jekk is-servizz tiegħek jeħtieġ li jaħdem ma 'ordnijiet, katalgu ta' prodotti, maħżen, se jkollu aċċess sħiħ: inti biss tiddeċiedi liema data tikkombina, fejn tipproċessaha u kif għandha tinbidel maż-żmien. Minkejja l-fatt li d-dejta hija kondiviża, ix-xogħol magħha huwa kompletament deċentralizzat. Jiġi prodott f'kull servizz, f'dinja fejn kollox imur skond ir-regoli tiegħek.
Aqsam id-dejta mingħajr ma tikkomprometti l-integrità tagħha. Inkapsula l-funzjoni, mhux is-sors, f'kull servizz li jeħtieġha.
Jiġri li d-dejta trid tiġi mċaqalqa b'mod massiv. Xi drabi servizz jeħtieġ dataset storiku lokali fil-magna tad-database magħżula. Il-trick huwa li tista 'tiggarantixxi li, jekk meħtieġ, kopja tista' tiġi restawrata mis-sors billi taċċessa l-mekkaniżmu ta 'logging distribwit. Konnetturi f'Kafka jagħmlu biċċa xogħol tajba minn dan.
Għalhekk, l-approċċ diskuss illum għandu diversi vantaġġi:
- Id-dejta tintuża fil-forma ta 'flussi komuni, li jistgħu jinħażnu fi zkuk għal żmien twil, u l-mekkaniżmu biex taħdem b'dejta komuni huwa hardwired f'kull kuntest individwali, li jippermetti li s-servizzi jaħdmu faċilment u malajr. B'dan il-mod, id-dikotomija tad-dejta tista 'tiġi bilanċjata.
- Id-dejta li ġejja minn servizzi differenti tista' tiġi kkombinata faċilment f'settijiet. Dan jissimplifika l-interazzjoni ma 'data kondiviża u jelimina l-ħtieġa li jinżammu settijiet ta' data lokali fid-database.
- L-Ipproċessar ta 'Streamful Stateful biss jaħżen id-dejta, u s-sors tal-verità jibqa' r-reġistri ġenerali, għalhekk il-problema tal-korruzzjoni tad-dejta maż-żmien mhix daqshekk akuta.
- Fil-qalba tagħhom, is-servizzi huma mmexxija mid-data, li jfisser li minkejja l-volumi dejjem jiżdiedu ta 'data, is-servizzi xorta jistgħu jirrispondu malajr għall-avvenimenti tan-negozju.
- Kwistjonijiet ta 'skalabbiltà jaqgħu fuq is-sensar, mhux is-servizzi. Dan inaqqas b'mod sinifikanti l-kumplessità tas-servizzi tal-kitba, peress li m'hemmx bżonn li wieħed jaħseb dwar l-iskalabbiltà.
- Iż-żieda ta’ servizzi ġodda ma teħtieġx li jinbidlu dawk qodma, għalhekk il-konnessjoni ta’ servizzi ġodda ssir aktar faċli.
Kif tistgħu taraw, dan huwa aktar minn sempliċi REST. Irċevejna sett ta 'għodod li jippermettulek taħdem b'dejta kondiviża b'mod deċentralizzat.
Mhux l-aspetti kollha ġew koperti fl-artiklu tal-lum. Għad għandna bżonn insemmu kif nibbilanċjaw bejn il-paradigma tat-talba-rispons u l-paradigma mmexxija mill-avvenimenti. Imma nittrattaw dan id-darba li jmiss. Hemm suġġetti li trid issir taf aħjar, pereżempju, għaliex Stateful Stream Processing huwa daqshekk tajjeb. Se nitkellmu dwar dan fit-tielet artiklu. U hemm kostruzzjonijiet qawwija oħra li nistgħu nieħdu vantaġġ minnhom jekk nirrikorru għalihom, pereżempju,
Imma għalissa, ftakar dan: id-dikotomija tad-dejta hija forza li niffaċċjaw meta nibnu servizzi tan-negozju. U rridu niftakru dan. Il-trick huwa li ddawwar kollox fuq rasha u tibda tittratta data kondiviża bħala oġġetti tal-ewwel klassi. Stateful Stream Processing jipprovdi kompromess uniku għal dan. Tevita "Komponenti ta 'Alla" ċentralizzati li jżommu lura l-progress. Barra minn hekk, jiżgura l-aġilità, l-iskalabbiltà u r-reżiljenza tal-pipelines tal-istreaming tad-dejta u jżidhom ma 'kull servizz. Għalhekk, nistgħu niffukaw fuq il-fluss ġenerali ta 'kuxjenza li kwalunkwe servizz jista' jgħaqqad u jaħdem bid-dejta tiegħu. Dan jagħmel is-servizzi aktar skalabbli, interkambjabbli u awtonomi. Għalhekk mhux biss se jidhru tajbin fuq whiteboards u testijiet tal-ipoteżi, iżda wkoll se jaħdmu u jevolvu għal għexieren ta 'snin.
Sors: www.habr.com