7.6

Tazama kwa Kiingereza

7.6 Data ya wakati halisi na ya kutiririka

Muhtasari na msukumo

Mengi ya unayojua kuhusu mabomba ya data yanadhania data inakaa tuli. Unakusanya siku moja ya rekodi, unaendesha kazi usiku, na unasoma matokeo asubuhi. Data ya wakati halisi na ya kutiririka inapindua dhana hiyo. Badala ya kuchakata rundo lililokamilika la data, unachakata mtiririko usio na mwisho wa matukio yanapofika, na unazalisha majibu mfululizo. Hii ndiyo tofauti kati ya uchakataji wa kundi, unaofanya kazi kwenye seti ya data yenye mipaka, kamili, na uchakataji wa mtiririko, unaofanya kazi kwenye mtiririko usio na mipaka, usiokamilika kamwe.

Kwa timu kubwa, kutiririka hujitokeza ucheleweshaji unapoanza kujalisha kwa biashara. Uamuzi wa ulaghai unaofika saa moja kuchelewa hauna thamani. Ishara ya ubinafsishaji inayotua kesho haibinafsishi chochote. Dashibodi ya uendeshaji inayochelewa nyuma ya uhalisia kwa zamu nzima inawapotosha watu wanaoitazama. Sura ya 7.2 (uhandisi wa data) inahoji kwamba uchague kundi kwa chaguo-msingi na ufikie kutiririka tu pale ucheleweshaji unalipa kweli, na sura hii inakupeleka sehemu iliyobaki: wakati wakati halisi unastahili gharama yake, na jinsi ya kuujenga bila kuchoma bajeti yako ya uendeshaji. Kutiririka kunakaa karibu na mifumo ya ujumbe inayoendeshwa na matukio katika sura ya 3.12 (usanifu unaoendeshwa na matukio na ujumbe), uchaguzi wa hifadhi katika sura ya 3.4 (usanifu wa data na uhifadhi), na mazoea ya telemetry katika sura ya 9.2 (uonekanaji na telemetry).

Mashirika makubwa na serikali huinua dau. Benki hupima miamala kwa ulaghai kwa muda ambao msomaji wa kadi unakonyeza. Wakala wa usafiri hufuatilia magari na kutabiri kufika kwa mamilioni ya wasafiri. Wakala wa manufaa hutazama hitilafu katika madai huku ukiweka rekodi inayokaguliwa ya kila uamuzi. Katika yote haya, thamani inatokana na kutenda juu ya data ikiwa bado safi, na hatari inatokana na kutenda juu ya data isiyo sahihi, pungufu, au isiyowezekana kujenga upya baadaye. Sura hii ina msimamo kuhusu yote mawili.

Kanuni kuu

  • Fikia kutiririka tu ucheleweshaji unapokuwa na thamani wazi ya biashara; kundi ni nafuu na rahisi zaidi.
  • Tofautisha data yenye mipaka (finyu) na isiyo na mipaka (isiyoisha), na usanifu ipasavyo.
  • Chukulia muda wa tukio, si muda wa kufika, kama chanzo cha ukweli, na upange kwa data iliyochelewa na isiyo na mpangilio.
  • Madirisha na alama za maji ndivyo unavyopata majibu finyu kutoka mtiririko usio na mwisho.
  • Pendelea matokeo ya mara-moja-kwa-ufanisi kupitia vyombo vya kupokea vya kutobadilika thamani kuliko ahadi dhaifu za mara-moja-tu.
  • Uchakataji wenye hali unahitaji kuchukua vituo vya ukaguzi ili uweze kupona bila kupoteza wala kuhesabu mara mbili.
  • Sanifu kwa shinikizo la nyuma na kuchakata upya tangu siku ya kwanza, si wazo la baadaye.
  • Weka mantiki ya kutiririka ikionekana na ikikaguliwa; mtiririko kimya ni mbaya kuliko kundi lililoshindwa.

Mapendekezo

Halalisha wakati halisi kabla ya kuujenga

Uamuzi muhimu zaidi wa kutiririka ni kama kutiririka kabisa. Wakati halisi karibu unazidisha ugumu wa uendeshaji na gharama yako maradufu, kwa sababu unabadilisha kazi inayoendesha na kusimama kwa mfumo unaopaswa kubaki na afya kila sekunde. Kabla ya kujitolea, taja uamuzi ambao data mpya inawezesha na gharama ya uamuzi huo kufika kuchelewa. Kupima ulaghai, tahadhari za uendeshaji, na ubinafsishaji hai kwa kawaida hupita kizingiti. Dashibodi ambayo binadamu anaitazama mara mbili kwa siku karibu haipiti, hata kama “wakati halisi” unasikika wa kuridhisha kwenye mkutano wa mipango. Andika sharti la ucheleweshaji kama namba, kwa sekunde au dakika, na ulikague dhidi ya uhalisia. Mengi ya yale watu wanayoita wakati halisi yanahudumiwa vizuri na makundi madogo yanayoendesha kila dakika chache kwa sehemu ndogo ya gharama.

Sanifu kuzunguka muda wa tukio, si muda wa uchakataji

