![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Ny fananganana rafitra fitsinjarana azo ianteherana, azo alaina be dia be ary azo esorina dia mila fanarahana teknika, fitsipika ary lamina manokana. Ny famolavolana rafitra toy izany dia mitaky famahana olana maro. Anisan'ny olana miparitaka be sy fototra ny olana momba ny fanoratana roa .
Ny "olana amin'ny fanoratana roa" dia fanamby mipoitra amin'ny rafitra zaraina, indrindra rehefa mifandray amin'ny loharanom-baovao maromaro na angon-drakitra tokony hotazonina miaraka. Izy io dia manondro ny fahasarotan'ny fiantohana fa ny fanovana angon-drakitra dia nosoratana tsy tapaka amin'ny toeram-pivarotana data isan-karazany, toy ny angon-drakitra na cache, nefa tsy misy olana toy ny tsy fitovian'ny angon-drakitra, fifandirana, na bottleneck fampisehoana.
Ny maritrano microservices sy ny angon-drakitra modely isaky ny serivisy dia mitondra tombony maro ho anao, toy ny fametrahana tsy miankina sy ny fanamafisam-peo, ny tsy fahombiazana mitoka-monina, ary ny mety ho fampisondrotana ny hafainganan'ny fampandrosoana. Na izany aza, ny fampandehanana dia mitaky fanovana eo amin'ny microservices maro, manery anao hieritreritra vahaolana azo antoka hamahana ity olana ity.
Andeha isika handinika toe-javatra iray ahitana ny sehatra misy antsika ny fanekena ny fampindramam-bola, ny fanombanana azy ireo, ary avy eo ny fandefasana fampandrenesana ho an'ny mpanjifa.
Ao anatin'ny toe-tsain'ny foto-kevitry ny andraikitra tokana, ny lalànan'i Conway, ary ny fomba fandrafetana entin'ny sehatra, taorian'ny fotoam-pivoriana maromaro, dia nozaraina ho faritra telo ny sehatra iray manontolo miaraka amin'ny toe-javatra voafaritra voafaritra manana fetra mazava, modely amin'ny sehatra ary fiteny hatraiza hatraiza.
Ny voalohany dia tompon'andraikitra amin'ny fampidirana sy fanangonana fangatahana fampindramam-bola vaovao. Ny rafitra faharoa dia manombana ireo fampiharana ireo ary mandray fanapahan-kevitra mifototra amin'ny angona nomena. Ity dingana fanombanana ity, ao anatin'izany ny KYC/KYB, ny fanoherana ny hosoka, ary ny fisavana ny loza mety hitranga amin'ny crédit, dia mety handany fotoana, mitaky fahaizana mitantana fangatahana an'arivony miaraka. Noho izany, io fampiasa io dia natolotra ho an'ny microservice natokana ho an'ny angon-drakitra manokana, mamela ny fanamafisam-peo tsy miankina.
Ankoatr'izay, ireo subsystem ireo dia tantanin'ny ekipa roa samy hafa, samy manana ny tsingerin'ny famotsorana azy manokana, ny fifanarahana amin'ny haavon'ny serivisy (SLA), ary ny fepetra takian'ny scalability.
Farany , misy serivisy fampandrenesana manokana mandefa fanairana amin'ny mpanjifa.
Ity misy famaritana voadio momba ny tranga fampiasana voalohany ny rafitra:
Rafitra tsotra sy tsotra io raha vao jerena, fa andeha hojerentsika ny fomba fiasan'ny serivisy fangatahana fampindramam-bola amin'ny fandefasana baiko fangatahana fampindramam-bola.
Afaka mandinika fomba roa amin'ny fifandraisana amin'ny serivisy isika:
First-Local-Commit-Then-Publish: Amin'ity fomba ity, ny serivisy dia manavao ny angona ao an-toerana (manolotra) ary avy eo dia mamoaka hetsika na hafatra amin'ny serivisy hafa.
Voalohany-Publish-Then-Local-Commit: Mifanohitra amin'izany, ity fomba ity dia ahitana famoahana hetsika na hafatra alohan'ny hanaovana ny fanovana amin'ny angon-drakitra eo an-toerana.
Samy manana ny tsy fahampiana ireo fomba roa ireo ary ampahany ihany no tsy mahomby amin'ny fifandraisana amin'ny rafitra mizara.
Ity dia kisary filaharan'ny fampiharana ny fomba fiasa voalohany.
Amin'ity toe-javatra ity, ny serivisy fampiharana fampindramam-bola dia mampiasa ny fomba First-Local-Commit-Then-Publish , izay anaovanany fifampiraharahana voalohany ary avy eo manandrana mandefa fampahafantarana amin'ny rafitra hafa. Na izany aza, ity dingana ity dia mety ho tsy mahomby raha toa ka misy olana amin'ny tambajotra, ohatra, ny serivisy fanombanana tsy misy, na ny serivisy fampiharana fampindramam-bola dia sendra diso tsy misy fitadidiana (OOM) ary fianjerana. Amin'ny toe-javatra toy izany, ny hafatra dia ho very, mamela ny fanombanana tsy misy filazana momba ny fampindramam-bola vaovao, raha tsy misy fepetra fanampiny ampiharina.
Ary ny faharoa.
Ao amin'ny toe-javatra Voalohany-Publish-Then-Local-Commit , miatrika risika lehibe kokoa ny Serivisy Fampindram-bola. Mety hampahafantatra ny Service Assessment momba ny fampiharana vaovao izany saingy tsy voatahiry eo an-toerana ity fanavaozana ity noho ny olana toy ny olan'ny angon-drakitra, ny fahadisoana fitadidiana, na ny kaody bug. Ity fomba fiasa ity dia mety hiteraka tsy fitovian-kevitra lehibe amin'ny angon-drakitra, izay mety hiteraka olana lehibe, arakaraka ny fomba itondran'ny Loan Review Service ny fangatahana ho avy.
Noho izany, tsy maintsy mamantatra vahaolana isika izay manolotra rafitra matanjaka amin'ny famoahana hetsika ho an'ny mpanjifa ivelany. Saingy, alohan'ny hidirana amin'ny vahaolana mety, dia tokony hohazavaina aloha ny karazana fiantohana fandefasana hafatra azo tratrarina amin'ny rafitra zaraina.
Misy karazany efatra ny antoka azonay tratrarina.
Tsy misy antoka
Tsy misy antoka fa ho tonga any amin'ny toerana haleha ny hafatra. Ny fomba fiasa Voalohany-Local-Commit-Then-Publish dia momba izany indrindra. Mety hahazo hafatra indray mandeha, imbetsaka, na tsy misy mihitsy ny mpanjifa.
Raha be indrindra indray mandeha ny fanaterana
Raha be indrindra indray mandeha ny fanaterana dia midika fa ny hafatra dia alefa any amin'ny toerana haleha raha be indrindra in-1. Ny fomba fiasa First-Local-Commit-Then-Publish dia azo ampiharina amin'izany fomba izany koa miaraka amin'ny politikan'ny andrana amin'ny sanda iray.
Farafahakeliny indray mandeha ny delivery\Consumers dia handray sy hikarakara ny hafatra rehetra saingy mety hahazo hafatra mitovy mihoatra ny indray mandeha.
Indray mandeha ihany ny fanaterana\Ny fanaterana indray mandeha dia midika fa ny mpanjifa dia handray ny hafatra mahomby indray mandeha.
Ara-teknika, azo atao ny manatratra amin'ny fifampiraharahana Kafka sy ny fampiharana manokana ny mpamokatra sy ny mpanjifa.
Amin'ny ankabeazan'ny toe-javatra, ny antoka fanaterana 'farafaharatsiny indray mandeha' dia mamaha olana maro amin'ny alàlan'ny fiantohana ny fandefasana hafatra farafaharatsiny indray mandeha, fa ny mpanjifa dia tsy maintsy ho tsy manan-kery. Na izany aza, noho ny tsy fahombiazan'ny tambajotra tsy azo ihodivirana, ny lojikan'ny mpanjifa rehetra dia tsy maintsy manana fahefana mba hisorohana ny fanodinana hafatra dika mitovy, na inona na inona antoka ataon'ny mpamokatra. Noho izany, tsy dia lesoka loatra io fepetra io fa maneho ny zava-misy.
Be dia be ny vahaolana amin'ity olana ity, izay manana ny tombony sy ny fatiantoka.
Araka ny Wikipedia, ny Two-Phase Commit (2PC) dia protocole transaction mizara ampiasaina amin'ny siansa informatika sy ny rafi-pitantanana angon-drakitra mba hiantohana ny tsy fitoviana sy ny fahatokisana ny fifampiraharahana zaraina. Izy io dia natao ho an'ny toe-javatra misy loharano maro (ohatra, angon-drakitra) mila mandray anjara amin'ny fifampiraharahana tokana, ary miantoka fa na izy rehetra dia manao ny fifampiraharahana na izy rehetra dia manafoana izany, ka mitazona ny fitovian'ny angona. Toa izay ilaintsika tokoa izany, saingy manana lesoka maromaro ny Two-Phase Commit:
Ny vahaolana miharihary indrindra ho an'ny maritrano microservices dia ny fampiharana lamina (na indraindray anti-pattern aza) — angona iombonana. Ity fomba fiasa ity dia tena intuitive raha mila fifampiraharahana ara-barotra amin'ny tabilao marobe amin'ny angon-drakitra samihafa ianao, ampiasao fotsiny ny angon-drakitra iombonana ho an'ireo microservices ireo.
Ny tsy fahampian'ity fomba fiasa ity dia ny fampidirana teboka tokana amin'ny tsy fahombiazana, ny fanakanana ny fanamafisam-peo tsy miankina, ary ny famerana ny fahafahana mampiasa vahaolana amin'ny angon-drakitra samihafa mifanaraka indrindra amin'ny fepetra manokana sy ny fampiasana. Fanampin'izany, ilaina ny fanovana ny codebases microservices hanohanana ny endrika fizarazarana toy izany.
Ny ' transactional outbox ' dia endrika endrika ampiasaina amin'ny rafitra zaraina mba hiantohana ny fampielezana hafatra azo antoka, na dia eo aza ny rafitra fandefasana hafatra tsy azo antoka. Tafiditra ao anatin'izany ny fitehirizana hetsika ao amin'ny latabatra voatondro 'OutboxEvents' ao anatin'ny fifampiraharahana mitovy amin'ilay hetsika. Ity fomba fiasa ity dia mifanaraka tsara amin'ny toetran'ny ACID amin'ny angon-drakitra mifandraika. Mifanohitra amin'izany kosa, maro ny angona No-SQL no tsy manohana tanteraka ny fananana ACID, ka misafidy ny fitsipiky ny teôrema CAP sy ny filôzôfia BASE, izay manao laharam-pahamehana ny fisiana sy ny tsy fitoviana amin'ny farany noho ny tsy fitoviana henjana.
Ny boaty fivoahana transactional dia manome antoka indray mandeha farafahakeliny ary azo ampiharina amin'ny fomba maro:
Transaction log tailing
Mpanonta fandatsaham-bato
Ny fomba fiasa amin'ny tailing log transaction dia midika amin'ny fampiasana vahaolana manokana momba ny angona toy ny CDC (Change Data Capture). Ny tsy fahampiana lehibe amin'izany fomba izany dia:
Vahaolana manokana momba ny database
Nitombo ny fahatarana noho ny fepetra manokana momba ny fampiharana CDC
Ny fomba iray hafa dia ny Polling Publisher , izay manamora ny fandefasana entana mivoaka amin'ny alàlan'ny fandatsaham-bato ny latabatra fivoahana. Ny tsy fahampiana voalohany amin'ity fomba fiasa ity dia ny mety hisian'ny fitomboan'ny enta-mavesatry ny angon-drakitra, izay mety hitarika ho amin'ny vidiny ambony kokoa. Ankoatr'izay, tsy ny angon-drakitra No-SQL rehetra no manohana ny fangatahana mahomby amin'ny fizarana antontan-taratasy manokana. Mety hiteraka fahasimbana noho izany ny fanalana ny antontan-taratasy manontolo.
Ity misy kisarisary filaharana kely manazava ny fomba fiasany.
Ny fanamby voalohany amin'ny maodely Transactional Outbox dia ny fiankinany amin'ny fananana ACID database. Mety ho tsotra izany amin'ny angon-drakitra OLTP mahazatra saingy miteraka fanamby amin'ny tontolon'ny NoSQL. Mba hamahana izany, ny vahaolana mety dia ny fampiasana ny log append (ohatra, Kafka) avy hatrany amin'ny fanombohana ny fanodinana fangatahana.
Raha tokony hikarakara mivantana ny baiko 'mandefa fangatahana fampindramam-bola' izahay, dia alefanay avy hatrany any amin'ny lohahevitra Kafka anatiny izany ary avy eo mamerina valiny 'ekena' amin'ny mpanjifa. Na izany aza, satria azo inoana fa mbola mila fikarakarana ny baiko, tsy afaka mampahafantatra avy hatrany ny vokatra izahay. Mba hitantanana an'io tsy miovaova io, dia afaka mampiasa teknika toy ny fandatsaham-bato lava, fitsapan-kevitra natomboky ny mpanjifa, fanavaozana UI be fanantenana, na fampiasana WebSockets na Hetsika nalefan'ny mpizara ho fampahafantarana. Lohahevitra miavaka anefa izany, ka andeha isika hiverina amin'ny lohahevitra voalohany.
Nandefa hafatra momba ny lohahevitra Kafka anatiny izahay. Ny Sampan-draharahan'ny Fampindramam-bola dia mandany ity hafatra ity - ny baiko mitovy amin'ny azony avy amin'ny mpanjifa - ary manomboka ny fanodinana. Voalohany, manatanteraka ny lojikan'ny fandraharahana sasany; rehefa vita soa aman-tsara io lojika io ary mitohy ny valiny, dia mamoaka hafatra vaovao momba ny lohahevitra Kafka ho an'ny daholobe.
Andeha hojerentsika kely ny pseudo-code.
public async Task HandleAsync(SubmitLoanApplicationCommand command, ...) { //First, process business logic var loanApplication = await _loanApplicationService.HandleCommandAsync(command, ...); //Then, send new events to public Kafka topic producer.Send(new LoanApplicationSubmittedEvent(loanApplication.Id)); //Then, commit offset consumer.Commit(); }
Ahoana raha tsy mahomby ny fanodinana ny lojika fandraharahana? Aza manahy, satria tsy mbola vita ny offset, dia haverina indray ny hafatra.
Ahoana raha tsy mahomby ny fandefasana hetsika vaovao any Kafka? Aza manahy, satria ny lojikan'ny fandraharahana dia idempotent, dia tsy hamorona fangatahana fampindramam-bola dika mitovy. Raha ny tokony ho izy, dia hiezaka ny handefa hafatra amin'ny lohahevitra Kafka ho an'ny daholobe.
Ahoana raha alefa any amin'ny Kafka ny hafatra, nefa tsy mahomby ny commit offset? Aza manahy, satria idempotent ny lojikan'ny fandraharahana, dia tsy hamorona fangatahana fampindramam-bola dika mitovy. Fa kosa, handefa hafatra ho an'ny lohahevitra Kafka ho an'ny daholobe izy io ary manantena fa hahomby amin'ity indray mitoraka ity ny fifanarahana offset.
Ny tsy fahampiana lehibe amin'ity fomba fiasa ity dia ahitana ny fahasarotana fanampiny mifandray amin'ny fomba fandaharana vaovao, ny tsy fitoviana amin'ny farany (satria tsy ho fantatry ny mpanjifa avy hatrany ny vokatra), ary ny fepetra takiana amin'ny lojika fandraharahana rehetra mba ho idempotent.
Inona no atao hoe hetsika sourcing, ary ahoana no azo ampiharina eto? Ny sourcing hetsika dia lamina ara-drafitra rindrambaiko ampiasaina amin'ny modely ny toetry ny rafitra amin'ny alàlan'ny fakana ireo fiovana rehetra amin'ny angonany ho andiana hetsika tsy miova. Ireo fisehoan-javatra ireo dia maneho ny zava-misy na ny fiovan'ny fanjakana ary loharano tokana ny fahamarinana ho an'ny fanjakana ankehitriny. Noho izany, ara-teknika, amin'ny alàlan'ny fampiharana rafitra fanangonana hetsika, dia efa manana ny hetsika rehetra ao amin'ny EventStore izahay, ary ity EventStore ity dia azon'ny mpanjifa ampiasaina ho loharano tokana momba ny zava-nitranga. Tsy ilaina ny vahaolana momba ny angon-drakitra manokana amin'ny fanaraha-maso ny fanovana rehetra na ny ahiahy momba ny famandrihana, ny hany olana dia mipetraka eo amin'ny sisiny vakiana satria mba hahazoana ny tena toetran'ny orinasa dia ilaina ny mamerina ny hetsika rehetra.
Ato amin'ity lahatsoratra ity, dia nandinika fomba maro hananganana hafatra azo itokisana amin'ny rafitra mizara. Misy soso-kevitra maromaro mety hodinihintsika mandritra ny fananganana rafitra misy ireo toetra ireo
Amin'ny manaraka isika dia hijery ohatra azo ampiharina kokoa amin'ny fampiharana ny Transactional Outbox. JEREO NY
ianao!