Ҷараён
Ҷараён чист
Ҷараён ин аксуламали пайваста ба пайдарҳамии беохири рӯйдодҳо (сабти транзаксия, кликҳо, пардохтҳо, телеметрия) бо таъхири ҳадди аққал ва кафолати дуруст будани давлатҳо мебошад. Баръакси партия, ки дар он "мо тамоми ҷамъоваришударо дар тӯли давра мегирем" ҷараён маълумотро ҳангоми расидан коркард мекунад, давлатро нигоҳ медорад ва вақти ҳодисаро ба назар мегирад.
Мафҳумҳои асосӣ
Ҳодиса як далели тағйирнопазир бо 'event _ time' ва 'event _ id' беназир аст.
Вақти ҳодиса ва вақти коркард - якум аз манбаъ, дуюм - вақте ки оператор воқеаро дидааст.
- Tumbling, Hopping/Sliding, сессия.
- Нишонаҳои обӣ - арзёбие, ки "ҳодисаҳои пеш аз Т" омадаанд, ба шумо имкон медиҳад, ки тирезаҳоро пӯшед ва интизории маълумоти дертарро маҳдуд кунед.
- Lateness - рӯйдодҳо бо 'event _ time' камтар аз нишонаи обии ҷорӣ; қоидаҳои ниҳоӣ аксар вақт истифода мешаванд.
- Давлат - ҷадвалҳои маҳаллӣ/ҳолати калидӣ барои агрегатҳо, ҳамроҳшавӣ, такрорӣ.
- Backpressure - фишор ҳангоми интиқоли поёноб; бо протокол ва буферҳо идора карда мешавад.
Асоси меъморӣ
1. Сарчашма: брокери чорабинӣ (Kafka/NATS/Pulsar), CDC аз DB, навбатҳо, файлҳо/коллекторҳои сабти ном.
2. Муҳаррики ҷараён: тирезаҳо, агрегатҳо, шодмонӣ, намунаҳо (CEP) -ро ҳисоб мекунад, нуқтаҳои давлатӣ ва гузаргоҳро идора мекунад.
3. Ғалтак: пойгоҳи додаҳои OLTP/OLAP, системаи ҷустуҷӯ, кэш, мавзӯъҳо, анборҳо барои намоишҳо/гузоришҳо.
4. Феҳристи схема: назорати эволютсияи сарборӣ ва мутобиқат.
5. Мушоҳида: ченакҳо, пайгирӣ, гузоришҳо, панели ақибмонда ва нишонаҳои обӣ.
Семантика ва тартиботи вақт
Ҳамеша вақти ҳодисаро афзалтар медонад: ин ягона тағйирёбанда барои таъхирҳо ва фосилаҳо мебошад.
Ҳодисаҳо метавонанд ба тартиб дароянд; фармон танҳо дар доираи калиди ҳизб кафолат дода мешавад.
- тирезаҳоро пӯшед ва натиҷаҳоро партоед;
- "чӣ қадаре ки мо интизорем" -ро маҳдуд мекунад ('иҷозат дода шудааст _ lateness').
- Барои рӯйдодҳои дер, бозсозӣ/боло рафтанро истифода баред: ҳисобкунии агрегатҳо ва рӯйдодҳои ислоҳӣ.
Ҳолат ва эътимоднокӣ
Ҳолати калидӣ: маълумоти агрегатҳо (ҷамъҳо, ҳисобкунакҳо, сохторҳо барои такрорӣ) бо калидҳо омехта карда мешаванд.
Нуқтаи назоратӣ/Savepoint - лаҳзаҳои даврӣ барои барқароршавӣ; пасандоз - лаҳзаи идорашаванда барои муҳоҷирати версияи код.
- транзаксияи "хондан-коркард-навиштан" (супориши танӯр + ҳолати хондан);
- дастгоҳҳои idempotent (upsert/merge) + ҷадвалҳои такмилдиҳӣ;
- бо роҳи нусхабардории агрегатҳо (мувофиқати оптимистӣ).
Windows, агрегатҳо, ҳамроҳ шавед
Тирезаҳо:- Фурӯпошӣ: гузоришҳои оддии даврӣ (дақиқа, соат).
- Hopping/Sliding: ченакҳои "лағжиш" (дар 5 дақиқа бо афзоиши 1 дақиқа).
- Сессия: табиӣ барои ҷаласаҳои фармоишӣ ва зидди қаллобӣ.
- Агрегатҳо: ҷамъбаст/ҳисоб/avg/тақрибан-фарқият (Hyper
- Ҳамроҳшавии Stream-Stream: буферкунии ҳарду ҷонибро аз рӯи калид ва вақт талаб мекунад, эҳтиром 'allated _ skew'.
- Ҳамроҳшавии ҷадвали ҷараён (KT-able) - Феҳрист ё ҳолати ҷориро замима мекунад (масалан, "маҳдудиятҳои фаъоли корбар").
Кор бо маълумоти ақибмонда ва такрорӣ
Хулоса: аз ҷониби 'event _ id' ё '(producer_id, пайдарпаӣ)'; Нигоҳ доштани калидҳои "дидашуда" бо TTL ≥ тирезаи redo.
Рӯйдодҳои дер: Пас аз пӯшидани равзанаи коркарди тиреза барои 'X' иҷозат диҳед (бозхонд/боло).
Нусхаҳои бардурӯғ: агрегатҳоро бетағйир танзим кунед ва "ALREADY_APPLIED" -ро дар журналҳо ислоҳ кунед.
Миқёс ва иҷро
Шарораи асосӣ: параллелизмро таъмин мекунад; калидҳои гармро тамошо кунед.
Backpressure: параллелизмро маҳдуд кунед, ҳангоми нашр маҷмӯаҳо ва фишурдаро истифода баред.
Нишонаҳои обӣ: Аз ҳад зиёд хашмгин нашавед - нишонаҳои обии сахт лаззатро кам мекунанд, аммо ҳиссаи навсозиҳои дерро зиёд мекунанд.
Статус: форматро интихоб кунед (мағозаи давлатӣ/дар хотира) бо назардошти андоза ва шакли дастрасӣ; тоза кардани TTL.
Autoscaling: бо ақибмонӣ, CPU, андозаи давлатӣ, вақти GC.
Эътимоднокӣ ва бозоғозӣ
Ғалтаки Idempotent ё транзаксия бо ислоҳи ҷуброн асоси дурустӣ мебошад.
Коркарди пас аз бозоғоз иҷозат дода мешавад; таъсир бояд "як маротиба" боқӣ монад.
DLQ/таваққуфгоҳ: сабти мушкилотро ба риштаи алоҳида бо сабабҳо фиристед; коркарди таъмин.
Мушоҳидакорӣ (чиро чен кардан лозим аст)
Қафо аз рӯи манбаъ (аз рӯи вақт ва паём).
Нишони обӣ/вақти рӯйдодҳои ҷорӣ ва таносуби рӯйдодҳои дер.
Операторҳои интиқол/таъхир, p95/p99 охири-ба-охир.
Андозаи давлатӣ/rocksdb I/O, меъёри гузаргоҳ/давомнокӣ.
Меъёри DLQ, deduplication/retray фоиз.
CPU/GC/тӯда, вақти таваққуф.
Бехатарӣ ва риояи
Таснифи маълумот: PII/PCI-ро дар диаграммаҳо қайд кунед, ҳадди аққал, ҳолати рамзгузорӣ ва лаҳзаҳоро нигоҳ доред.
Назорати дастрасӣ: ACL-ҳои алоҳида барои мавзӯъҳо/ҷадвалҳои давлатӣ ва дастгоҳҳо.
Нигоҳдорӣ: мутобиқи талаботи қонунӣ (GDPR/ҳуқуқи фаромӯш шудан).
Аудит: сабти 'event _ id', 'trace _ id', натиҷа: 'APPLIED/ALLEKLY _ APPLIED/REVIEVED'.
Намунаҳои татбиқ
1. CDC → нормализатсия → рӯйдодҳои домейн: тағироти пойгоҳи додаҳоро пахш накунед, ба далелҳои фаҳмо дар бораи бизнес харита кунед.
2. Outbox барои истеҳсолкунандагон: далели транзаксия + ҳодиса - дар як транзаксияи пойгоҳи додаҳо.
3. Core против ғанишуда: сарбории ҳадди аққал дар ҷараёни интиқодӣ, ғанисозӣ - асинхронӣ.
4. Такрори дӯстона: пешгӯиҳо/намоишҳо бояд аз дафтар дубора ҷамъ карда шаванд.
5. Идемпотенсия аз рӯи тарроҳӣ: калиди амалиёт/ҳодиса, схемаҳои болоӣ, версияҳои агрегатҳо.
Санҷиш
Воҳиди/Ба амвол асосёфта: инвариантҳои агрегатҳо ва дигаргуниҳо.
Санҷишҳои ҷараён: ҷараёни муқарраршудаи рӯйдодҳо бо фармоиш ва нусхабардории § тиреза ва такрори такрорӣ.
Тирезаҳои тиллоӣ: тирезаҳои истинод/агрегатҳо ва тасҳеҳоти деринаи имконпазир.
Тазриқи хато: афтодани байни "таъсири сабтшуда" ва "ҷуброни содиршуда".
Санҷишҳои такрорӣ: аз нав насб кардани намоиш аз оғози журнал = ҳолати ҷорӣ.
Арзиш ва оптимизатсия
Тирезаҳо ва нишонаи обӣ ба ниҳонӣ/захираҳо таъсир мерасонанд: чӣ қадаре ки тиреза дарозтар ва 'lateness _ lateness' зиёдтар бошад, ҳамон қадар давлат зиёдтар аст.
Кодексҳо ва фишурдасозӣ: CPU/шабакаро мувозинат кунед.
Натиҷаи барориш: камтар зангҳо ва амалиётҳои шабакавӣ.
Филтри барвақт ("pushdown"): барзиёдро то ҳадди имкон ба манбаъ партоед.
Антипаттернҳо
Пайвастшавӣ ба вақти коркард, ки дар он вақти ҳодиса лозим аст → таҳлили нодуруст.
Набудани idempotency дар ғалтак → эффектҳои дукарата ҳангоми бозоғоз.
Глобалии "мега-калидҳо": як қисмати гарм параллелизмро вайрон мекунад.
CDC-ҳои хом ҳамчун чорабиниҳои оммавӣ: схемаҳои ихроҷшудаи DB, осебпазирӣ дар эволютсия.
Не DLQ: паёмҳои "заҳролуд" тамоми қубурро масдуд мекунанд.
Таъхири сахт ба ҷои нишонаи обӣ: ё интизории абадӣ ё аз даст додани маълумот.
Намунаҳои доменҳо
Пардохтҳо/Молия
Пардохти ҷараён. ', тирезаҳо барои қаллобӣ (сессия + CEP), бобои' operation _ id '.
Таъсири маҳз як маротиба ҳангоми ба дафтарчаи баҳисобгирӣ гузоштан (upsert + version).
Маркетинг/Реклама
Тирезаҳои лағжиши CTR/табдилдиҳӣ, Кликҳо ва таассуротро бо таҳаммулпазирии '± Δ t', ҷамъбасти тендер ҳамроҳ кунед.
IGaming/хидматҳои онлайн
Тавозун/маҳдудиятҳои вақти воқеӣ, миссияҳо/дастовардҳо (тирезаҳои сессия), намунаҳои зидди қаллобӣ ва огоҳиҳо.
Қолабҳои хурд (рамзи псевдо)
Тиреза бо нишонаҳо ва навсозиҳои дер
pseudo stream
.withEventTime(tsExtractor)
.withWatermark(maxAllowedLag=2m)
.window(TUMBLING, size=1m, allowedLateness=30s)
.keyBy(user_id)
.aggregate(sum, retractions=enable)
.sink (upsert_table )//idempotent upsert by (user_id, window_start)
Танӯраи транзаксионӣ бо ислоҳи ҷуброн
pseudo begin tx upsert target_table using event, key=(k)
update consumer_offsets set pos=:pos where consumer=:c commit
Рӯйхати назоратии истеҳсолот
- Вақти ҳодиса ва стратегияи нишонаи об муайян карда шуд; тирезаҳо ва 'allowed _ lateness' интихоб карда мешаванд.
- Ғалтаки Idempotent ё муомилот бо ҷуброн.
- Феҳристи схема ва усулҳои мутобиқат фаъол аст; эволютсияи иловагӣ.
- Нишондиҳандаҳо: ақибмонӣ, нишонаи обӣ, p95/p99, DLQ, андозаи давлатӣ, давомнокии гузаргоҳ.
- Санҷишҳо: фармоиш, нусхабардорӣ, бозоғоз, такрорӣ.
- Сиёсати PII/нигоҳдорӣ барои давлат ва лаҳзаҳо.
- Нақшаи миқёс ва стратегияҳои backpressure.
- Ҳуҷҷатгузории шартномаҳои тиреза ва тасҳеҳот (навсозиҳои дер).
FAQ
Вақти чорабинӣ лозим аст?
Агар дурустии ченакҳо ва пайдарҳамӣ муҳим бошанд, ҳа. Вақти коркард барои ҳисобҳои техникӣ/мониторинг мувофиқ аст, аммо таҳлилро таҳриф мекунад.
Оё он маҳз як маротиба лозим аст?
Нуқта: барои оқибатҳои интиқодӣ. Аксар вақт, ҳадди аққал як маротиба + танӯраи idempotent кофӣ аст.
Тирезаҳоро чӣ гуна бояд интихоб кард?
Ба бизнеси SLA-ҳо такя кунед: "5 дақиқаи охир →" давидан ", ҷаласаҳои корбарон →" сессия ", гузоришҳои дақиқаҳо →" афтодан.
Бо маълумоти дер чӣ бояд кард?
Иҷозат диҳед маҳдудияти 'allisted _ lateness' ва тасҳеҳоти барориш (боло/бозпас). Намоиши муштарӣ бояд қодир бошад, ки навсозӣ кунад.
Ҷамъ
Ғайр аз таъхири кам, ҷараён интизоми вақт, ҳолат ва шартномаҳо мебошад. Интихоби дурусти вақти ҳодиса, тирезаҳо ва нишонаҳои обӣ, инчунин эффектҳои идемпотентӣ, мушоҳида ва озмоишҳо қубурро боэътимод, такроршаванда ва сарфакорона мегардонанд ва на дар ҳар шаби дигар бизнесро дар ин ҷо ва ҳоло ҳал мекунанд.