Wazo gumu zaidi katika kutiririka ni kwamba matukio hutokea wakati mmoja na kuchakatwa wakati mwingine. Muda wa tukio ni wakati kitu kilipotokea kweli, kwa mfano msafiri alipogusa kadi. Muda wa uchakataji ni wakati mfumo wako ulipofikia kuishughulikia. Hivi hutofautiana mara kwa mara: simu inapoteza mawimbi kwenye handaki na kupakia mguso wa dakika tatu mara moja, hitilafu ya mtandao inapanga upya ujumbe, kizigeu kinachelewa. Ukikokotoa kwa muda wa uchakataji, namba zako zinayumba na miundombinu yako badala ya kuakisi dunia. Tatizo hili la kuchelewa na kutokuwa na mpangilio ndilo moyo wa nidhamu, na linaunganika moja kwa moja na uundaji wa matukio katika usanifu unaoendeshwa na matukio. Weka muhuri wa muda wa tukio kwenye kila tukio chanzoni, ubebe muhuri huo kupitia bomba zima, na ukokotoe matokeo yako dhidi yake.

Tumia madirisha na alama za maji kupata majibu finyu

Mtiririko usio na mipaka haumaliziki kamwe, kwa hiyo “hesabu matukio” haina jibu hadi uufunge kwa mipaka. Madirisha hufanya hivyo. Madirisha yanayoanguka hukata muda kuwa ndoo zilizowekwa, zisizoingiliana, kwa mfano kila dakika. Madirisha yanayoteleza huingiliana, kwa hiyo dirisha la dakika tano linaloendelea kila dakika linakupa takwimu laini inayosonga. Madirisha ya kikao huunganisha milipuko ya shughuli iliyotenganishwa na mapengo ya kutokuwa na shughuli, inayofaa vikao vya watumiaji. Ukishakuwa na madirisha, unahitaji kuamua dirisha linapokuwa limekamilika, kwa sababu data iliyochelewa bado inaweza kufika. Alama ya maji ni makadirio ya mfumo kwamba pengine umeona matukio yote hadi muda fulani wa tukio. Alama ya maji inapopita mwisho wa dirisha, unatoa matokeo. Rekebisha muda wa kusubiri: shikilia madirisha wazi kwa muda mrefu na uvumilie kuchelewa zaidi kwa gharama ya ucheleweshaji na kumbukumbu, yafunge haraka na uhatarishe kuangusha waliochelewa. Amua waziwazi nini kinatokea kwa data inayofika baada ya dirisha kufungwa, kama unaiangusha, kuiandika, au kutoa marekebisho.

Fanya vyombo vya kupokea viwe na kutobadilika thamani na upendelee mara-moja-kwa-ufanisi

Hakikisho za utoaji zinasikika rahisi na si hivyo. Utoaji wa angalau-mara-moja unamaanisha kila tukio linachakatwa, lakini baadhi yanaweza kuchakatwa zaidi ya mara moja baada ya kujaribu tena, kwa hiyo hesabu zinaweza kuvimba. Mara-moja-tu inasikika bora lakini ni ghali na, ikichukuliwa halisi kuvuka mifumo ya nje ya aina yoyote, mara nyingi haiwezekani. Lengo la kiutendaji ni mara-moja-kwa-ufanisi: matokeo yanayoonekana ni kama kila tukio lilichakatwa mara moja, hata kama mitambo ilijaribu tena chini yake. Unafika huko kwa kufanya vyombo vyako vya kupokea vya kutobadilika thamani viwe salama kuandikwa mara kwa mara, ukitumia funguo za kuamuliwa na upserts ili tukio lililochezwa tena liandike juu badala ya kurudia. Changanya utoaji wa angalau-mara-moja na uandishi wenye kutobadilika thamani na unapata matokeo sahihi bila kulipia uratibu mzito wa miamala kila mahali. Hifadhi mitambo ya kweli ya mara-moja-tu kwa sehemu finyu zinazoihitaji kweli.

Chukua vituo vya ukaguzi vya uchakataji wenye hali ili uweze kupona

Hesabu nyingi za manufaa za kutiririka zina hali: hesabu zinazoendelea, viungo kuvuka mtiririko, kuondoa nakala, mifano ya ulaghai inayokumbuka tabia ya hivi karibuni. Hali hiyo inaishi kwenye kumbukumbu na ingetoweka mchakato unapoanza upya. Kuchukua vituo vya ukaguzi hupiga picha ya hali na nafasi ya mtiririko pamoja mara kwa mara, kwa hiyo baada ya kuanguka mfumo unaendelea kutoka nukta thabiti badala ya kuchezwa upya wote au kupoteza kumbukumbu. Pima ukubwa wa hali kwa makusudi, kwa sababu hali isiyo na mipaka ni njia ya kawaida ya kuiishia kazi ya kutiririka kumbukumbu kwenye uzalishaji. Tumia kuisha na muda-wa-kuishi kwa hali usiyoihitaji tena, na ufuatilie ukubwa wa hali kama kipimo cha daraja la kwanza. Muda wa kupona baada ya kushindwa ni wasiwasi halisi wa kiwango cha huduma, kwa hiyo ujaribu kabla watumiaji wako hawajafanya.

Tiririsha kutoka hifadhidata za uendeshaji kwa kunasa mabadiliko ya data

