![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Mä sistema distribuido confiable, wali uñt’ata, escalable lurañatakixa técnicas, principios ukatxa patrones específicas ukanakaru adhesión ukawa wakisi. Ukham sistemanak lurañax walja jan walt’awinak askichañatakiwa. Uka tuqitx juk'amp uñt'atawa ukat fundamentales ukanakax doble escritura jan walt'awiwa .
“Doble qillqañ jan walt’awix” mä jan walt’awiwa, ukax sistemas distribuidos ukanw uñstaski, jilpachax walja datos fuentes jan ukax bases de datos ukanakamp apasiñax sincronización ukan uñjañaw wakisi. Ukax yatiyaw mayjt’awinakax kunayman yatiyaw imañ utanakar sapa kuti qillqt’atäñapatakix ch’amawa, kunjamatix bases de datos jan ukax cachés, jan uñt’ayasa, jan walt’awinak uñt’ayasa, kunjamatix datos ukan jan walt’awinaka, ch’axwawinaka, jan ukax cuellos de botella de rendimiento ukanaka.
Arquitectura microservicios ukat base de datos de patrones sapa servicio ukax walja askinak apaniwayi, kunjamakitix independiente despliegue ukat escalado, saparst’at jan walt’awinaka, ukat mä potencial impulso de velocidad de desarrollo. Ukampirus operaciones ukax walja microservicios ukanakan mayjt’awinakapaw wakisi, ukax mä confiable solución uka jan walt’äw askichañatak amuyt’añaruw wayt’i.
Mä escenario uñakipt’añäni, kawkhantix jiwasan dominio ukax mayt’asiñ mayiwinak katuqaña, uñakipt’aña, ukatx alertas de notificación ukanak aljirinakaruw apayaña.
Principio de un solo responsabilidad, Conway kamachi, ukhamarak dominio-driven diseño ukan amuyuparjama, walja sesiones de tormenta de eventos ukanakat qhipatxa, taqpach dominio ukax kimsa subdominios ukar jaljatawa, contextos limitados definidos ukanakampi, qhana límites ukanakampi, modelos de dominio ukat taqi chiqan utjki uka arumpi.
Nayrïrix onboarding ukat machaq solicitud de préstamo ukanakar apthapiñaw lurasi. Payïri sistema ukaxa uka aplicaciones ukanaka uñakipi ukatxa amtawinakaxa churata datos ukanakampiwa lurataraki. Aka uñakipaña lurawixa, KYC/KYB, antifraude, ukhamaraki riesgo de crédito ukanaka uñakipaña, ukaxa pacha apt’asispawa, waranq waranq mayiwinakxa mä pachana apnaqaña yatiñawa. Ukhamarusa, aka lurawixa mä microservicio dedicado ukarux delegada ukhamawa, ukaxa mä base de datos ukaniwa, ukaxa independiente escalado ukarux jay satawa.
Ukhamaraki, aka subsistemas ukaxa pä yaqha equipo ukanakampiwa apnaqataraki, sapa maynixa ciclos de liberación, acuerdos de nivel de servicio (SLA) ukhamaraki escalabilidad uka mayiwinakampi.
Qhiparusti , mä servicio especializado de notificación ukaw utji, aljirinakaruw alertas apayani.
Akax mä suma qhanañcht’awiwa sistema ukan nayrïr apnaqañ tuqitxa:
Nayrïr uñtawinx mä sistema wali sapuru ukat primitivo ukhamawa, ukampis kunjams servicio de solicitud de Préstamos ukax comando de solicitud de préstamo enviar ukax lurasi ukxat ch’allt’añäni.
Servicio ukan mayacht’asiwipatakix pä thakhi amuyt’araksnawa:
Nayrïr-Local-Commit-Ukat-Publish: Aka lurawinx, servicio ukax local base de datos (commits) ukar machaqar tukuyi ukatx mä evento jan ukax yatiyaw yaqha servicios ukar uñt’ayi.
Nayrïr-Uñt’ayaña-Ukat-Uñt’ayaña: Ukjamarus, aka lurawix mä lurawi jan ukax yatiyaw uñt’ayañawa janïr mayjt’awinak local base de datos ukar commit lurañkama.
Panpacha thakhinakax jan walt’awinakaniwa ukatx sistemas distribuidos ukan yatiyañatakix mä juk’akiw jan walt’awinakax utji.
Akax nayrïr uñakipäw apnaqañ tuqit mä secuencia uñacht’äwiwa.
Aka uñacht’awina, Servicio de Solicitud de Préstamos ukaxa Nayrïri-Local-Commit-Ukat-Publish uka lurawimpiwa irnaqaraki, kawkhantixa nayraqata mä lurawi luraraki ukatxa yant’iwa mä yatiyawi yaqha sistemaru apayaniñataki. Ukampirus aka lurawix jan walt’awinakaruw puri, sañäni, red ukan jan walt’awinakapax utjaspa, Servicio de Evaluación ukax jan utjkchiti, jan ukax Servicio de Aplicación de Préstamos ukax mä pantjasiw Fuera de Memoria (OOM) ukamp jikisi ukat jan walt’ayata. Ukhamächi ukhaxa, yatiyawix chhaqt’aspawa, ukhamat Evaluación ukax jan yatiyasa machaq qullqi mayt’asiñ mayiwitxa, jan ukax yaqha amtanakax phuqhasispawa.
Ukat payïristi.
Nayrïr-Publish-Ukat-Local-Commit uka escenario ukanx Servicio de Solicitud de Préstamos ukax juk’amp jach’a jan walt’awinakampiw uñjasi. Inas Servicio de Evaluación ukaruw machaq aplicación tuqit yatiyaspa ukampis janiw aka machaq lurawix local ukan imañapakiti kunatix jan walt’awinakax utjiwa, kunjamakitix base de datos ukan jan walt’awinaka, amuyupan pantjasiwinakapa, jan ukax código ukan jan walt’awinakapata. Aka amtawix datos ukanx wali jan walt’awinakaruw puriyaspa, ukax jach’a jan walt’awinak utjayaspa, ukax kunjams Servicio de Revisión de Préstamos ukax mantanir mayiwinakar uñji ukarjamaw lurasispa.
Ukatwa, mä solución uñt’añasawa, ukax mä ch’aman mecanismo ukaw anqäx aljirinakaruw eventos ukanakar uñt’ayañataki. Ukampis, janïr potenciales soluciones ukar ch’amanchañkamax nayraqat qhananchañasawa kuna kasta garantias de entrega de mensajes ukanakax sistemas distribuidos ukan phuqhasispa.
Pusi kasta garantianakaw utji, ukanakxa jiwasax jikxatsnawa.
Janiw kuna garantias utjkiti
Uka yatiyäwix kawkhantï sarañ munkta uka chiqar puriñapatakix janiw kuna garantias utjkiti. Nayrïr-Local-Commit-Ukat-Publish uka jak’achasiñax chiqpachapuniw uka tuqit arsu. Aljirinakax mä kuti, walja kuti, jan ukax janipuniw yatiyawinak katuqapxchispa.
Jilapachax mä kutikiw entregaña
Jilapachax mä kuti puriyañax sañ muniw yatiyawix 1 kutiw kawkir chiqarus puriyatäni. Nayrïr-Local-Commit-Ukat-Publish uka amtawix ukham phuqhasispawa ukhamarak política de retento de pruebas ukampiw mä valoranx phuqhasispa.
Mä kutis entrega\Consumidores ukax sapa yatiyaw katuqapxani ukat lurapxani ukampis pachpa yatiyaw mä kutit sipans juk’amp katuqapxaspaw.
Chiqpachansa mä kuti puriyaña\Chiqpachansa mä kuti puriyañaxa sañ muniwa, aljirixa mä kutikiwa yatiyawi suma katuqani.
Técnicamente, ukax Kafka transacciones ukat específicas idempotent implementación productor ukat consumidor ukanakamp phuqhañjamawa.
Jilapachax ‘mä kutis’ garantías de entrega ukax walja jan walt’awinak askichi, yatiyawinak mä kutis puriyañapataki, ukampis aljirinakax idempotent ukhamäpxañapawa. Ukampirus, jan jark’at red ukan jan walt’awinakapat uñjasax, taqi lógica de consumidor ukax idempotent ukhamäñapawa, ukhamat jan pä kuti yatiyawinak lurañataki, kunatix productor ukan garantianakapax janiw kunäkisa. Ukatwa, aka mayiwix janiw sinti jan walt’awikiti jan ukasti chiqpach uñacht’ayi.
Aka jan walt’awix walja askichawinakaw utji, ukax askinakaniwa, jan walt’awinakas utjarakiwa.
Wikipedia ukarjamaxa, Commisión de Dos Fases (2PC) ukaxa mä protocolo de transacción distribuida ukawa, ukaxa informática ukatxa sistemas de gestión de bases de datos ukanakanwa apnaqasi, ukhamata distribuida transacciones ukanakana chiqapa ukhamaraki chiqapa lurañataki. Ukax kunayman yänakatakiw wakicht’ata, kawkhantix walja yänakax (jan ukax, bases de datos) mä sapa lurawin chikancht’asipxañapataki, ukatx taqiniw lurawimp phuqhapxañapataki jan ukax taqiniw abortar lurapxañapataki, ukhamat datos ukan chiqapar uñjañapataki. Kuntix munktan ukax chiqpachapuniw ist’asi, ukampis Commit de Pä Fase ukax walja jan walt’awinakaniwa:
Microservicios arquitectura ukatakix juk’amp qhanpach askichawix mä patrón (jan ukax yaqhip pachax anti-patrón) — mä base de datos compartidas ukar apnaqañawa. Aka amtawix wali amuyt’atawa kunatix mä consistencia transaccional ukax walja tablas ukanakan kunayman bases de datos ukan munasispa, mä base de datos compartidas uka microservicios ukanakatakik apnaqañakiw wakisi.
Aka amtawin jan walt’awinakapax mä sapa punto de fracaso uñt’ayañawa, independiente escala de base de datos ukar jark’aqaña, ukatx kunayman soluciones de base de datos ukanak apnaqañax limitación ukawa, ukax juk’amp askiwa específicos requisitos ukat casos de uso ukataki. Ukhamarus, microservicios ukan código bases ukar mayjt’ayañax wakisispawa, ukhamat ukham forma de transacción distribuida ukar yanapt’añataki.
‘ caja de salida transaccional ’ ukax mä patrón de diseño ukawa, ukax sistemas distribuidos ukan apnaqatawa, ukhamat yatiyaw yatiyañ chiqaparu, jan atiniskañ sistemas de mensajes ukanakan nayraqatapansa. Ukax mä ‘OutboxEvents’ ukham uñt’at tabla ukan lurawinakap imañawa, ukax pachpa lurawi taypinkiwa, kunjamatix pachpa lurawix utjki ukhama. Aka amtawix propiedades ACID de bases de datos relacionales ukanakamp sum chikancht’asi. Ukampirus, walja No-SQL bases de datos ukax janiw taqpach propiedades ACID ukar yanapt’kiti, uka lantix teorema CAP ukat filosofía BASE uka principios ukanakaruw ajllisi, ukax disponibilidad ukat qhipharux consistencia ukaruw nayrar sartayi, consistencia estricta ukat sipansa.
Mä caja de salida transaccional ukaxa mä kuti garantia churaraki ukatxa walja lurawinakampiwa phuqhasispa:
Transacción registro ukaxa mä juk’a pachanakwa lurasi
Encuesta ukan yatiyiri
Transacción registro tailing ukax CDC (Change Data Capture) ukham base de datos ukan solucionanak apnaqañaw sañ muni. Uka amtäwin jach’a jan walt’awinakapax akanakawa:
Base de datos ukax específicos soluciones ukanakaw utji
Jiltawi latencia kunatixa específicos de implementaciones CDC
Yaqha thakhix Polling Publisher , ukax salida descarga ukar yanapt’i, tabla de salida ukar encuesta ukamp. Aka amtawin nayrïr jan walt’awipax base de datos ukan juk’amp cargañapatakiw ch’amanchasi, ukax juk’amp qullqiruw puriyaspa. Ukhamaraki, janiwa taqpacha No-SQL ukana yatiyawinakapaxa suma jiskt’awinakaru yanapt’kiti, segmentos específicos de documentos ukanakataki. Ukhamarusa, taqpacha qillqatanaka apsuñaxa, lurawixa aynacht’ayaspawa.
Akax mä jisk’a secuencia diagrama ukaw kunjams irnaqaski uk qhanañcht’añataki.
Nayrïr jan walt’awix patrón de Salida Transaccional ukampiw utji, ukax propiedades ACID de base de datos ukanakat dependencia ukankiwa. Inas chiqapax típicos bases de datos OLTP ukanx ukampis NoSQL ukanx jan walt’awinak uñstayaspa. Uk askichañatakix mä solución potencial ukax aprovechar registro de append (santi, Kafka) chiqaw mayiwinak lurañ qalltañatpacha.
‘Solicitud de préstamo enviar’ kamachir chiqak lurañat sipansa, jank’akiw mä tema interno Kafka ukar apayapxta ukatx mä resultado ‘aceptado’ cliente ukar kutt’ayapxaraktwa. Ukampirus, kunatix wali amuyatawa kamachix wali wakiskiriwa, janiw jank’akix aljirirux yatiyañjamäkiti uka lurawitxa. Aka qhipa consistencia apnaqañatakix, técnicas ukanakamp irnaqaraksnawa, kunjamakitix jaya encuestas, cliente-initiado encuesta, optimista UI actualizaciones, jan ukax WebSockets jan ukax Server-Sent Events uka yatiyawinak apnaqañataki. Ukampirus akax taqpachanx mayj mayjawa, ukhamax qallta yatichäwisar kutt’añäni.
Mä manqhankir Kafka tema tuqit yatiyaw apayanipxta. Ukatx Servicio de Solicitud de Préstamos ukax aka yatiyaw manq’antawayi — pachpa kamachiw cliente ukan katuqata — ukatx lurañ qalltawayi. Nayraqatxa, mä juk’a lógica empresarial ukanakaruw phuqhi; uka lógica ukax sum phuqhasiwayi ukatx resultados ukax persistido ukhamakiw machaq yatiyawinak mä tema público Kafka ukan uñt’ayi.
Mä juk’a pseudo-código uñakipt’añäni.
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(); }
¿Kunas lurasispa proceso de la lógica empresarial ukax jan walt’ayaspa ukhaxa? Janiw llakisiñakiti, kunatix offset ukax janiw jichhakamax luratäkiti, ukatw yatiyawix wasitat yant’ata.
Kafka markar machaq lurawinakat apayañax jan walt’ayaspa ukhax kamachasmasa? Janiw llakisiñakiti, kunatix lógica empresarial ukax idempotent ukhamawa, janiw mä solicitud de préstamo duplicado uñstayañapakiti. Ukhamakipansti, Kafka tema público ukar yatiyawinak wasitat apayañ yant’ani.
Kafka ukar yatiyawinak apayata, ukampis offset commit ukax jan walt’ayaschi ukhax kamachasmasa? Janiw llakisiñakiti, kunatix lógica empresarial ukax idempotent ukhamawa, janiw mä solicitud de préstamo duplicado luraskaniti. Ukhamakipansti, Kafka tema público ukaruw yatiyawinak wasitat apayani ukatx offset commit ukax aka kutix askinjam phuqhasiñapatakiw suyt’i.
Aka amtawin jach’a jan walt’awinakapax machaq estilo de programación ukamp chikt’at complejidad yapxatatawa, qhipharux consistencia (kunatix cliente ukax janiw jank’ak resultado uñt’kaniti), ukatx taqi lógica empresarial ukax idempotent ukhamäñapatakiw mayi.
¿Kunas evento sourcing ukax, ukat kunjamas aka chiqanx apnaqasispa? Eventos sourcing ukax mä patrón arquitectónico software ukawa, ukax mä sistema ukan estado ukar modelo ukar uñt’ayañatakiw apnaqasi, taqi mayjt’awinak datos ukar apthapisinx mä serie de eventos inmutables ukham uñt’ayañataki. Aka lurawinakax chiqawjanaka jan ukax estado ukan mayjt’awinakap uñacht’ayi ukatx sistema ukan jichha estado ukatakix mä sapa chiqawjjamaw irnaqapxi. Ukhama, técnicamente, mä sistema de eventos-sourcing ukar phuqhasa, nayratpach taqi eventos ukanakax EventStore ukan utjistu, ukat aka EventStore ukax aljirinakatakix mä sapa chiqawjjam apnaqasispawa kunatix paskatayna uka tuqita. Janiw mä solución específica de base de datos ukax wakiskiti taqi mayjt’awinak jan ukax ordenamiento tuqit llakinak arknaqañataki, ukakipkarakiw jan walt’awix ullart’añ tuqin qunt’asiñawa kunatix chiqpach estado de entidad uka jikxatañatakix taqi lurawinakat wasitat anatañax wakisiwa.
Aka qillqatanx walja thakhinak uñakipt’apxta, sistemas distribuidos ukan chiqap yatiyawinak lurañataki. Uka uñacht’awinakampi sistemas ukanaka lurañatakixa walja iwxt’awinakawa amuyt’añasa
Jutïr kutix mä Salida Transaccional ukar phuqhañ tuqit mä juk’amp wakiskir uñacht’äw uñakipt’añäni. Uñjaña
juma!