7.6 Data amser real a ffrydio
Trosolwg a chymhelliant
Mae’r rhan fwyaf o’r hyn a wyddoch am biblinellau data yn tybio bod y data’n aros yn ei unfan. Rydych yn casglu diwrnod o gofnodion, yn rhedeg swydd dros nos, ac yn darllen y canlyniadau yn y bore. Mae data amser real a ffrydio yn troi’r rhagdybiaeth honno ben ucha’n isaf. Yn lle prosesu pentwr gorffenedig o ddata, rydych yn prosesu llif diddiwedd o ddigwyddiadau wrth iddynt gyrraedd, ac yn cynhyrchu atebion yn barhaus. Dyma’r gwahaniaeth rhwng prosesu swp, sy’n gweithredu ar set ddata gyfyngedig a chyflawn, a prosesu ffrwd, sy’n gweithredu ar lif diderfyn, byth yn gorffen.
I dimau mawr, mae ffrydio’n dod yn berthnasol yn union pan fydd oedi’n dechrau bod o bwys i’r busnes. Mae penderfyniad twyll sy’n cyrraedd awr yn hwyr yn ddiwerth. Nid yw signal personoli sy’n glanio yfory yn personoli dim. Mae dangosfwrdd gweithredol sy’n llusgo y tu ôl i’r realiti o shifft gyfan yn camarwain y bobl sy’n ei wylio. Mae Pennod 7.2 (peirianneg data) yn dadlau y dylech ddewis prosesu swp yn ddiofyn a throi at ffrydio dim ond lle mae oedi’n talu ar ei ganfed mewn gwirionedd, ac mae’r bennod hon yn mynd â chi weddill y ffordd: pryd mae amser real yn ennill ei gost, a sut i’w adeiladu heb roi eich cyllideb weithredu ar dân. Mae ffrydio’n eistedd yn agos at y patrymau negeseua a yrrir gan ddigwyddiadau ym Mhennod 3.12 (pensaernïaeth a negeseua a yrrir gan ddigwyddiadau), y dewisiadau storio ym Mhennod 3.4 (pensaernïaeth a storio data), a’r arferion telemetreg ym Mhennod 9.2 (arsylwadaeth a thelemetreg).
Mae lleoliadau menter a llywodraeth yn codi’r stancs. Mae banc yn sgorio trafodion am dwyll yn yr amser mae’n ei gymryd i ddarllenydd cerdyn amrantu. Mae asiantaeth drafnidiaeth yn olrhain cerbydau ac yn rhagfynegi amseroedd cyrraedd i filiynau o deithwyr. Mae asiantaeth fudd-daliadau’n gwylio am anomaleddau mewn hawliadau tra’n cadw cofnod archwiliadwy o bob penderfyniad. Ym mhob un o’r rhain, daw’r gwerth o weithredu ar ddata tra ei fod yn dal yn ffres, a daw’r risg o weithredu ar ddata sy’n anghywir, yn anghyflawn, neu’n amhosibl ei ailadeiladu’n ddiweddarach. Mae’r bennod hon yn farn bendant am y ddau.
Egwyddorion allweddol
- Trowch at ffrydio dim ond pan fo gan oedi werth busnes clir; mae prosesu swp yn rhatach ac yn symlach.
- Gwahaniaethwch rhwng data cyfyngedig (meidraidd) a data diderfyn (byth yn gorffen), a chynlluniwch yn unol â hynny.
- Trinwch amser digwyddiad, nid amser cyrraedd, fel ffynhonnell y gwirionedd, a chynlluniwch ar gyfer data hwyr a data allan o drefn.
- Ffenestri a marciau dŵr yw’r ffordd i gael atebion meidraidd o ffrydiau anfeidraidd.
- Ffafriwch ganlyniadau ‘i bob pwrpas unwaith’ trwy sinciau idempotent yn hytrach nag addewidion ‘union unwaith’ bregus.
- Mae angen pwyntio gwirio (checkpointing) ar brosesu â chyflwr fel y gall adfer heb golli data na chyfrif dwbl.
- Cynlluniwch ar gyfer ôl-bwysedd (backpressure) ac ailbrosesu o’r diwrnod cyntaf, nid fel ôl-ystyriaeth.
- Cadwch resymeg ffrydio’n arsylwadwy ac yn archwiliadwy; mae ffrwd dawel yn waeth na swp wedi methu.
Argymhellion
Cyfiawnhewch amser real cyn ei adeiladu
Y penderfyniad ffrydio pwysicaf yw a ddylid ffrydio o gwbl. Mae amser real, yn fras, yn dyblu eich cymhlethdod a’ch cost weithredol, gan eich bod yn cyfnewid swydd sy’n rhedeg ac yn stopio am system sy’n gorfod aros yn iach bob eiliad. Cyn ymrwymo, enwch y penderfyniad y mae data ffres yn ei alluogi a chost y penderfyniad hwnnw’n cyrraedd yn hwyr. Fel arfer, mae sgorio twyll, rhybuddio gweithredol, a phersonoli byw yn clirio’r bar. Prin iawn y bydd dangosfwrdd y mae rhywun yn edrych arno ddwywaith y dydd yn gwneud hynny, ni waeth pa mor foddhaol y mae “amser real” yn swnio mewn cyfarfod cynllunio. Ysgrifennwch y gofyniad oedi fel rhif, mewn eiliadau neu funudau, a’i wirio yn erbyn realiti. Mae llawer o’r hyn y mae pobl yn ei alw’n amser real yn cael ei wasanaethu’n dda gan ficro-sypiau sy’n rhedeg bob ychydig funudau am ffracsiwn o’r gost.
Cynlluniwch o amgylch amser digwyddiad, nid amser prosesu
Y syniad anoddaf un mewn ffrydio yw bod digwyddiadau’n digwydd ar un eiliad ac yn cael eu prosesu ar eiliad arall. Amser digwyddiad yw pryd y digwyddodd y peth mewn gwirionedd, er enghraifft pan dapiodd teithiwr gerdyn. Amser prosesu yw pryd y cafodd eich system gyfle i’w drin. Mae’r ddau’n crwydro ar wahân yn gyson: mae ffôn yn colli signal mewn twnnel ac yn llwytho tri munud o dapiadau ar unwaith, mae rhwystr rhwydwaith yn ad-drefnu negeseuon, mae rhaniad yn llusgo. Os byddwch yn cyfrifo ar sail amser prosesu, bydd eich ffigurau’n siglo gyda’ch seilwaith yn hytrach na adlewyrchu’r byd. Y broblem hon o ddata hwyr ac allan o drefn yw calon y ddisgyblaeth, ac mae’n cysylltu’n uniongyrchol â modelu digwyddiadau ym mhensaernïaeth a yrrir gan ddigwyddiadau. Stampiwch bob digwyddiad â’i amser digwyddiad wrth y ffynhonnell, cariwch y stamp amser hwnnw trwy’r biblinell gyfan, a chyfrifwch eich canlyniadau yn ei erbyn.
Defnyddiwch ffenestri a marciau dŵr i gael atebion meidraidd
Nid yw ffrwd ddiderfyn byth yn dod i ben, felly nid oes gan “cyfrif y digwyddiadau” ateb nes i chi ei ffinio. Ffenestri sy’n gwneud y ffinio hwnnw. Mae ffenestri chwalu (tumbling) yn torri amser yn fwcedi sefydlog, di-orgyffwrdd, er enghraifft bob munud. Mae ffenestri llithro (sliding) yn gorgyffwrdd, felly mae ffenestr bum munud sy’n symud ymlaen bob munud yn rhoi ffigwr symudol llyfn i chi. Mae ffenestri sesiwn yn grwpio pyliau o weithgarwch wedi’u gwahanu gan fylchau o segurdod, sy’n gweddu’n dda i sesiynau defnyddwyr. Unwaith y bydd gennych ffenestri, mae angen i chi benderfynu pryd mae ffenestr wedi gorffen, gan y gallai data hwyr barhau i gyrraedd. Marc dŵr yw amcangyfrif y system ei bod, mwy na thebyg, wedi gweld pob digwyddiad hyd at amser digwyddiad penodol. Pan fydd y marc dŵr yn mynd heibio diwedd ffenestr, rydych yn allyrru’r canlyniad. Addaswch pa mor hir rydych yn aros: cadwch ffenestri ar agor yn hirach a byddwch yn goddef mwy o oedi ar draul oedi a chof, caewch nhw’n gyflymach a byddwch mewn perygl o ollwng digwyddiadau hwyr. Penderfynwch yn benodol beth sy’n digwydd i ddata sy’n cyrraedd ar ôl i ffenestr gau, boed hynny ei ollwng, ei gofnodi, neu allyrru cywiriad.
Gwnewch sinciau’n idempotent a ffafriwch ‘i bob pwrpas unwaith’
Mae gwarantau traddodi’n swnio’n syml, a dydyn nhw ddim. Mae traddodi ‘o leiaf unwaith’ yn golygu bod pob digwyddiad yn cael ei brosesu, ond gall rhai gael eu prosesu fwy nag unwaith ar ôl ailgais, felly gall cyfrifon chwyddo. Mae ‘union unwaith’ yn swnio’n ddelfrydol ond mae’n gostus ac, os cymerir yn llythrennol ar draws systemau allanol mympwyol, yn aml yn amhosibl. Y targed ymarferol yw ‘i bob pwrpas unwaith’: mae’r canlyniad arsylwadwy fel pe bai pob digwyddiad wedi’i brosesu unwaith, hyd yn oed os bu’r peirianwaith yn ailgeisio oddi tano. Cyrhaeddwch hynny drwy wneud eich sinciau’n idempotent yn ddiogel i ysgrifennu atynt yn ailadroddus, gan ddefnyddio allweddi penderfynadwy a ‘upserts’ fel bod digwyddiad a chwaraeir eto’n trosysgrifo yn hytrach na dyblygu. Cyfunwch draddodi ‘o leiaf unwaith’ ag ysgrifau idempotent a chewch ganlyniadau cywir heb dalu am gydgysylltu trafodiadol trwm ym mhobman. Cadwch beirianwaith ‘union unwaith’ go iawn ar gyfer y llefydd cul sydd wir ei angen.
Pwyntiwch wirio brosesu â chyflwr fel y gall adfer
Mae llawer o gyfrifiadau ffrydio defnyddiol yn rhai â chyflwr (stateful): cyfrifon rhedegol, cydgysylltiadau ar draws ffrydiau, dad-ddyblygu, modelau twyll sy’n cofio ymddygiad diweddar. Mae’r cyflwr hwnnw’n byw yn y cof ac fe fyddai’n diflannu pan fydd proses yn ailgychwyn. Mae pwyntio gwirio (checkpointing) yn cipio cyflwr a safle’r ffrwd gyda’i gilydd yn gyfnodol, fel bod y system, ar ôl chwalfa, yn ailddechrau o bwynt cyson yn hytrach na chwarae popeth eto neu golli ei chof. Meintiwch eich cyflwr yn fwriadol, gan mai cyflwr diderfyn yw ffordd gyffredin o wneud i swydd ffrydio redeg allan o gof mewn cynhyrchiad. Defnyddiwch ddyddiad dod i ben ac amser-i-fyw (time-to-live) ar gyflwr nad oes ei angen mwyach, a monitrwch faint y cyflwr fel metrig dosbarth cyntaf. Mae amser adfer ar ôl methiant yn bryder lefel-gwasanaeth go iawn, felly profwch ef cyn i’ch defnyddwyr wneud hynny.
Ffrydiwch o gronfeydd data gweithredol gyda dal newid data
Yn aml, byddwch am ymateb i newidiadau mewn cronfa ddata na chafodd erioed ei chynllunio i allyrru digwyddiadau. Mae Change data capture (CDC) yn datrys hyn drwy ddarllen cofnod trafodion y gronfa ddata a throi pob mewnosodiad, diweddariad, a dilead yn ffrwd o ddigwyddiadau newid. Mae hyn yn llawer gwell na phôlio’r tabl ar amserydd, sy’n araf, yn colli cyflyrau canolradd, ac yn curo’r ffynhonnell yn ddidrugaredd. Mae CDC yn eich galluogi i gadw mynegai chwilio, storfa gudd (cache), storfa ddadansoddeg, neu wasanaeth i lawr yr afon yn gyson gydamserol â system gofnod, a hynny heb newidiadau ymledol i’r cymhwysiad. Trinwch y ffrwd newid fel cynnyrch data dosbarth cyntaf: fersiynwch ei sgema, dogfennwch ei ystyr, a gwyliwch ei oedi, oherwydd mae popeth i lawr yr afon yn etifeddu’r oedi hwnnw.
Ffafriwch bensaernïaeth ffrydio-yn-gyntaf yn hytrach na chynnal dwy sylfaen cod
Mae’r bensaernïaeth Lambda glasurol yn rhedeg haen swp ar gyfer hanes cywir, cyflawn ochr yn ochr â haen cyflymder ar gyfer canlyniadau ffres, brasamcanol, ac yna’n eu cyfuno. Mae’n gweithio, ond mae’n golygu bod yn rhaid i chi ysgrifennu a chynnal yr un rhesymeg fusnes ddwywaith, mewn dwy system, a chysoni’r gwahaniaethau am byth. Mae’r bensaernïaeth Kappa yn cywasgu hyn: cadwch gofnod digwyddiadau parhaol, y gellir ei ailchwarae, a rhedwch bob proses fel prosesu ffrwd, gan ailbrosesu hanes drwy ailchwarae’r cofnod pan fydd rhesymeg yn newid. Mae’r diwydiant wedi symud tuag at y siâp ffrydio-yn-gyntaf hwn oherwydd bod un sylfaen cod yn rhatach o lawer i’w chynnal ac i resymu yn ei chylch. Os gallwch fynegi eich anghenion swp fel ailchwaraeadau dros gofnod digwyddiadau a gedwir, rydych yn osgoi treth y ddwy sylfaen cod yn gyfan gwbl. Defnyddiwch froceriaid seiliedig ar gofnod sy’n cadw hanes fel bod ailbrosesu’n fater o rewindio, nid ailadeiladu.
Datgelwch ffrydiau fel SQL, golygfeydd wedi’u sylweddoli, ac OLAP amser real
Ni ddylai pawb sydd angen ffrydio orfod ysgrifennu cod prosesu ffrwd lefel isel. Mae SQL ffrydio’n galluogi dadansoddwyr a pheirianwyr i fynegi ffenestri, cydgysylltiadau, a chyfanswmiadau mewn iaith y maen nhw eisoes yn ei gwybod, ac mae’n cadw’r canlyniadau’n gyfredol yn barhaus fel golygfeydd wedi’u sylweddoli (materialized views). Ar gyfer ymholiadau dadansoddol oedi-isel dros ddata ffres, mae storfa prosesu dadansoddol ar-lein (OLAP) amser real yn amsugno’r ffrwd ac yn ateb ymholiadau ‘sleisio a dorri’ mewn milieiliadau, sef yr hyn sy’n pweru dangosfwrdd gweithredol sy’n wirioneddol fyw. Parwch y rhain â’r arferion dadansoddeg cynnyrch ym Mhennod 7.4 (dadansoddeg cynnyrch ac arbrofi) pan mai’r nod yw adborth cyflym ar nodweddion ac arbrofion. Dewiswch yr offer lefel-uwch hyn lle maen nhw’n gweddu, a chadwch broseswyr ffrwd wedi’u llawysgrifio ar gyfer rhesymeg na allant ei mynegi.
Cynlluniwch ar gyfer ôl-bwysedd ac ailbrosesu o’r cychwyn
Gall ffrwd gyrraedd yn gyflymach nag y gallwch ei phrosesu. Ôl-bwysedd (backpressure) yw’r mecanwaith sy’n galluogi defnyddiwr araf i roi signal i fyny’r afon i arafu yn hytrach na chwympo neu ollwng data’n dawel. Sicrhewch fod pob cam yn eich piblinell yn ei anrhydeddu, a monitrwch oedi defnyddwyr fel prif fetrig, oherwydd mae oedi cynyddol yn rhybudd cynharaf eich bod yn colli’r ras. Ailbrosesu yw’r gallu arall y mae pobl yn dymuno eu bod wedi’i adeiladu i mewn. Pan fyddwch yn dod o hyd i wall neu’n newid rheol, rydych am ailchwarae hanes drwy’r rhesymeg gywiredig. Dim ond os yw eich cofnod digwyddiadau’n cadw digon o hanes a bod eich sinciau’n ddigon idempotent i amsugno’r ailchwarae y mae hynny’n bosibl. Cynlluniwch y ddau i mewn o’r diwrnod cyntaf; mae eu hôl-ffitio o dan bwysau digwyddiad yn ddiflas iawn.
Cyfaddawdau: manteision ac anfanteision
| Dewis | Manteision | Anfanteision | Ffit gorau |
|---|---|---|---|
| Prosesu swp | Syml, rhad, hawdd ei brofi a’i ôl-lenwi | Oedi uchel, hen rhwng rhediadau | Adrodd, y rhan fwyaf o ddadansoddeg |
| Micro-swp (munudau) | Bron yn amser real, llawer symlach na ffrydio | Ddim yn wirioneddol ar unwaith | Dangosfyrddau “amser real” |
| Ffrydio gwirioneddol (is-eiliad) | Ymateb ar unwaith, canlyniadau parhaus | Cymhleth, costus, anodd ei brofi | Twyll, rhybuddio, personoli byw |
| O leiaf unwaith + sinc idempotent | Canlyniadau cywir, fforddiadwy, cydnerth | Angen cynllunio allweddi disgybledig | Y rhan fwyaf o biblinellau ffrydio |
| Peirianwaith union unwaith | Gwarant gref o ben i ben | Costus, cyfyngedig ar draws systemau | Llwybrau cul, risg uchel |
| Lambda (swp + cyflymder) | Hanes cywir ynghyd â golwg ffres | Dwy sylfaen cod i’w cynnal | Mudo systemau etifeddol |
| Kappa (ffrydio-yn-gyntaf) | Un sylfaen cod, y gellir ei ailchwarae | Angen cofnod parhaol, a gedwir | Llwyfannau ffrydio newydd |
Y tyndra canolog yw oedi yn erbyn cymhlethdod. Mae pob cam tuag at amser real yn costio i chi o ran baich gweithredol, anhawster profi, ac arian, ac nid yw’r enillion yn llinol: mae mynd o ddyddiol i bob ychydig funudau’n rhad ac yn ddigon aml, tra mai wrth fynd o funudau i is-eiliad y mae’r gost yn crynhoi. Datryswch y tyndra drwy brisio’r penderfyniad, nid y dechnoleg. Gofynnwch pa weithred y mae’r ffresni’n ei galluogi a beth mae oedi’n ei gostio, yna prynwch ddim ond cymaint o ostyngiad oedi ag y mae’r weithred honno’n ei gyfiawnhau. Pan fydd gwir angen ffrydio arnoch, pwyswch ar draddodi ‘o leiaf unwaith’ â sinciau idempotent a chofnod ffrydio-yn-gyntaf, oherwydd mae’r cyfuniad hwnnw’n rhoi cywirdeb a gallu ailchwarae i chi heb y gwarantau trymaf.
Cwestiynau i’w trafod gyda’ch tîm
Pa benderfyniad y mae data amser real yn ei alluogi go iawn i ni, a beth yw’r gost pan fydd y data hwnnw’n cyrraedd funud yn hwyr yn hytrach nag ar unwaith? Dyma’r cwestiwn a ddylai reoli mynediad pob prosiect ffrydio, gan fod ffrydio’n fras ddyblu eich cost a’ch cymhlethdod gweithredol o gymharu â phrosesu swp. Gall tîm mawr losgi chwarteri cyfan yn adeiladu llwyfan amser real sy’n gwasanaethu dangosfyrddau y mae rhywun yn eu gwirio ddwywaith y dydd, sy’n arian wedi’i losgi. Dewch â’r weithred ddiriaethol y mae’r data’n ei gyrru, boed hynny’n rhwystro trafodiad twyllodrus, tudalennu gweithredwr, neu newid yr hyn y mae defnyddiwr yn ei weld, a rhowch rif ar gost yr oedi ar gyfer pob un. Os mai’r ateb gonest yw y byddai micro-swp pum munud yn gwasanaethu’r angen, mae hynny’n ganfyddiad sy’n werth ei ddathlu, nid ei guddio. Dylai’r ateb newid yn uniongyrchol a ydych yn adeiladu ffrydio gwirioneddol, yn setlo am ficro-sypiau, neu’n aros mewn prosesu swp.
Sut ydym yn trin digwyddiadau hwyr ac allan o drefn, a beth sy’n digwydd i ddata sy’n cyrraedd ar ôl i ffenestr gau? Data hwyr ac allan o drefn yw’r rhan anodd o ffrydio, ac mae timau sy’n hepgor y cwestiwn hwn yn ei ddarganfod mewn cynhyrchiad pan fydd eu ffigurau’n gwrthod cysoni. Y pwysau sy’n cystadlu yw oedi a chywirdeb: cadwch ffenestri ar agor yn hirach i ddal data hwyrfrydig a byddwch yn oedi pob canlyniad ac yn defnyddio mwy o gof, caewch nhw’n gyflymach a byddwch yn tawel ollwng data gwirioneddol. Dewch â thystiolaeth am ba mor hwyr y mae eich data’n cyrraedd mewn gwirionedd, wedi’i fesur fel y bwlch rhwng amser digwyddiad ac amser prosesu ar draws eich ffynonellau, gan fod ffynhonnell symudol mewn twneli’n ymddwyn yn wahanol iawn i ddigwyddiad ochr-weinydd. Penderfynwch yn benodol a yw data hwyr yn cael ei ollwng, ei gofnodi, neu’n sbarduno cywiriad, a sicrhewch fod pawb i lawr yr afon yn gwybod pa un. Mewn cyd-destun llywodraethol lle mae’n rhaid i ffigurau fod yn amddiffynadwy, gall gollwng digwyddiadau hwyr yn dawel fod yn broblem cydymffurfiaeth, felly mae angen i’r polisi fod yn fwriadol ac wedi’i ddogfennu.
A yw ein sinciau’n ddigon idempotent i ni allu ailchwarae hanes yn ddiogel, ac a yw ein cofnod digwyddiadau’n cadw digon i wneud ailchwarae’n bosibl? Ailbrosesu yw’r gallu y mae timau amlaf yn dymuno eu bod wedi’i adeiladu i mewn ac amlaf heb ei wneud, ac mae’n dibynnu ar ddau beth yn gweithio gyda’i gilydd: sinciau idempotent sy’n amsugno digwyddiadau a ailchwaraeir heb ddyblygu, a chofnod parhaol sy’n cadw digon o hanes i ailchwarae ohono. Heb y ddau, mae trwsio gwall rhesymeg yn golygu na allwch ailgyfrifo’r cyfnod yr effeithiwyd arno’n lân, ac rydych yn sownd yn clytio ffigurau â llaw dan bwysau. Dewch â’ch ffenestr gadw gyfredol a phrawf pendant: dewiswch wall gwirioneddol o’r chwarter diwethaf a gofynnwch a fyddech wedi gallu ailchwarae’r rhesymeg gywiredig dros y data yr effeithiwyd arno. Y tyniad yn erbyn hyn yw cost, gan fod cadw hanes a chynllunio ysgrifau idempotent yn cymryd storfa a disgyblaeth ymlaen llaw. Ond mae’r dewis arall yn ymddangos ar yr eiliad waethaf posibl, yn ystod digwyddiad, felly mae’r ateb yn llywio faint rydych yn ei fuddsoddi mewn gallu ailchwarae cyn bod ei angen arnoch.
Pan fydd swydd ffrydio’n chwalu, pa mor gyflym sy’n rhaid iddi adfer, faint o gyflwr y caniateir iddi ei ddal, ac a ydym wedi amseru adferiad go iawn dan lwyth cynhyrchu? Gellir ailredeg swydd swp sy’n marw yfory, ond mae ffrwd bob amser ymlaen sy’n marw yn doriad gwasanaeth ar waith, a gall swyddi â chyflwr sy’n dal cyfrifon rhedegol, cydgysylltiadau, neu fodelau twyll golli munudau o gof neu gymryd amser hir i ail-lwytho cyflwr ar ôl ailgychwyn. I dîm mawr, dyma lle mae manylyn di-sglein yn dawel bach yn pennu eich argaeledd gwirioneddol: mae cyflwr diderfyn yn tyfu nes bod swydd yn rhedeg allan o gof, ac mae adferiad pwynt gwirio araf yn troi pwl deg eiliad yn un deg munud. Y pwysau sy’n cystadlu yw ffresni yn erbyn diogelwch, gan fod pwyntiau gwirio amlach yn byrhau adferiad ond yn ychwanegu llwyth, ac mae cadw cyflwr yn hael yn gwella cywirdeb ond yn peryglu disbyddu cof. Dewch â tharged amser adfer pendant, maint eich cyflwr cyfredol a’i gromlin dwf, eich cyfnod pwynt gwirio, a chanlyniadau ymarfer methu-drosodd go iawn yn hytrach nag amcangyfrif gobeithiol. Mewn lleoliadau menter a llywodraeth lle mae’r ffrwd yn cefnogi sgorio twyll neu borthiant diogelwch cyhoeddus, mae llwybr adfer heb ei brofi’n risg weithredol rydych wedi’i derbyn heb ei fesur, felly triniwch yr ymarfer fel gofyniad, nid rhywbeth braf i’w gael.
Ydyn ni’n rhedeg un sylfaen cod ffrydio-yn-gyntaf neu haen swp ar wahân ac wedyn haen cyflymder, a beth mae’n ei gostio i ni mewn gwirionedd i gadw’r ddau’n gyson? Mae patrwm Lambda o haen swp ar gyfer hanes cywir ynghyd â haen cyflymder ar gyfer canlyniadau ffres yn eich gorfodi i ysgrifennu’r un rhesymeg fusnes ddwywaith, mewn dwy system, a chysoni eu hatebion am byth, tra bo siâp ffrydio-yn-gyntaf (Kappa) yn cadw cofnod parhaol, y gellir ei ailchwarae, ac yn rhedeg pob proses fel prosesu ffrwd. I sefydliad mawr, dyma lle mae’r rhesymeg ddyblyg yn magu crwydro a ffigurau dan gwestiwn, gan fod rheol yn newid mewn un haen ac nid y llall, ac mae peirianwyr yn treulio amser go iawn yn esbonio pam mae’r ddau’n anghytuno. Y tyniad tuag at gadw’r ddau yw syrthni a chysur haen swp brofedig, felly pwyswch hynny yn erbyn y dreth gynnal yn onest. Dewch â’r rhestr o gyfrifiadau rydych yn eu rhedeg ar hyn o bryd yn y ddau le, y digwyddiadau a achoswyd gan y ddwy haen yn anghytuno, ac asesiad o a yw eich cofnod digwyddiadau’n cadw digon o hanes i fynegi anghenion swp fel ailchwaraeadau. Mewn cyd-destunau llywodraethol a menter archwiliedig, mae dwy haen sy’n gallu adrodd ffigurau gwahanol ar gyfer yr un cyfnod yn atebolrwydd cydymffurfiaeth ynddo’i hun, gan fod yn rhaid i chi allu dweud pa rif sy’n awdurdodol a pham.
Pwy sy’n gweithredu’r system bob-amser-ymlaen hon pan fydd yn torri am dri o’r gloch y bore, ac a ydym wedi cyllidebu’r llwyth ar-alwad a’r sgiliau arbenigol y mae’n eu mynnu, neu a ydym yn tybio staffio ar siâp prosesu swp? Mae ffrydio’n symud cost o adeiladu i redeg: mae’n rhaid i’r system aros yn iach bob eiliad, sy’n golygu gwir gyfnodau ar-alwad, peirianwyr rhugl mewn amser digwyddiad, marciau dŵr, cyflwr, a semanteg traddodi, a phrofi sy’n anos na swydd sy’n rhedeg ac yn stopio. Mae timau’n rheolaidd yn cymeradwyo llwyfan ffrydio ar sail cryfder ei alluoedd ac byth yn ariannu’r bobl sy’n ei gadw’n fyw, felly mae’r llwyfan yn dirywio ac ymddiriedaeth yn erydu. Y gyfnewidfa yw cwmpas yn erbyn cynaliadwyedd: mae pob piblinell amser real ychwanegol yn beth arall a all dudalennu rhywun, felly’r cwestiwn yw a yw’r oedi y mae’n ei brynu’n cyfiawnhau ymrwymiad gweithredol parhaol. Dewch ag arolwg gonest o bwy sy’n berchen ar bob ffrwd mewn cynhyrchiad, eich cylchdro ar-alwad cyfredol a’i le anadlu, a ble mae’r arbenigedd amser-digwyddiad yn eistedd mewn gwirionedd, boed hynny’n benodiad, yn bartner, neu’n wasanaeth a reolir. I gorff cyhoeddus neu fenter fawr, ychwanegwch amseroedd arwain caffael a recriwtio ac unrhyw opsiwn gwasanaeth a reolir, oherwydd mae llwyfan amser real sy’n dibynnu ar dalent brin na allwch ei recriwtio na’i chadw yn gynllun i redeg system sy’n dueddol o dorri i lawr heb ddigon o staff.
Trwy lens sector
Cwmni newydd. Anaml y bydd ffrydio’n gam cyntaf i chi, a gall sefydlu llwyfan trwm suddo tîm bach. Dewiswch yr un signal sy’n cyffwrdd â’ch craidd gwerth, rhowch ddigwyddiadau ar un brocer sengl, seiliedig ar gofnod, a gedwir, a rhedwch broseswr ysgafn gyda sinciau â allwedd, idempotent, fel na fydd ailgais ‘o leiaf unwaith’ byth yn cyfrif dwbl. Cadwch ychydig ddiwrnodau o hanes fel y gallwch ailchwarae drwy resymeg sefydlog, a ffafriwch wasanaeth ffrydio a reolir dros weithredu eich clwstwr eich hun, oherwydd mai eich adnodd prinnaf yw sylw peirianneg.
Busnes bach. Mae’n debyg nad oes gennych arbenigwr ffrydio na fawr o awydd i redeg seilwaith bob-amser-ymlaen, felly triniwch amser real fel rhywbeth rydych yn ei brynu o fewn offer rydych eisoes yn eu defnyddio yn hytrach na system rydych yn ei staffio. Fframiwch yr angen fel cwestiwn oedi gyda rhif ynghlwm wrtho, ac yn y rhan fwyaf o achosion bydd micro-swp sy’n adnewyddu bob ychydig funudau’n bodloni hynny am ffracsiwn o’r gost a’r risg. Dewiswch werthwyr y mae eu nodweddion amser real yn dryloyw ynghylch oedi ac yn hawdd cilio ohonynt, a chadwch ffrydio pwrpasol ar gyfer yr achos prin lle mae data ffres yn gyrru refeniw neu ddiogelwch yn uniongyrchol.
Menter. Cysondeb a chost ar draws llawer o dimau yw’r broblem: llwyfan a rennir, seiliedig ar gofnod, polisi safonol ar gyfer amser digwyddiad a data hwyr, a sinciau idempotent fel bod grwpiau’n rhoi’r gorau i ailddyfeisio piblinellau bregus. Cyllidebwch y gweithrediadau bob-amser-ymlaen a’r baich ar-alwad yn benodol, safonwch ar gofnod ffrydio-yn-gyntaf fel eich bod yn osgoi sylfaen cod swp ddyblyg, a rheolwch ffrydiau fel cynhyrchion data a lywodraethir gyda pherchnogion, fersiynu sgema, ac oedi wedi’i fonitro yn hytrach na chasgliad gwasgaredig o swyddi pwrpasol. Traciwch oedi, amser adfer, a chost fesul ffrwd fel metrigau portffolio.
Llywodraeth. Mae archwiliadwyedd ac atebolrwydd cyhoeddus yn llywio pob dewis. Cadwch bob digwyddiad a broseswyd mewn cofnod parhaol fel y gellir ailadeiladu’n union y ffigurau a adroddir i gyrff goruchwylio, teithwyr, anomaleddau budd-daliadau, penderfyniadau twyll, a gwnewch bolisi’r data hwyr yn benodol ac wedi’i ddogfennu yn hytrach na gollwng digwyddiadau’n dawel. Dylai caffael fynnu cludadwyedd data a datgeliad o warantau traddodi a chadw gwasanaeth a reolir, a dylai unrhyw ailddatganiad ar ôl newid rheol fod yn ailchwarae amddiffynadwy drwy resymeg gywiredig, nid clwt llaw na all neb ei olrhain.
Enghreifftiau
Cwmni newydd. Mae ap defnyddwyr am ddangos ffrwd weithgarwch fyw i ddefnyddwyr a fflagio mewngofnodion amheus wrth iddynt ddigwydd. Mae’r tîm yn gwrthsefyll y demtasiwn i sefydlu llwyfan ffrydio trwm. Maen nhw’n rhoi digwyddiadau ar un brocer sengl, seiliedig ar gofnod, a gedwir, yn rhedeg proseswr ffrwd ysgafn ar gyfer rhesymeg risg-mewngofnodi, ac yn bwydo storfa OLAP amser real sy’n pweru’r ffrwd weithgarwch. Mae pob sinc â allwedd ac yn idempotent, fel na fydd ailgais ‘o leiaf unwaith’ byth yn cyfrif dwbl. Pan fyddant yn ddiweddarach yn dod o hyd i wall yn y rheol risg, maen nhw’n syml yn ailchwarae’r cofnod drwy’r rhesymeg sefydlog dros nos, gan iddynt gadw wythnos o hanes a heb erioed fod angen ail sylfaen cod swp.
Menter. Mae banc manwerthu’n sgorio pob trafodiad cerdyn am dwyll o fewn y ffenestr awdurdodi, gan gydgysylltu’r ffrwd trafodion byw yn erbyn model â chyflwr o ymddygiad diweddar y cyfrif. Mae pwyntio gwirio’n galluogi’r gwasanaeth sgorio i adfer o fethiant nod mewn eiliadau heb golli ei gof o’r ychydig funudau diwethaf. Ar wahân, mae dal newid data’n ffrydio diweddariadau o’r brif gronfa ddata fancio i mewn i fynegai chwilio a gwasanaeth personoli, gan gadw’r ddau’n ffres heb bôlio. Mae dangosfyrddau gweithredol yn darllen o storfa OLAP amser real fel bod timau risg a gweithrediadau’n gwylio’r busnes wrth iddo symud, ac mae’r biblinell gyfan yn allyrru’r telemetreg oedi a thrwybwn a ddisgrifir ym Mhennod 9.2.
Llywodraeth. Mae awdurdod trafnidiaeth metropolitan yn amsugno safleoedd cerbydau a thapiadau tocynnau i ragfynegi amseroedd cyrraedd a monitro tyrfaoedd mewn amser real, gan fwydo apiau cyhoeddus a chanolfan weithrediadau fel ei gilydd. Gan fod teithwyr mewn twneli’n llwytho tapiadau mewn pyliau hwyr, mae’r tîm yn cyfrifo nifer y teithwyr ar sail amser digwyddiad gyda marciau dŵr wedi’u haddasu i’r hwyrni a arsylwyd, ac yn cofnodi unrhyw ddigwyddiad sy’n cyrraedd ar ôl i’w ffenestr gau yn hytrach na’i ollwng yn dawel. Cedwir pob digwyddiad a broseswyd mewn cofnod archwiliadwy fel y gellir ailadeiladu’n union y ffigurau teithwyr a adroddir i gyrff goruchwylio. Pan fydd rheol tocynnau’n newid, maen nhw’n ailchwarae’r cyfnod yr effeithiwyd arno drwy’r rhesymeg gywiredig ac yn cynhyrchu ailddatganiad amddiffynadwy.
Achos busnes: cymhellion, ROI, a TCO
Daw’r enillion ar ddata amser real o weithredu tra bo gweithredu’n dal i fod o bwys. Mae twyll a ddaliwyd yn ystod awdurdodi’n atal colled na fyddai swp nosweithiol ond yn ei adrodd. Mae personoli sy’n ymateb o fewn sesiwn yn codi trosiad mewn ffordd na all argymhelliad yfory ei wneud. Mae monitro gweithredol sy’n adlewyrchu’r presennol yn eich galluogi i ymyrryd cyn i broblem fach droi’n doriad gwasanaeth neu’n ddigwyddiad cyhoeddus. Ym mhob achos, y gwerth yw’r gwahaniaeth rhwng gweithredu nawr a gweithredu’n ddiweddarach, a’r gwahaniaeth hwnnw yw’r hyn y dylech ei fesur wrth wneud yr achos.
Mae cyfanswm cost perchnogaeth yn uwch na phrosesu swp, ac mae bod yn onest am hynny’n diogelu eich hygrededd. Rydych yn talu am seilwaith bob-amser-ymlaen, am beirianwyr sy’n deall amser digwyddiad, marciau dŵr, cyflwr, a semanteg traddodi, ac am y profi anos a’r baich ar-alwad sydd gan system y mae’n rhaid iddi aros yn iach yn barhaus yn hytrach na rhedeg a stopio. Mae pensaernïaeth ffrydio-yn-gyntaf ar gofnod a gedwir yn gostwng cost barhaus drwy eich arbed rhag sylfaen cod swp ddyblyg, ac mae dewis ‘o leiaf unwaith’ gyda sinciau idempotent yn osgoi cost peirianwaith ‘union unwaith’ o ben i ben. Y camgymeriad drutaf yw adeiladu amser real lle byddai micro-swp neu swp yn ddigon, felly’r ddadl gost gryfaf yw, yn aml, penderfyniad i beidio â ffrydio. Fframiwch y cynnig i arweinwyr o amgylch penderfyniadau penodol sy’n sensitif i oedi a’u henillion mesuradwy, a byddwch yr un mor glir ynghylch lle mae aros mewn prosesu swp yn arbed arian heb golli gwerth.
Gwrth-batrymau a phethau i’w hosgoi
- Adeiladu ffrydio er mwyn statws pan fyddai micro-swp bob ychydig funudau’n bodloni’r angen.
- Cyfrifo ar sail amser prosesu, fel bod eich ffigurau’n siglo gyda’ch seilwaith yn hytrach na’r byd.
- Anwybyddu data hwyr ac allan o drefn nes bod cysoni’n methu mewn cynhyrchiad.
- Mynd ar drywydd ‘union unwaith’ llythrennol ym mhobman yn lle ‘o leiaf unwaith’ gyda sinciau idempotent.
- Cyflwr diderfyn heb ddyddiad dod i ben, yn tyfu’n dawel nes bod swydd yn rhedeg allan o gof.
- Dim pwyntio gwirio, fel bod ailgychwyn yn colli cyflwr neu’n gorfodi ailchwarae llawn.
- Pôlio cronfeydd data gweithredol ar amserydd yn lle defnyddio dal newid data.
- Cynnal haen swp a haen cyflymder Lambda gyda rhesymeg ddyblyg, yn crwydro.
- Ffenestr gadw rhy fyr i ailchwarae hanes pan ddewch o hyd i wall.
- Ffrydiau heb fetrigau oedi, trwybwn, na ffresni, yn methu’n dawel.
Model aeddfedrwydd
- Lefel 1, Cychwyn: Mae popeth yn brosesu swp, neu mae ychydig o swyddi ffrydio llawysgrifedig yn rhedeg yn adweithiol heb fonitro. Cyfrifir ffigurau ar sail amser prosesu, anwybyddir data hwyr, ac mae ailgychwyn yn colli cyflwr. Ni all neb ailchwarae hanes i drwsio gwall, a darganfyddir problemau pan fydd ffigurau i lawr yr afon yn gwrthod cysoni.
- Lefel 2, Datblygu: Mae rhai timau’n rhedeg piblinellau ffrydio craidd ar frocer seiliedig ar gofnod gyda phwyntio gwirio, ac maen nhw’n gwahaniaethu rhwng amser digwyddiad ac amser prosesu ac yn defnyddio ffenestri sylfaenol. Mae’r arfer yn anghyson o dîm i dîm: mae traddodi’n ‘o leiaf unwaith’ ond nid yw pob sinc yn idempotent, mae trin data hwyr yn fyrfyfyr, a gwylir oedi’n anffurfiol yn hytrach na chael ei rybuddio arno.
- Lefel 3, Safoni: Mae amser digwyddiad, marciau dŵr, a pholisi data hwyr penodol wedi’u dogfennu a’u cymhwyso ar draws y sefydliad. Mae sinciau’n idempotent ar gyfer canlyniadau ‘i bob pwrpas unwaith’, mae gan gyflwr ddyddiad dod i ben, ac mae dal newid data’n bwydo systemau i lawr yr afon fel confensiwn. Mae cofnod a gedwir yn cynnal ailchwarae, a monitrir oedi, trwybwn, a ffresni gyda rhybuddion fel safon ar draws y sefydliad yn hytrach nag arferiad fesul tîm.
- Lefel 4, Rheoli: Mesurir a rheolir yr ystad ffrydio yn erbyn llinellau sylfaen. Mae gan bob piblinell amcanion lefel-gwasanaeth ar gyfer oedi o ben i ben, oedi defnyddwyr, amser adfer, gwyriad amser digwyddiad, cyfradd digwyddiadau hwyr, maint cyflwr, a chost fesul miliwn o ddigwyddiadau, a olrheinir i gyd yn erbyn targedau y cytunwyd arnynt gan rybuddio ar atchweliad. Ymarferir ac amserir adferiad yn hytrach na’i dybio, gwylir lle anadlu ôl-bwysedd a thwf cyflwr fel signalau capasiti, ac mae’n rhaid i ffrwd newydd glirio’r metrigau hyn cyn iddi fynd i gynhyrchiad.
- Lefel 5, Cydgordio: Mae pensaernïaeth ffrydio-yn-gyntaf yn gwasanaethu anghenion ffres a hanesyddol o un cofnod y gellir ei ailchwarae, ac mae SQL ffrydio, golygfeydd wedi’u sylweddoli, ac OLAP amser real yn gwneud data ffres yn eang hygyrch. Mae ailbrosesu’n rwtin ac wedi’i brofi, mae’r llwyfan yn hunanraddio ac yn ailgydbwyso yn erbyn llwyth a chost a fesurwyd, a rhoddir y gorau i ffrydiau, eu haildrefnu, neu eu disodli ar sail tystiolaeth. Mae ffrydio wedi’i integreiddio â chynllunio busnes a risg, ac mae pob ffrwd yn arsylwadwy ac yn archwiliadwy o ben i ben wrth i’r darlun llwyth a chost newid.
Syniadau i’w trafod
- Ble yn eich stac y mae “amser real” yn ennill ei gost mewn gwirionedd, a ble mae’n ddymuniad heb ei archwilio?
- Pa mor fawr yw’r bwlch rhwng amser digwyddiad ac amser prosesu ar draws eich ffynonellau, ac a ydych yn ei fesur?
- A allech gywasgu trefniant swp-a-chyflymder Lambda yn un sylfaen cod ffrydio-yn-gyntaf, a beth fyddai’n ei rwystro?
- Pa rai o’ch sinciau sy’n wirioneddol idempotent, ac a allech ailchwarae data’r chwarter diwethaf yn ddiogel drwy resymeg gywiredig heddiw?
- Beth yw eich polisi ar gyfer data sy’n cyrraedd ar ôl i ffenestr gau, ac a yw pawb i lawr yr afon yn ei wybod?
- Sut fyddai dal newid data’n newid y ffordd rydych yn cadw chwilio, storfeydd cudd, a dadansoddeg yn gydamserol?
Casgliadau allweddol
- Trowch at ffrydio dim ond pan fo penderfyniad sensitif i oedi’n talu amdano; mae prosesu swp a micro-swp yn ddiofynion rhatach.
- Cyfrifwch ar sail amser digwyddiad, a thriniwch ddata hwyr ac allan o drefn fel y broblem graidd, wedi’i thrin â ffenestri a marciau dŵr.
- Ffafriwch draddodi ‘o leiaf unwaith’ gyda sinciau idempotent ar gyfer canlyniadau ‘i bob pwrpas unwaith’ yn hytrach na ‘union unwaith’ llythrennol ym mhobman.
- Pwyntiwch wirio brosesu â chyflwr, ffiniwch eich cyflwr, a monitrwch oedi defnyddwyr fel prif fetrig.
- Defnyddiwch ddal newid data i ffrydio o gronfeydd data gweithredol yn lle pôlio.
- Ffafriwch bensaernïaeth ffrydio-yn-gyntaf ar gofnod a gedwir, y gellir ei ailchwarae, yn hytrach na chynnal dwy sylfaen cod.
- Datgelwch ffrydiau drwy SQL ffrydio, golygfeydd wedi’u sylweddoli, ac OLAP amser real, a chadwch bob ffrwd yn arsylwadwy ac yn archwiliadwy.
Cyfeiriadau a darllen pellach
- Tyler Akidau, Slava Chernyak, and Reuven Lax, “Streaming Systems.”
- Martin Kleppmann, “Designing Data-Intensive Applications.”
- Nathan Marz and James Warren, “Big Data” (Lambda architecture).
- Jay Kreps, “Questioning the Lambda Architecture” (O’Reilly Radar).
- Fabian Hueske and Vasiliki Kalavri, “Stream Processing with Apache Flink.”
- Ben Stopford, “Designing Event-Driven Systems.”
- Tyler Akidau and colleagues, “The Dataflow Model” (VLDB paper on windowing and watermarks).