Mara nyingi unataka kuitikia mabadiliko katika hifadhidata ambayo haikubuniwa kutoa matukio. Kunasa mabadiliko ya data (CDC) hutatua hili kwa kusoma kumbukumbu ya miamala ya hifadhidata na kugeuza kila uingizaji, usasishaji, na ufutaji kuwa mtiririko wa matukio ya mabadiliko. Hii ni bora zaidi kuliko kuuliza jedwali kwa kipima muda, ambacho ni polepole, hukosa hali za kati, na hupiga chanzo kwa nguvu. CDC hukuruhusu kuweka faharasa ya utafutaji, kache, hifadhi ya uchanganuzi, au huduma ya chini ya mkondo sawia mfululizo na mfumo rasmi, na hufanya hivyo bila mabadiliko ya kuvamia kwenye programu. Chukulia mtiririko wa mabadiliko kama bidhaa ya data ya daraja la kwanza: weka matoleo kwenye skima yake, andika maana yake, na tazama ucheleweshaji wake, kwa sababu kila kitu cha chini ya mkondo kinarithi ucheleweshaji huo.

Pendelea usanifu wa kutiririka-kwanza kuliko kudumisha misingi miwili ya msimbo

Usanifu wa Lambda wa kawaida huendesha tabaka la kundi kwa historia sahihi, kamili kando ya tabaka la kasi kwa matokeo mapya, ya takriban, kisha huviunganisha. Unafanya kazi, lakini unakulazimisha kuandika na kudumisha mantiki ileile ya biashara mara mbili, katika mifumo miwili, na kupatanisha tofauti milele. Usanifu wa Kappa unaporomosha hili: weka kumbukumbu ya kudumu, inayoweza kuchezwa upya ya matukio na uendeshe uchakataji wote kama uchakataji wa mtiririko, ukichakata upya historia kwa kucheza kumbukumbu mantiki inapobadilika. Sekta imeelekea umbo hili la kutiririka-kwanza kwa sababu msingi mmoja wa msimbo ni nafuu zaidi sana kudumisha na kufikiria. Ukiweza kueleza mahitaji yako ya kundi kama michezo upya juu ya kumbukumbu ya matukio iliyohifadhiwa, unaepuka kodi ya misingi miwili kabisa. Tumia madalali wa msingi wa kumbukumbu wanaohifadhi historia ili kuchakata upya iwe suala la kurudisha nyuma, si kujenga upya.

Fichua mitiririko kama SQL, maonyesho yaliyotekelezwa, na OLAP ya wakati halisi

Si kila anayehitaji kutiririka anapaswa kuandika msimbo wa kiwango cha chini wa uchakataji wa mtiririko. SQL ya kutiririka huwaruhusu wachambuzi na wahandisi kueleza madirisha, viungo, na ujumlishaji katika lugha wanayoijua tayari, na inaweka matokeo ya sasa mfululizo kama maonyesho yaliyotekelezwa. Kwa maswali ya uchanganuzi ya ucheleweshaji mdogo juu ya data mpya, hifadhi ya uchakataji wa uchambuzi mtandaoni (OLAP) ya wakati halisi huingiza mtiririko na kujibu maswali ya kukata-na-kugawa kwa milisekunde, ndicho kinachowezesha dashibodi ya uendeshaji hai kweli. Oanisha hizi na mazoea ya uchanganuzi wa bidhaa katika sura ya 7.4 (uchanganuzi wa bidhaa na majaribio) lengo likiwa maoni ya haraka kuhusu vipengele na majaribio. Chagua zana hizi za kiwango cha juu pale zinapofaa, na uhifadhi wachakataji wa mtiririko walioandikwa kwa mkono kwa mantiki ambayo hazielezi.

Panga shinikizo la nyuma na kuchakata upya tangu mwanzo

Mtiririko unaweza kufika kwa kasi kuliko unavyoweza kuchakata. Shinikizo la nyuma ni utaratibu unaomruhusu mtumiaji polepole kuashiria juu ya mkondo kupunguza kasi badala ya kuanguka au kuangusha data kimya. Hakikisha kila hatua kwenye bomba lako inaiheshimu, na ufuatilie ucheleweshaji wa mtumiaji kama kipimo cha kichwa, kwa sababu ucheleweshaji unaokua ni onyo la mapema kwamba unapoteza mbio. Kuchakata upya ni uwezo mwingine ambao watu hutamani wangeujenga ndani. Unapopata hitilafu au kubadilisha kanuni, unataka kucheza upya historia kupitia mantiki iliyorekebishwa. Hilo linawezekana tu ikiwa kumbukumbu yako ya matukio inahifadhi historia ya kutosha na vyombo vyako vya kupokea vina kutobadilika thamani ya kutosha kunyonya mchezo upya. Sanifu zote mbili tangu siku ya kwanza; kuziongeza chini ya shinikizo la tukio ni ya kuhuzunisha.

Mabadilishano: faida na hasara

ChaguoFaidaHasaraInafaa zaidi
KundiRahisi, nafuu, rahisi kujaribu na kujaza nyumaUcheleweshaji wa juu, imechakaa kati ya mbioKuripoti, uchanganuzi mwingi
Kundi dogo (dakika)Karibu wakati halisi, rahisi zaidi sana kuliko kutiririkaSi ya papo hapo kweliDashibodi za “wakati halisi”
Kutiririka kweli (chini ya sekunde)Mwitikio wa papo hapo, matokeo mfululizoChangamano, ghali, ngumu kujaribuUlaghai, tahadhari, ubinafsishaji hai
Angalau-mara-moja + chombo chenye kutobadilika thamaniMatokeo sahihi, ya bei nafuu, yanayostahimiliInahitaji muundo wa funguo wenye nidhamuMabomba mengi ya kutiririka
Mitambo ya mara-moja-tuHakikisho imara mwanzo hadi mwishoGhali, mipaka kuvuka mifumoNjia finyu za dau kubwa
Lambda (kundi + kasi)Historia sahihi pamoja na mwonekano mpyaMisingi miwili ya msimbo ya kudumishaUhamishaji wa urithi
Kappa (kutiririka-kwanza)Msingi mmoja wa msimbo, unaochezeka upyaInahitaji kumbukumbu iliyohifadhiwa, ya kudumuMajukwaa mapya ya kutiririka

