ProHoster > Blog > Rianachd > Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad
Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad
19 Sultain ann am Moscow thachair a’ chiad choinneamh cuspaireil HUG (Buidheann Luchd-cleachdaidh Highload ++), a chaidh a choisrigeadh airson microservices. Bha taisbeanadh ann “Operating Microservices: Size Matters, Even If You Have Kubernetes,” anns an do roinn sinn eòlas farsaing Flant ann a bhith ag obair phròiseactan le ailtireachd microservice. An toiseach, bidh e feumail don h-uile neach-leasachaidh a tha a 'smaoineachadh air an dòigh-obrach seo a chleachdadh anns a' phròiseact làithreach no san àm ri teachd aca.
A ’toirt a-steach bhidio den aithisg (50 mionaid, fada nas fiosrachail na an artaigil), a bharrachd air a 'phrìomh earrann bhuaithe ann an cruth teacsa.
NB: Tha bhidio agus taisbeanadh rim faighinn aig deireadh na dreuchd seo cuideachd.
Ro-ràdh
Mar as trice tha toiseach tòiseachaidh, prìomh chuilbheart agus rùn aig deagh sgeulachd. Tha an aithisg seo nas coltaiche ri ro-ràdh, agus duilich aig an sin. Tha e cuideachd cudromach cuimhneachadh gu bheil e a’ toirt sealladh taobh a-muigh air microservices. brath.
Tòisichidh mi leis a’ ghraf seo, agus an t-ùghdar (ann an 2015) thàinig Màrtainn Fowler:
Tha e a 'sealltainn mar a tha, ann an cùis tagradh monolithic a ruigeas luach sònraichte, cinneasachd a' tòiseachadh a 'crìonadh. Tha microservices eadar-dhealaichte leis gu bheil an toradh tùsail leotha nas ìsle, ach mar a tha iom-fhillteachd ag àrdachadh, chan eil an lughdachadh ann an èifeachdas cho follaiseach dhaibh.
Cuiridh mi ris a’ ghraf seo airson cùis Kubernetes a chleachdadh:
Carson a tha tagradh le microservices nas fheàrr? Leis gu bheil an leithid de dh ’ailtireachd a’ cur air adhart fìor riatanasan airson an ailtireachd, a tha e fhèin air a chòmhdach gu foirfe le comasan Kubernetes. Air an làimh eile, bidh cuid den ghnìomhachd seo feumail airson monolith, gu sònraichte leis nach e monolith àbhaisteach a th’ ann am monolith an-diugh (bidh mion-fhiosrachadh nas fhaide air adhart san aithisg).
Mar a chì thu, chan eil an graf mu dheireadh (nuair a tha an dà chuid tagraidhean monolithic agus microservice anns a 'bhun-structair le Kubernetes) glè eadar-dhealaichte bhon fhear thùsail. An ath rud bruidhnidh sinn mu thagraidhean air an ruith le Kubernetes.
Microservices feumail agus cronail
Agus seo am prìomh bheachd:
Na th'ann àbhaisteach ailtireachd microservice? Bu chòir dha fìor bhuannachdan a thoirt dhut, ag àrdachadh do èifeachdas obrach. Ma thèid sinn air ais chun ghraf, seo e:
Ma chuireas tu fòn oirre feumail, an uairsin air taobh eile a’ ghraf bidh cronail microservices (a 'cur bacadh air obair):
A’ tilleadh chun “phrìomh bheachd”: am bu chòir earbsa a bhith agam san eòlas agam idir? Bho thoiseach na bliadhna seo tha mi air coimhead 85 pròiseactan. Cha b 'e microservices a bh' annta uile (bha an leithid de dh'ailtireachd aig mu thrian gu leth dhiubh), ach tha seo fhathast na àireamh mhòr. Bidh sinne (companaidh Flant) mar luchd-reic a-muigh a’ riaghladh measgachadh farsaing de thagraidhean fhaicinn air an leasachadh an dà chuid ann an companaidhean beaga (le luchd-leasachaidh 5) agus ann an feadhainn mòra (~ leasaiche 500). Is e buannachd a bharrachd gu bheil sinn a’ faicinn na h-aplacaidean sin beò agus ag atharrachadh thar nam bliadhnaichean.
Carson a tha microservices?
Gus a 'cheist mu na buannachdan a tha aig microservices tha freagairt gu math sònraichte bho Martin Fowler a chaidh ainmeachadh mar-thà:
crìochan soilleir modularity;
cleachdadh neo-eisimeileach;
saorsa airson teicneòlasan a thaghadh.
Tha mi air mòran bruidhinn ri ailtirean bathar-bog agus luchd-leasachaidh agus dh'fhaighnich mi carson a tha feum aca air microservices. Agus rinn mi mo liosta de na bha iad an dùil. Seo na thachair:
Ma bheir sinn cunntas air cuid de na puingean “ann an faireachdainnean,” an uairsin:
crìochan soilleir de mhodalan: an seo tha monolith uamhasach againn, agus a-nis bidh a h-uile càil air a rèiteachadh gu sgiobalta ann an stòran Git, anns a bheil a h-uile dad “air na sgeilpichean”, chan eil am blàth agus am bog measgaichte;
neo-eisimeileachd cleachdadh: bidh e comasach dhuinn seirbheisean a sgaoileadh gu neo-eisimeileach gus am bi leasachadh a’ dol nas luaithe (feartan ùra fhoillseachadh aig an aon àm);
neo-eisimeileachd leasachaidh: is urrainn dhuinn am meanbh-sheirbheis seo a thoirt do aon sgioba/leasaiche, agus sin do sgioba eile, leis an urrainn dhuinn leasachadh nas luaithe;
боbarrachd earbsachd: ma thachras truailleadh pàirt (tha aon mhicro-sheirbheis a-mach à 20 a’ tuiteam), cha stad ach aon phutan ag obair, agus cumaidh an siostam gu h-iomlan ag obair.
Ailtireachd microservice àbhaisteach (cronail).
Gus mìneachadh carson nach e fìrinn na tha sinn a’ dùileachadh, nochdaidh mi co-thional ìomhaigh de ailtireachd microservice stèidhichte air eòlas bho iomadh pròiseact eadar-dhealaichte.
Bhiodh eisimpleir mar stòr air-loidhne eas-chruthach a tha gu bhith a’ farpais ri Amazon no co-dhiù OZON. Tha an ailtireachd microservice aige a’ coimhead mar seo:
Airson measgachadh de adhbharan, tha na microservices sin sgrìobhte air diofar àrd-ùrlaran:
Leis gum feum fèin-riaghladh a bhith aig gach microservice, feumaidh mòran dhiubh an stòr-dàta agus an tasgadan aca fhèin. Tha an ailtireachd mu dheireadh mar a leanas:
Dè na buaidhean a th’ aige?
Tha seo aig Fowler cuideachd tha artaigil ann - mun “phàigheadh” airson a bhith a’ cleachdadh microservices:
Agus chì sinn an deach na dùilean againn a choileanadh.
Crìochan soilleir de mhodalan ...
ach cia mheud meanbh-sheirbheisean a dh’ fheumas sinn a chàradh?gus an t-atharrachadh a sgaoileadh? An urrainn dhuinn eadhon faighinn a-mach mar a bhios a h-uile càil ag obair às aonais lorgaire sgaoilte (às deidh a h-uile càil, tha iarrtas sam bith air a phròiseasadh le leth de na microservices)?
Tha pàtran ann"cnap mòr de shalachar“, Agus an seo thionndaidh e a-mach gur e cnap sgaoilte de shalachar a bh’ ann. Gus seo a dhearbhadh, seo dealbh tuairmseach air mar a thèid iarrtasan:
Neo-eisimeileachd cleachdadh...
Gu teicnigeach, chaidh a choileanadh: is urrainn dhuinn gach microservice a sgaoileadh air leth. Ach ann an cleachdadh feumaidh tu a bhith mothachail gu bheil e an-còmhnaidh ga sgaoileadh mòran microservices, agus feumaidh sinn suim a ghabhail òrdugh an cur a-mach. Ann an dòigh mhath, mar as trice feumaidh sinn deuchainn a dhèanamh ann an cuairt air leth a bheil sinn a’ sgaoileadh an sgaoileadh san òrdugh cheart.
Saorsa teicneòlas a thaghadh...
Tha i. Dìreach cuimhnich gu bheil saorsa gu tric a 'crìochnachadh air eucoir. Tha e glè chudromach an seo gun a bhith a’ taghadh theicneòlasan dìreach airson “cluich” leotha.
Neo-eisimeileachd leasachaidh...
Mar a nì thu lùb deuchainn airson an tagradh gu lèir (le uimhir de phàirtean)? Ach feumaidh tu fhathast a chumail ùraichte. Tha seo uile a 'leantainn gu an fhìrinn gu bheil an fhìor àireamh de chuairtean deuchainn, a dh’fhaodas a bhith againn ann am prionnsapal, tionndadh a-mach gu bhith glè bheag.
Dè mu dheidhinn a bhith a’ cleachdadh seo gu h-ionadail?.. Tha e a’ tionndadh a-mach gum bi an leasaiche gu tric a’ dèanamh a chuid obrach gu neo-eisimeileach, ach “air thuaiream”, leis gu bheil aige ri feitheamh gus am bi an cuairteachadh saor airson deuchainn.
Sgèileadh air leth ...
Tha, ach tha e cuingealaichte anns an raon den DBMS a thathar a’ cleachdadh. Anns an eisimpleir ailtireachd a chaidh a thoirt seachad, cha bhi duilgheadasan aig Cassandra, ach bidh MySQL agus PostgreSQL.
Боbarrachd earbsachd ...
Chan e a-mhàin gu bheil fàilligeadh aon mhicro-sheirbheis ann an da-rìribh gu tric a’ briseadh ceart obrachadh an t-siostam gu lèir, ach tha duilgheadas ùr ann cuideachd: tha e glè dhoirbh a bhith a’ dèanamh a h-uile microservice locht-fulangach. Leis gu bheil microservices a 'cleachdadh theicneòlasan eadar-dhealaichte (memcache, Redis, msaa), airson gach fear feumaidh tu smaoineachadh air a h-uile càil agus a chur an gnìomh, a tha, gu dearbh, comasach, ach a dh' fheumas goireasan mòra.
Luchdaich a-nuas tomhais.. .
Tha seo fìor mhath.
An “aotromachd” de mhicro-sheirbheisean ...
Chan e a-mhàin gu bheil mòr againn lìonra os cionn (tha iarrtasan airson DNS ag iomadachadh, msaa), ach cuideachd air sgàth an iomadh fo-cheist a thòisich sinn dàta ath-aithris (stòr caches), a lean gu tòrr stòraidh.
Agus seo an toradh bho bhith a’ coileanadh ar dùilean:
Ach chan e sin uile!
Air sgàth:
Is dòcha gum feum sinn bus teachdaireachd.
Ciamar a nì thu cùl-taic cunbhalach aig an àm cheart? An aon fhear fìor Is e an roghainn trafaic a chuir dheth airson seo. Ach ciamar a nì thu seo ann an riochdachadh?
Ma tha sinn a’ bruidhinn mu bhith a’ toirt taic do ghrunn roinnean, is e obair gu math dian a th’ ann a bhith ag eagrachadh seasmhachd anns gach fear dhiubh.
Tha an duilgheadas ann a bhith a’ dèanamh atharrachaidhean meadhanaichte ag èirigh. Mar eisimpleir, ma dh'fheumas sinn an tionndadh PHP ùrachadh, feumaidh sinn gealltainn do gach stòr (agus tha dusanan dhiubh ann).
Tha am fàs ann an iom-fhillteachd obrachaidh, neo-làimhe, eas-chruthach.
Dè a dhèanamh le seo uile?
Tòisich le tagradh monolithic. Eòlas Fowler ag ràdh gun do thòisich cha mhòr a h-uile tagradh microservice soirbheachail mar monolith a dh'fhàs ro mhòr agus an uairsin briste. Aig an aon àm, cha mhòr nach eil a h-uile siostam a chaidh a thogail mar microservices bhon fhìor thoiseach luath no mall air eòlas fhaighinn air fìor dhuilgheadasan.
Is e beachd luachmhor eile, airson pròiseact le ailtireachd microservice a bhith soirbheachail, feumaidh fios a bhith agad gu math agus cuspair, agus mar a nì thu meanbh-sheirbheisean. Agus is e an dòigh as fheàrr air raon cuspair ionnsachadh monolith a dhèanamh.
Ach dè ma tha sinn mar-thà san t-suidheachadh seo?
Is e a’ chiad cheum gu fuasgladh fhaighinn air duilgheadas sam bith aontachadh leis agus tuigsinn gur e duilgheadas a th’ ann, nach eil sinn airson fulang tuilleadh.
Ma tha, ann an cùis monolith fàsmhor (nuair a tha sinn air ruith a-mach às a ’chothrom goireasan a bharrachd a cheannach dha), bidh sinn ga ghearradh, an uairsin anns a’ chùis seo thig an sgeulachd eile a-mach: nuair nach bi cus microservices a ’cuideachadh tuilleadh, ach a’ cur bacadh air - gearradh dheth agus meudaich e!
Mar eisimpleir, airson an ìomhaigh choitcheann a chaidh a dheasbad gu h-àrd ...
Faigh cuidhteas na microservices as ceasnachail:
Cuir còmhla a h-uile meanbh-sheirbheisean le uallach airson gineadh aghaidh:
... ann an aon mhion-sheirbheis, sgrìobhte ann an aon chànan / frèam (ùr-nodha agus àbhaisteach, mar a tha thu fhèin a’ smaoineachadh):
Bidh aon ORM (aon DBMS) aige agus an toiseach tagradh no dhà:
ach san fharsaingeachd faodaidh tu tòrr a bharrachd a ghluasad an sin, a’ faighinn an toradh a leanas:
A bharrachd air an sin, ann an Kubernetes bidh sinn a’ ruith seo gu lèir ann an suidheachaidhean eadar-dhealaichte, a tha a’ ciallachadh gun urrainn dhuinn fhathast an luchd a thomhas agus an sgèile air leth.
Geàrr-chunntas a thoirt air
Seall air an dealbh nas motha. Glè thric, bidh na duilgheadasan sin uile le microservices ag èirigh air sgàth gu robh cuideigin a ’dèanamh an obair, ach ag iarraidh“ cluich le microservices”.
Anns an fhacal "microservices" tha am pàirt "micro" gun fheum.. Tha iad "micro" a-mhàin seach gu bheil iad nas lugha na monolith mòr. Ach na smaoinich orra mar rud beag.
Agus airson smaoineachadh deireannach, rachamaid air ais chun chlàr thùsail:
Nòta sgrìobhte air (deas gu h-àrd) a’ goil sìos chun fhìrinn sin tha sgilean na sgioba a nì do phròiseact an-còmhnaidh bun-sgoile - bidh prìomh phàirt aca nad roghainn eadar microservices agus monolith. Mura h-eil sgilean gu leòr aig an sgioba, ach gu bheil e a 'tòiseachadh a' dèanamh microservices, bidh an sgeulachd gu cinnteach marbhtach.
Bhidiothan agus slides
Bhidio bhon òraid (~ mionaidean 50; gu mì-fhortanach, chan eil e a 'toirt seachad mòran fhaireachdainnean an luchd-tadhail, a bha gu ìre mhòr a' dearbhadh faireachdainn na h-aithisg, ach sin mar a tha e):