Mvutano wa msingi ni ucheleweshaji dhidi ya ugumu. Kila hatua kuelekea wakati halisi inakugharimu katika mzigo wa uendeshaji, ugumu wa kujaribu, na fedha, na faida si za mstari: kutoka kila siku hadi kila dakika chache ni nafuu na mara nyingi inatosha, wakati kutoka dakika hadi chini ya sekunde ndipo gharama inapojikita. Tatua mvutano kwa kupima bei ya uamuzi, si teknolojia. Uliza kitendo gani usafi unawezesha na kuchelewa kunagharimu nini, kisha unua tu kupunguza ucheleweshaji kadiri kitendo hicho kinavyohalalisha. Unapohitaji kutiririka, egemea utoaji wa angalau-mara-moja na vyombo vya kupokea vyenye kutobadilika thamani na kumbukumbu ya kutiririka-kwanza, kwa sababu mchanganyiko huo unakupa usahihi na uwezo wa kucheza upya bila hakikisho nzito zaidi.

Maswali ya kujadili na timu yako

  1. Data ya wakati halisi inawezesha uamuzi gani kwetu kweli, na inagharimu nini data hiyo inapofika dakika moja kuchelewa badala ya papo hapo? Hili ndilo swali linalopaswa kuweka lango kwa kila mradi wa kutiririka, kwa sababu kutiririka karibu kunazidisha gharama na ugumu wa uendeshaji maradufu ikilinganishwa na kundi. Timu kubwa inaweza kuchoma robo kujenga jukwaa la wakati halisi linalohudumia dashibodi ambayo binadamu anaikagua mara mbili kwa siku, ambayo ni fedha iliyochomwa. Leta kitendo madhubuti ambacho data inaendesha, iwe ni kuzuia muamala wa ulaghai, kumpigia mwendeshaji simu, au kubadilisha kile mtumiaji anachoona, na uweke namba kwenye gharama ya ucheleweshaji kwa kila moja. Jibu la uaminifu likiwa kundi dogo la dakika tano lingehudumia hitaji, hilo ni matokeo ya kusherehekea, si kuficha. Jibu linapaswa kubadilisha moja kwa moja kama mnajenga kutiririka kweli, kutosheka na makundi madogo, au kubaki kwenye kundi.

  2. Tunashughulikiaje matukio yaliyochelewa na yasiyo na mpangilio, na nini kinatokea kwa data inayofika baada ya dirisha kufungwa? Data iliyochelewa na isiyo na mpangilio ndiyo sehemu ngumu ya kutiririka, na timu zinazoruka swali hili hugundua kwenye uzalishaji namba zao zinaposhindwa kupatanisha. Shinikizo zinazoshindana ni ucheleweshaji na usahihi: shikilia madirisha wazi kwa muda mrefu kunasa waliochelewa na unachelewesha kila matokeo na kutumia kumbukumbu zaidi, yafunge haraka na unaangusha data halisi kimya. Leta ushahidi wa data yenu inavyochelewa kweli, ukipimwa kama pengo kati ya muda wa tukio na muda wa uchakataji kuvuka vyanzo vyenu, kwa kuwa chanzo cha simu kwenye vichuguu kinatenda tofauti sana na tukio la upande wa seva. Amua waziwazi kama data iliyochelewa inaangushwa, inaandikwa, au inachochea marekebisho, na hakikisha kila mtu wa chini ya mkondo anajua. Katika muktadha wa serikali ambapo takwimu lazima ziweze kutetewa, kuangusha matukio yaliyochelewa kimya kunaweza kuwa tatizo la uzingatiaji, kwa hiyo sera inahitaji kuwa ya makusudi na iliyoandikwa.

  3. Vyombo vyetu vya kupokea vina kutobadilika thamani ya kutosha kucheza upya historia kwa usalama, na kumbukumbu yetu ya matukio inahifadhi vya kutosha kuwezesha kucheza upya? Kuchakata upya ni uwezo ambao timu mara nyingi hutamani wangeujenga ndani na mara nyingi hawakujenga, na unategemea mambo mawili yanayofanya kazi pamoja: vyombo vya kupokea vyenye kutobadilika thamani vinavyonyonya matukio yaliyochezwa upya bila kurudia, na kumbukumbu ya kudumu inayohifadhi historia ya kutosha kucheza kutoka. Bila yote mawili, kurekebisha hitilafu ya mantiki kunamaanisha huwezi kukokotoa upya kipindi kilichoathirika kwa usafi, na mnakwama kuweka viraka namba kwa mkono chini ya shinikizo. Leta dirisha lenu la sasa la uhifadhi na jaribio madhubuti: chagua hitilafu halisi ya robo iliyopita na uliza kama mngeweza kucheza upya mantiki iliyorekebishwa juu ya data iliyoathirika. Mvuto dhidi ya hili ni gharama, kwa kuwa kuhifadhi historia na kubuni uandishi wenye kutobadilika thamani kunachukua hifadhi na nidhamu mapema. Lakini mbadala unajitokeza wakati mbaya zaidi, wakati wa tukio, kwa hiyo jibu linaumba ni kiasi gani mnawekeza kwenye uwezo wa kucheza upya kabla hamjauhitaji.

  4. Kazi ya kutiririka inapoanguka, inapaswa kupona kwa kasi gani, inaruhusiwa kushikilia hali kiasi gani, na je, tumepima urejeshaji kweli chini ya mzigo wa uzalishaji? Kazi ya kundi inayokufa inaweza kuendeshwa tena kesho, lakini mtiririko wa kila wakati unaokufa ni hitilafu inayoendelea, na kazi zenye hali zinazoshikilia hesabu zinazoendelea, viungo, au mifano ya ulaghai zinaweza kupoteza dakika za kumbukumbu au kuchukua muda mrefu kupakia hali baada ya kuanza upya. Kwa timu kubwa, hapa ndipo undani usiovutia unapoweka upatikanaji wenu halisi kimyakimya: hali isiyo na mipaka hukua hadi kazi iishiwe kumbukumbu, na urejeshaji wa polepole wa kituo cha ukaguzi hugeuza hitilafu fupi ya sekunde kumi kuwa ya dakika kumi. Shinikizo zinazoshindana ni usafi dhidi ya usalama, kwa sababu vituo vya ukaguzi vya mara kwa mara hufupisha urejeshaji lakini huongeza mzigo, na uhifadhi mwingi wa hali huboresha usahihi lakini hatari ya kuishiwa kumbukumbu. Leta lengo madhubuti la muda wa urejeshaji, ukubwa wenu wa sasa wa hali na mkunjo wake wa ukuaji, kipindi chenu cha vituo vya ukaguzi, na matokeo ya zoezi halisi la kushindwa badala ya makadirio ya matumaini. Katika mazingira ya mashirika makubwa na serikali ambapo mtiririko unaunga mkono kupima ulaghai au mlisho wa usalama wa umma, njia ya urejeshaji isiyojaribiwa ni hatari ya uendeshaji mliyoikubali bila kupima, kwa hiyo chukulia zoezi kama sharti, si la hiari.

  5. Tunaendesha msingi mmoja wa msimbo wa kutiririka-kwanza au tabaka la kundi na tabaka la kasi tofauti, na inatugharimu nini kuviweka vimepatanishwa? Mfumo wa Lambda wa tabaka la kundi kwa historia sahihi pamoja na tabaka la kasi kwa matokeo mapya unakulazimisha kuandika mantiki ileile ya biashara mara mbili, katika mifumo miwili, na kupatanisha majibu yao milele, wakati umbo la kutiririka-kwanza (Kappa) linaweka kumbukumbu ya kudumu, inayoweza kuchezwa upya na kuendesha uchakataji wote kama uchakataji wa mtiririko. Kwa shirika kubwa mantiki iliyorudiwa ndipo kuteleza na namba zinazobishaniwa huzaliwa, kwa sababu kanuni inabadilika tabaka moja na si jingine, na wahandisi hutumia muda halisi kueleza kwa nini viwili vinatofautiana. Mvuto kuelekea kuweka vyote viwili ni mazoea na faraja ya tabaka la kundi lililothibitishwa, kwa hiyo pima hilo dhidi ya kodi ya matengenezo kwa uaminifu. Leta orodha ya hesabu mnazoendesha sasa katika sehemu zote mbili, matukio yaliyosababishwa na matabaka kutokubaliana, na tathmini ya kama kumbukumbu yenu ya matukio inahifadhi historia ya kutosha kueleza mahitaji ya kundi kama michezo upya. Katika mazingira ya serikali na mashirika yanayokaguliwa, matabaka mawili yanayoweza kuripoti takwimu tofauti kwa kipindi kilekile ni dhima ya uzingatiaji yenyewe, kwa kuwa lazima uweze kusema namba ipi ina mamlaka na kwa nini.

  6. Nani anaendesha mfumo huu wa kila wakati unapovunjika saa tisa usiku, na je, tumepangia bajeti mzigo wa simu ya dharura na ujuzi maalumu unaodai, au tunadhania uajiri wa umbo la kundi? Kutiririka huhamisha gharama kutoka kujenga hadi kuendesha: mfumo lazima ubaki na afya kila sekunde, jambo linalomaanisha ufikiaji halisi wa simu ya dharura, wahandisi wanaojua muda wa tukio, alama za maji, hali, na semantiki za utoaji, na majaribio magumu zaidi kuliko kwa kazi inayoendesha na kusimama. Timu mara kwa mara huidhinisha jukwaa la kutiririka kwa msingi wa uwezo wake na hazifadhili kamwe watu wanaolifanya liishi, kwa hiyo jukwaa linadhoofika na uaminifu unamomonyoka. Mabadilishano ni wigo dhidi ya uendelevu: kila bomba la ziada la wakati halisi ni kitu kingine kinachoweza kumpigia mtu simu, kwa hiyo swali ni kama ucheleweshaji unaonunua unahalalisha kujitolea kwa kudumu kwa uendeshaji. Leta orodha ya uaminifu ya nani anamiliki kila mtiririko kwenye uzalishaji, mzunguko wenu wa sasa wa simu ya dharura na nafasi yake, na mahali utaalamu wa muda wa tukio unakaa kweli, iwe ni ajira, mshirika, au huduma inayosimamiwa. Kwa chombo cha umma au shirika kubwa, ongeza muda wa ununuzi na uajiri na chaguo lolote la huduma inayosimamiwa, kwa sababu jukwaa la wakati halisi linalotegemea vipaji adimu msivyoweza kuajiri wala kubakiza ni mpango wa kuendesha mfumo unaoelekea kuharibika ukiwa na wafanyakazi pungufu.

Mtazamo wa sekta

Kampuni changa. Kutiririka mara chache ni hatua yako ya kwanza, na kusimamisha jukwaa zito kunaweza kuzamisha timu ndogo. Chagua ishara moja inayogusa thamani yako ya msingi, weka matukio kwenye dalali mmoja wa msingi wa kumbukumbu uliohifadhiwa, na uendeshe kichakataji chepesi chenye vyombo vya kupokea vilivyofungwa na vyenye kutobadilika thamani ili jaribio la angalau-mara-moja lisihesabu mara mbili kamwe. Weka historia ya siku chache ili uweze kucheza upya kupitia mantiki iliyorekebishwa, na upendelee huduma ya kutiririka inayosimamiwa kuliko kuendesha kundi lako mwenyewe, kwa sababu rasilimali yako adimu zaidi ni umakini wa kihandisi.

Biashara ndogo. Huenda huna mtaalamu wa kutiririka wala hamu ya kuendesha miundombinu ya kila wakati, kwa hiyo chukulia wakati halisi kama kitu unachonunua ndani ya zana unazotumia tayari badala ya mfumo unaoajiria. Weka hitaji kama swali la ucheleweshaji lenye namba, na mara nyingi kundi dogo linalosasisha kila dakika chache litatimiza kwa sehemu ndogo ya gharama na hatari. Chagua wauzaji ambao vipengele vyao vya wakati halisi ni vya uwazi kuhusu ucheleweshaji na rahisi kurudi nyuma kutoka, na uhifadhi kutiririka maalumu kwa kesi adimu ambapo data mpya inaendesha mapato au usalama moja kwa moja.

Biashara kubwa. Tatizo ni uthabiti na gharama kuvuka timu nyingi: jukwaa la pamoja la msingi wa kumbukumbu, sera ya kawaida ya muda wa tukio na data iliyochelewa, na vyombo vya kupokea vyenye kutobadilika thamani ili vikundi viache kubuni upya mabomba dhaifu. Weka bajeti ya mzigo wa uendeshaji wa kila wakati na simu ya dharura waziwazi, sawazisha kwenye kumbukumbu ya kutiririka-kwanza ili uepuke msingi wa kundi uliorudiwa, na usimamie mitiririko kama bidhaa za data zilizotawaliwa zenye wamiliki, matoleo ya skima, na ucheleweshaji unaofuatiliwa badala ya mtawanyiko wa kazi za kipekee. Fuatilia ucheleweshaji, muda wa urejeshaji, na gharama kwa kila mtiririko kama vipimo vya jalada.

Serikali. Uwezo wa kukaguliwa na uwajibikaji wa umma huumba kila uchaguzi. Hifadhi kila tukio lililochakatwa kwenye kumbukumbu ya kudumu ili takwimu zinazoripotiwa kwa vyombo vya usimamizi, idadi ya wasafiri, hitilafu za manufaa, maamuzi ya ulaghai, ziweze kujengwa upya hasa, na ufanye sera ya data iliyochelewa iwe wazi na iliyoandikwa badala ya kuangusha matukio kimya. Ununuzi unapaswa kudai uhamishaji wa data na ufichuzi wa hakikisho za utoaji na uhifadhi za huduma inayosimamiwa, na usahihishaji wowote baada ya badiliko la kanuni unapaswa kuwa mchezo upya unaoweza kutetewa kupitia mantiki iliyorekebishwa, si kiraka cha mkono ambacho hakuna anayeweza kukifuatilia.

Mifano

Kampuni changa. Programu ya watumiaji inataka kuonyesha watumiaji mlisho wa shughuli hai na kuweka alama kuingia kwa kutia shaka kunapotokea. Timu inapinga kusimamisha jukwaa zito la kutiririka. Wanaweka matukio kwenye dalali mmoja wa msingi wa kumbukumbu uliohifadhiwa, wanaendesha kichakataji chepesi cha mtiririko kwa mantiki ya hatari ya kuingia, na kulisha hifadhi ya OLAP ya wakati halisi inayoendesha mlisho wa shughuli. Kila chombo cha kupokea kimefungwa na kina kutobadilika thamani, kwa hiyo jaribio la angalau-mara-moja halihesabu mara mbili kamwe. Baadaye wanapopata hitilafu kwenye kanuni ya hatari, wanacheza tu kumbukumbu kupitia mantiki iliyorekebishwa usiku kucha, kwa sababu walihifadhi wiki ya historia na hawakuhitaji kamwe msingi wa pili wa kundi.

Biashara kubwa. Benki ya rejareja inapima kila muamala wa kadi kwa ulaghai ndani ya dirisha la idhini, ikiunganisha mtiririko hai wa miamala dhidi ya mfano wenye hali wa tabia ya hivi karibuni ya akaunti. Vituo vya ukaguzi vinaruhusu huduma ya kupima kupona kutoka kushindwa kwa nodi kwa sekunde bila kupoteza kumbukumbu ya dakika chache za mwisho. Kando, kunasa mabadiliko ya data hutiririsha masasisho kutoka hifadhidata kuu ya benki hadi faharasa ya utafutaji na huduma ya ubinafsishaji, ikiziweka zote mpya bila kuuliza. Dashibodi za uendeshaji zinasoma kutoka hifadhi ya OLAP ya wakati halisi ili timu za hatari na operesheni zitazame biashara inavyosonga, na bomba zima linatoa telemetry ya ucheleweshaji na matokeo iliyoelezwa katika sura ya 9.2.

Serikali. Mamlaka ya usafiri ya jiji inaingiza nafasi za magari na miguso ya nauli kutabiri kufika na kufuatilia msongamano kwa wakati halisi, ikilisha programu za umma na kituo cha operesheni. Kwa kuwa wasafiri kwenye vichuguu hupakia miguso kwa milipuko iliyochelewa, timu inakokotoa idadi ya wasafiri kwa muda wa tukio na alama za maji zilizorekebishwa kwa kuchelewa kulikoonekana, na inaandika tukio lolote linalofika baada ya dirisha lake kufungwa badala ya kuliangusha kimya. Kila tukio lililochakatwa linahifadhiwa kwenye kumbukumbu inayokaguliwa ili takwimu za wasafiri zinazoripotiwa kwa vyombo vya usimamizi ziweze kujengwa upya hasa. Kanuni ya nauli inapobadilika, wanacheza upya kipindi kilichoathirika kupitia mantiki iliyorekebishwa na kuzalisha usahihishaji unaoweza kutetewa.

Kesi ya biashara: sababu, ROI, na TCO

Faida ya data ya wakati halisi inatokana na kutenda wakati hatua bado inajalisha. Ulaghai uliokamatwa wakati wa idhini huzuia hasara ambayo kundi la usiku lingeripoti tu. Ubinafsishaji unaoitikia ndani ya kikao huinua ubadilishaji kwa njia ambayo pendekezo la kesho haliwezi. Ufuatiliaji wa uendeshaji unaoakisi sasa hukuruhusu kuingilia kabla tatizo dogo halijakuwa hitilafu au tukio la umma. Katika kila hali, thamani ni tofauti kati ya kutenda sasa na kutenda baadaye, na tofauti hiyo ndiyo unayopaswa kupima unapoweka kesi.

Jumla ya gharama ya umiliki ni ya juu kuliko kundi, na uaminifu kuhusu hilo hulinda sifa yako. Unalipia miundombinu ya kila wakati, wahandisi wanaoelewa muda wa tukio, alama za maji, hali, na semantiki za utoaji, na mzigo mgumu zaidi wa majaribio na simu ya dharura wa mfumo unaopaswa kubaki na afya mfululizo badala ya kuendesha na kusimama. Usanifu wa kutiririka-kwanza kwenye kumbukumbu iliyohifadhiwa hupunguza gharama inayoendelea kwa kukuepusha na msingi wa kundi uliorudiwa, na kuchagua angalau-mara-moja na vyombo vya kupokea vyenye kutobadilika thamani kunaepuka gharama ya mitambo ya mara-moja-tu mwanzo hadi mwisho. Kosa ghali zaidi ni kujenga wakati halisi pale kundi dogo au kundi lingetosha, kwa hiyo hoja imara zaidi ya gharama mara nyingi ni uamuzi wa kutotiririka. Weka wasilisho kwa uongozi kuzunguka maamuzi mahususi nyeti kwa ucheleweshaji na faida yake inayopimika, na uwe wazi vilevile kuhusu mahali kubaki kwenye kundi kunaokoa fedha bila kupoteza thamani.

Mifumo mibaya na mitego

  • Kujenga kutiririka kwa heshima wakati kundi dogo kila dakika chache lingetimiza hitaji.
  • Kukokotoa kwa muda wa uchakataji, kwa hiyo namba zako zinayumba na miundombinu yako badala ya dunia.
  • Kupuuza data iliyochelewa na isiyo na mpangilio hadi upatanisho ushindwe kwenye uzalishaji.
  • Kufukuzia mara-moja-tu halisi kila mahali badala ya angalau-mara-moja na vyombo vyenye kutobadilika thamani.
  • Hali isiyo na mipaka bila kuisha, ikikua kimyakimya hadi kazi iishiwe kumbukumbu.
  • Hakuna vituo vya ukaguzi, kwa hiyo kuanza upya kunapoteza hali au kulazimisha mchezo upya kamili.
  • Kuuliza hifadhidata za uendeshaji kwa kipima muda badala ya kunasa mabadiliko ya data.
  • Kudumisha tabaka la kundi la Lambda na tabaka la kasi lenye mantiki iliyorudiwa, inayoteleza.
  • Dirisha la uhifadhi fupi mno kucheza upya historia unapopata hitilafu.
  • Mitiririko isiyo na vipimo vya ucheleweshaji, matokeo, au usafi, ikishindwa kimya.

Kielelezo cha ukomavu

  • Ngazi ya 1, Kuanzisha: Kila kitu ni kundi, au kazi chache za kutiririka zilizojengwa kwa mkono zinaendeshwa kwa kuitikia bila ufuatiliaji. Namba zinakokotolewa kwa muda wa uchakataji, data iliyochelewa inapuuzwa, na kuanza upya kunapoteza hali. Hakuna anayeweza kucheza upya historia kurekebisha hitilafu, na matatizo yanagunduliwa takwimu za chini ya mkondo zinaposhindwa kupatanisha.
  • Ngazi ya 2, Kuendeleza: Baadhi ya timu huendesha mabomba ya msingi ya kutiririka kwenye dalali wa msingi wa kumbukumbu wenye vituo vya ukaguzi, na zinatofautisha muda wa tukio na muda wa uchakataji na kutumia madirisha ya msingi. Mazoea hayana uthabiti timu hadi timu: utoaji ni angalau-mara-moja lakini si vyombo vyote vya kupokea vina kutobadilika thamani, ushughulikiaji wa data iliyochelewa ni wa papo hapo, na ucheleweshaji unatazamwa bila rasmi badala ya kutolewa tahadhari.
  • Ngazi ya 3, Kusawazisha: Muda wa tukio, alama za maji, na sera wazi ya data iliyochelewa vimeandikwa na kutumika kuvuka shirika. Vyombo vya kupokea vina kutobadilika thamani kwa matokeo ya mara-moja-kwa-ufanisi, hali ina kuisha, na kunasa mabadiliko ya data kunalisha mifumo ya chini ya mkondo kwa mkataba. Kumbukumbu iliyohifadhiwa inaunga mkono kucheza upya, na ucheleweshaji, matokeo, na usafi vinafuatiliwa kwa tahadhari kama kiwango cha shirika zima badala ya tabia ya timu.
  • Ngazi ya 4, Kusimamia: Eneo la kutiririka linapimwa na kudhibitiwa dhidi ya vipimo vya msingi. Kila bomba hubeba malengo ya kiwango cha huduma kwa ucheleweshaji wa mwanzo hadi mwisho, ucheleweshaji wa mtumiaji, muda wa urejeshaji, kutofautiana kwa muda wa tukio, kiwango cha matukio yaliyochelewa, ukubwa wa hali, na gharama kwa kila milioni ya matukio, vyote vinafuatiliwa dhidi ya malengo yaliyokubaliwa na kutoa tahadhari kwa regression. Urejeshaji unafanyiwa mazoezi na kupimwa muda badala ya kudhaniwa, nafasi ya shinikizo la nyuma na ukuaji wa hali vinatazamwa kama ishara za uwezo, na mtiririko mpya lazima upite vipimo hivi kabla ya kwenda uzalishaji.
  • Ngazi ya 5, Kuratibu: Usanifu wa kutiririka-kwanza unahudumia mahitaji mapya na ya kihistoria kutoka kumbukumbu moja inayochezeka upya, na SQL ya kutiririka, maonyesho yaliyotekelezwa, na OLAP ya wakati halisi hufanya data mpya ipatikane kwa upana. Kuchakata upya ni utaratibu na unajaribiwa, jukwaa linajipanua na kusawazisha upya dhidi ya mzigo na gharama iliyopimwa, na mitiririko inastaafishwa, kupanuliwa upya, au kubadilishwa kwa ushahidi. Kutiririka kumeunganishwa na upangaji wa biashara na hatari, na kila mtiririko unaonekana na kukaguliwa mwanzo hadi mwisho picha ya mzigo na gharama inapohama.

Mawazo ya kujadili

  1. Katika mrundiko wenu “wakati halisi” unastahili gharama yake wapi kweli, na wapi ni tamanio lisilochunguzwa?
  2. Pengo kati ya muda wa tukio na muda wa uchakataji kuvuka vyanzo vyenu ni kubwa kiasi gani, na je, mnalipima?
  3. Mngeweza kuporomosha usanidi wa Lambda wa kundi-na-kasi kuwa msingi mmoja wa msimbo wa kutiririka-kwanza, na nini kingezuia?
  4. Vyombo vyenu vipi vya kupokea vina kutobadilika thamani kweli, na mngeweza kucheza upya data ya robo iliyopita kupitia mantiki iliyorekebishwa kwa usalama leo?
  5. Sera yenu ni ipi kwa data inayofika baada ya dirisha kufungwa, na je, kila mtu wa chini ya mkondo anaijua?
  6. Kunasa mabadiliko ya data kungebadilishaje jinsi mnavyoweka utafutaji, kache, na uchanganuzi sawia?

Mambo muhimu ya kukumbuka

  • Fikia kutiririka tu uamuzi nyeti kwa ucheleweshaji unapolipia; kundi na kundi dogo ni chaguo-msingi nafuu zaidi.
  • Kokotoa kwa muda wa tukio, na uchukulie data iliyochelewa na isiyo na mpangilio kama tatizo la msingi, linaloshughulikiwa kwa madirisha na alama za maji.
  • Pendelea utoaji wa angalau-mara-moja na vyombo vya kupokea vyenye kutobadilika thamani kwa matokeo ya mara-moja-kwa-ufanisi kuliko mara-moja-tu halisi kila mahali.
  • Chukua vituo vya ukaguzi vya uchakataji wenye hali, bana hali yako, na ufuatilie ucheleweshaji wa mtumiaji kama kipimo cha kichwa.
  • Tumia kunasa mabadiliko ya data kutiririsha kutoka hifadhidata za uendeshaji badala ya kuuliza.
  • Pendelea usanifu wa kutiririka-kwanza kwenye kumbukumbu iliyohifadhiwa, inayoweza kuchezwa upya kuliko kudumisha misingi miwili ya msimbo.
  • Fichua mitiririko kupitia SQL ya kutiririka, maonyesho yaliyotekelezwa, na OLAP ya wakati halisi, na uweke kila mtiririko ukionekana na kukaguliwa.

Marejeo na usomaji zaidi

  • 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).