O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni" Talofa, tagata o Khabro! O lenei tusi e talafeagai mo soʻo se atinaʻe e fia malamalama i le faʻaogaina o filo. O le malamalama i polokalame tufatufaina o le a fesoasoani ia te oe e malamalama atili ai i Kafka ma Kafka Streams. E manaia le iloa o le Kafka framework lava ia, ae e le manaʻomia lenei mea: O le a ou taʻu atu ia te oe mea uma e te manaʻomia. O le a aʻoaʻoina e le au atinaʻe Kafka ma tagata fou le faʻaogaina o le faʻaogaina o le faʻaogaina o le vaitafe e faʻaaoga ai le faletusi a Kafka Streams i lenei tusi. O tagata atina'e Java o lo'o fa'agasolo ma maualuga ua masani i manatu e pei o le fa'asologa o le a a'oa'oina e fa'aoga o latou tomai e fai ai talosaga a Kafka Streams. O le faʻailoga puna o le tusi o loʻo tusia i le Java 8 ma faʻaoga tele le Java 8 lambda expression syntax, o lea o le iloa pe faʻapefea ona galue ma galuega lambda (e oʻo lava i se isi gagana polokalame) o le a aoga.

Vaega. 5.3. Fa'atasiga ma fa'amalama fa'agaioiga

I lenei vaega, o le a tatou agai i luma e suʻesuʻe vaega sili ona manuia o Kafka Streams. E oʻo mai i le taimi nei ua matou ufiufi vaega nei o Kafka Streams:

  • faia o se fa'agaioiga topology;
  • fa'aogaina o le setete i fa'asalalauga talosaga;
  • fa'atinoina o feso'ota'iga feso'ota'iga;
  • ese'esega i le va o mea e tutupu (KStream) ma fa'afouga vaitafe (KTable).

I faʻataʻitaʻiga o loʻo mulimuli mai o le a tatou faʻapotopotoina uma nei elemene. O le a e a'oa'o fo'i e uiga i le fa'amalama, o le isi vaega sili o le fa'afefe o talosaga. O la tatou faʻataʻitaʻiga muamua o le a faʻapipiʻi faigofie.

5.3.1. Tu'ufa'atasiga o fa'atauga fa'atauga e ala ile vaega ole alamanuia

O le tu'ufa'atasiga ma le fa'avasegaina o mea faigaluega taua pe a galue i fa'asalalauga fa'amaumauga. O le su'esu'eina o fa'amaumauga ta'ito'atasi pe a maua mai e masani ona le lava. Ina ia maua mai faʻamatalaga faaopoopo mai faʻamatalaga, e tatau ona faʻapipiʻi ma tuʻufaʻatasia.

I lenei faʻataʻitaʻiga, o le ae faʻaofuina le teuga o se faioloa aso e manaʻomia le siakiina o le faʻatauga o faʻatauga a kamupani i le tele o alamanuia. Aemaise lava, e te fiafia i kamupani e lima o loʻo i ai le tele o faʻatau sea i pisinisi taʻitasi.

O lea tuufaatasiga o le a manaʻomia ai le tele o laasaga e faʻaliliu ai faʻamatalaga i le pepa e manaʻomia (tautala i faaupuga lautele).

  1. Fausia se puna fa'avae autu e fa'asalalau fa'amatalaga tau fefa'ataua'iga mata'utia. E tatau ona matou faafanua se mea o le ituaiga StockTransaction i se mea o le ShareVolume. O le manatu o le mea o le StockTransaction o loʻo i ai metadata faʻatau, ae matou te manaʻomia faʻamatalaga e uiga i le numera o sea o loʻo faʻatau atu.
  2. Fa'avasega ShareVolume fa'amaumauga ile fa'ailoga fa'atau. A tu'ufa'atasia i fa'ailoga, e mafai ona e fa'ato'ilaloina nei fa'amaumauga i ni vaega laiti o fa'atauga fa'atauga. E taua le matauina o le KStream.groupBy auala e toe faafoi mai ai se faʻataʻitaʻiga o le ituaiga KGroupedStream. Ma e mafai ona e maua se faʻataʻitaʻiga KTable e ala i le valaʻau atili i le KGroupedStream.reduce metotia.

O le a le fa'aoga KGroupedStream

O le KStream.groupBy ma le KStream.groupByKey auala e toe faʻafoʻi ai se faʻataʻitaʻiga o KGroupedStream. KGroupedStream ose fa'atusa fa'avaitaimi o se fa'asologa o mea na tutupu pe a uma ona fa'avasegaina i ki. E le'o fa'amoemoe lava mo le galue sa'o ma ia. Nai lo lena, KGroupedStream e faʻaaogaina mo le faʻapipiʻiina o gaioiga, lea e masani ona maua ai se KTable. Ma talu ai ona o le taunuuga o le faʻapipiʻiina o gaioiga o se KTable ma latou faʻaogaina se faleoloa a le setete, e mafai e le o faʻafouga uma o se taunuuga e tuʻuina atu i lalo ole paipa.

O le KTable.groupBy auala e toe faafoi mai ai se KGroupedTable tutusa - o se faʻataʻitaʻiga vaeluaga o le vaitafe o faʻafouga, toe faʻapipiʻiina i ki.

Sei o tatou fai sina malologa puupuu ma tilotilo i le Ata. 5.9, o loʻo faʻaalia ai mea ua tatou ausia. O lenei topology e tatau ona e masani lelei ia te oe.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Sei o tatou tilotilo nei i le code mo lenei topology (e mafai ona maua i le faila src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Listing 5.2).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
O le tulafono ua tuʻuina atu e iloga i lona puʻupuʻu ma le tele o gaioiga o loʻo faia i le tele o laina. E mafai ona e matauina se mea fou i le parakalafa muamua o le builder.stream auala: o se tau o le ituaiga enum AutoOffsetReset.EARLIEST (o loʻo i ai foi se LATEST), seti e faʻaaoga ai le Consumed.withOffsetResetPolicy method. E mafai ona fa'aoga lea ituaiga fa'avasegaga e fa'amaoti ai se ta'iala toe setiina mo KStream ta'itasi po'o le KTable ma fa'amuamua le filifiliga toe setiina mai le fa'atulagaina.

GroupByKey ma GroupBy

O le KStream interface e lua auala mo le fa'avasegaina o fa'amaumauga: GroupByKey ma GroupBy. O lo'o toe fa'afo'i uma le KGroupedTable, atonu o lo'o e mafaufau pe o le a le eseesega i le va ma le taimi e fa'aoga ai?

Ole auala GroupByKey e fa'aoga pe a le'o gaogao ki ile KStream. Ma o le mea e sili ona taua, o le fuʻa "e manaʻomia le toe vaeluaga" e leʻi setiina.

Ole auala GroupBy e fa'apea ua e suia le fa'avasegaina o ki, o lea ua fa'atulaga le fu'a toe fa'avasega i le moni. Fa'atinoina o fa'atasi, fa'aputuga, ma isi pe a uma le faiga GroupBy o le a i'u ai i le toe vaeluaga otometi.
Aotelega: Soo se taimi e mafai ai, e tatau ona e faʻaogaina GroupByKey nai lo GroupBy.

E manino lava le mea o loʻo faia e le mapValues ​​​​ma groupBy metotia, o lea seʻi o tatou tilotilo i le aofaʻi () metotia (maua i le src/main/java/bbejeck/model/ShareVolume.java) (Listing 5.3).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
O le ShareVolume.sum metotia e toe faʻafoʻi ai le aofaʻi atoa o le faʻatauga faʻatau, ma o le taunuuga o le faasologa atoa o faʻatusatusaga o se mea KTable . O lea ua e malamalama i le matafaioi a le KTable. A o'o mai mea o le ShareVolume, o le mea fa'atatau KTable e teuina le fa'afouga lata mai. E taua le manatua o faʻafouga uma o loʻo atagia i le shareVolumeKTable talu ai, ae le o mea uma o loʻo lafoina atili.

Ona matou fa'aogaina lea o le KTable e fa'aputuina (i le aofa'i o sea fa'atau) e taunu'u atu ai i kamupani e lima o lo'o i ai le maualuga o le aofa'i o sea o lo'o fefa'ataua'i i pisinisi ta'itasi. O a tatou gaioiga i lenei tulaga o le a tutusa ma mea mo le faʻapotopotoga muamua.

  1. Fa'atino se isi fa'aupugaE ala i le fa'avasegaina o meafaitino ShareVolume ta'itasi e ala ile alamanuia.
  2. Amata le aotelega o meafaitino ShareVolume. Ole taimi la ole aggregation object o se laina fa'amuamua. I lenei laina fa'amautu, e na'o kamupani e lima e tele le aofa'i o sea fa'atau atu o lo'o taofia.
  3. Fa'afanua laina mai le parakalafa muamua i se tau manoa ma toe fa'afo'i le lima pito i luga o fa'atauga fa'atau i numera e ala i pisinisi.
  4. Tusi i'uga i se manoa i le autu.

I le Ata. Ata 5.10 o lo'o fa'aalia ai le fa'asologa o fa'asologa o fa'amaumauga. E pei ona mafai ona e vaʻaia, o le taamilosaga lona lua o le gaioiga e fai lava si faigofie.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
I le taimi nei ua matou maua se malamalamaga manino i le fausaga o lenei taamilosaga lona lua o le gaioiga, e mafai ona matou liliu atu i lona code source (e te mauaina i le faila src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Listing 5.4) .

O lenei initializer o lo'o i ai se fesuiaiga tumauQueue. Ose mea fa'ale-aganu'u lea o se mea fa'apipi'i mo java.util.TreeSet e fa'aoga e siaki ai le pito i luga N i'uga i le fa'asologa i lalo o sea fa'atau.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Ua uma ona e vaʻai i le groupBy ma mapValues ​​​​faʻafesoʻotaʻi, o lea matou te le o ai i totonu o na (o loʻo matou taʻua le KTable.toStream method ona o le KTable.print method ua faʻaumatia). Ae e te leʻi vaʻai i le KTable version of aggregate() i le taimi nei, o lea o le a matou faʻaalu sina taimi e talanoaina ai.

E pei ona e manatua, o le a le mea e ese ai le KTable o faʻamaumauga faʻatasi ma ki tutusa e manatu o faʻafouga. Ua suia e le KTable le tusi tuai i se mea fou. O le fa'aputuga e tupu i se auala fa'apena: o fa'amaumauga aupito lata mai e tutusa le ki o lo'o tu'ufa'atasia. A oʻo mai se faʻamaumauga, e faʻaopoopoina i le FixedSizePriorityQueue vasega faʻataʻitaʻiga e faʻaaoga ai se faʻapipiʻi (faʻamaufaʻailoga lona lua i le faʻaogaina o metotia faʻapipiʻi), ae afai o loʻo i ai se isi faʻamaumauga ma le ki lava e tasi, ona aveese lea o le faamaumauga tuai e faʻaaoga ai se subtractor (tolu parakalafa i totonu. le vala'au metotia tu'ufa'atasi).

O lona uiga o le tatou fa'aputuga, FixedSizePriorityQueue, e le fa'aputuina uma tau fa'atasi ma le ki e tasi, ae teuina se aofa'iga fealua'i o le aofa'i o N ituaiga fa'atau oloa. O fa'asalalauga ta'itasi o lo'o iai le aofa'i o sea na fa'atau atu i le taimi nei. KTable o le a tu'uina atu ia te oe fa'amatalaga e uiga i sea a kamupani o loʻo sili ona fefaʻatauaʻi i le taimi nei, e aunoa ma le manaʻomia o le faʻasologa o faʻasalalauga o faʻafouga taʻitasi.

Na matou aʻoaʻoina e faia ni mea taua se lua:

  • vaega taua i le KTable i se ki masani;
  • fa'atino galuega aoga e pei o le ta'ai ma le fa'apotopotoina i luga o nei tau fa'avasega.

O le iloaina o le fa'atinoina o nei fa'agaioiga e taua tele i le malamalama i le uiga o fa'amaumauga o lo'o fa'agasolo i se talosaga a Kafka Streams ma malamalama i fa'amatalaga o lo'o tauaveina.

Ua matou tuufaatasia foi nisi o manatu autu na talanoaina muamua i lenei tusi. I le Mataupu e 4, na matou talanoaina ai le taua tele o le fa'apalepale masei, le setete fa'apitonu'u mo se fa'agasolo talosaga. O le faʻataʻitaʻiga muamua i lenei mataupu na faʻaalia ai le mafuaʻaga e taua tele ai le setete o le lotoifale-e te maua ai le tomai e siaki ai faʻamatalaga ua uma ona e vaʻaia. O avanoa fa'apitonu'u e 'alofia ai le tuai o feso'ota'iga, ma fa'agaoioi ai le fa'atinoga ma fa'asao mea sese.

Pe a faia soʻo se taʻavale poʻo le tuʻufaʻatasiga gaioiga, e tatau ona e faʻamaonia le igoa o le faleoloa o le setete. O fa'agaioiga fa'apipi'i ma fa'atasiga e toe fa'afo'i mai ai se fa'ata'ita'iga KTable, ma fa'aaoga e le KTable le teuina o le setete e sui ai fa'ai'uga tuai i fa'ai'uga fou. E pei ona e vaʻaia, e le o faʻafouga uma e tuʻuina atu i lalo o le paipa, ma e taua tele ona o faʻatinoga faʻapipiʻi ua mamanuina e maua ai faʻamatalaga otooto. Afai e te le fa'aogaina le setete fa'apitonu'u, KTable o le a tu'uina atu fa'atasi uma ma fa'ai'uga fa'asalalau.

O le isi, o le a tatou vaʻavaʻai i le faʻatinoina o gaioiga e pei o le tuʻufaʻatasia i totonu o se taimi faʻapitoa - e taʻua o faʻamalama faʻamalama.

5.3.2. Galuega fa'amalama

I le vaega muamua, na matou faʻaalia ai le faʻafefe faʻafefe ma le faʻapipiʻiina. O le talosaga na fa'atino ai le fa'aauauina o fa'atauga fa'atau ma soso'o ai ma le fa'aputuina o fa'atauga e lima e sili ona fa'atauina i luga o le fefa'ataua'iga.

O nisi taimi e mana'omia ai le fa'aputuga faifaipea ma le fa'avasegaina o fa'ai'uga. Ma o nisi taimi e te manaʻomia le faʻatinoina o gaioiga i luga o se taimi atofaina. Mo se fa'ata'ita'iga, fuafua pe fia le tele o fefa'ataua'iga na faia ma sea a se kamupani fa'apitoa i le 10 minute mulimuli. Po'o le to'afia o tagata fa'aoga na kiliki i luga o se fu'a fa'asalalauga fou i le 15 minute mulimuli. E mafai e se talosaga ona fa'atino ia fa'agaioiga i le tele o taimi, ae fa'atasi ai ma fa'ai'uga e fa'atatau i na'o vaitaimi ma'oti (time windows).

Faitauina fefa'ataua'iga fefa'ataua'iga a le tagata fa'atau

I le fa'ata'ita'iga o lo'o soso'o mai, o le a matou va'aia fefa'ataua'iga o fa'atauga i le tele o faioloa—pe fa'alāpotopotoga tetele po'o tagata poto fa'atupe ta'ito'atasi.

E lua mafua'aga talafeagai mo lenei sailiga. O se tasi o ia mea o le manaʻoga e iloa poʻo a taʻitaʻi maketi o loʻo faʻatau / faʻatau atu. Afai e vaʻaia e nei tagata taʻalo tetele ma tagata fai pisinisi faʻapitoa le avanoa, e talafeagai le mulimuli i la latou fuafuaga. O le mafua'aga lona lua o le mana'o e va'ai so'o se fa'ailoga o le fa'atulafonoina o fefa'ataua'iga. Ina ia faia lenei mea, e tatau ona e suʻeina le faʻamaopoopoina o faʻatauga tetele faʻatasi ma faʻasalalauga taua.

O ia sailiga e aofia ai laasaga nei:

  • fatuina o se vaitafe mo le faitau mai le autu o fefa'ataua'iga;
  • fa'avasega fa'amaumauga o lo'o o'o mai e ala ile ID fa'atau ma fa'ailoga fa'asoa. O le vala'au i le groupBy method e toe fa'afo'i mai ai se fa'ata'ita'iga o le vasega KGroupedStream;
  • O le KGroupedStream.windowedBy auala e toe fa'afo'i ai se fa'amaumauga fa'atapula'a i se fa'amalama taimi, lea e mafai ai ona fa'aputu fa'amalama. Fa'alagolago ile ituaiga fa'amalama, ole TimeWindowedKStream po'o se SessionWindowedKStream e toe fa'afo'i mai;
  • numera o fefa'ataua'iga mo le fa'agasologa fa'aopoopo. O fa'amatalaga fa'amalama fa'amalama e iloa ai pe fa'amauina se fa'amaumauga patino i lenei faitauga;
  • tusia i'uga i se autu po'o le tu'uina atu i le fa'amafanafanaga a'o atina'e.

O le topology o lenei talosaga e faigofie, ae o se ata manino o le a fesoasoani. Sei o tatou tilotilo i le Ata. 5.11.

O le isi, o le a tatou vaʻavaʻai i le faʻatinoga o faʻamalama faʻamalama ma le code tutusa.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"

Ituaiga faamalama

E tolu ituaiga o faamalama i Kafka Streams:

  • sauniga;
  • “pa'ū”;
  • fa'ase'e / osooso.

O le fea e filifili e fa'alagolago i au pisinisi mana'omia. O fa'amalama fa'ato'a ma osooso e fa'atapula'aina le taimi, a'o fa'amalama o sauniga e fa'atapula'aina e le fa'aogaina o gaioiga—o le umi o le vasega e fa'atatau i le malosi o le tagata fa'aoga. O le mea autu e manatua o ituaiga faʻamalama uma e faʻavae i luga o faʻailoga aso / taimi o faʻamaumauga, ae le o le taimi faʻatulagaina.

Ma le isi, matou te faʻatinoina a matou topology i ituaiga taʻitasi taʻitasi. O le numera atoa o le a tuʻuina atu i le faʻataʻitaʻiga muamua; mo isi ituaiga windows e leai se mea e suia sei vagana ai le ituaiga o faʻamalama.

Faamalama o sauniga

O faamalama o sauniga e matua ese lava mai isi ituaiga uma o faamalama. E fa'atapula'aina i latou i le taimi e pei o le gaioiga a le tagata fa'aoga (po'o le gaioiga a le fa'alapotopotoga e te mana'o e siaki). O fa'amalama o sauniga e fa'atapula'aina e vaitaimi o le le toaga.

Ata 5.12 o lo'o fa'aalia ai le manatu o fa'amalama o sauniga. O le vasega la'ititi o le a fa'atasi ma le vasega i lona agavale. Ma o le sauniga i le itu taumatau o le a vavae ese ona e mulimuli i se vaitaimi umi o le le toaga. Session windows e fa'avae i luga ole gaioioiga a tagata fa'aoga, ae fa'aoga fa'ailoga aso/taimi mai fa'amaumauga e iloa ai po'o fea le vasega e iai le tusi.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"

Fa'aaogā fa'amalama session e siaki ai fefa'ataua'iga o fa'atauga

Se'i o tatou fa'aoga le session windows e pu'e ai fa'amatalaga e uiga i fefa'ataua'iga. O le faʻatinoga o faʻamalama o sauniga o loʻo faʻaalia i le Lisi 5.5 (lea e mafai ona maua i le src/main/java/bbejeck/chapter_5/CountingWindowingAndKTableJoinExample.java).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Ua uma ona e vaʻai i le tele o faʻagaioiga i lenei topology, o lea e le manaʻomia ai le toe iloiloina iinei. Ae o loʻo i ai foi nisi elemene fou iinei, lea o le a tatou talanoaina nei.

So'o se fa'agaioiga fa'agroupBy e masani lava ona fa'atino ai se ituaiga o fa'agaioiga fa'atasi (fa'aopoopo, fa'asolo, po'o le faitau). E mafai ona e fa'atinoina le fa'aputuga fa'aopoopo ma se aofa'iga ta'avale, po'o le fa'aputuga fa'amalama, lea e fa'amauina fa'amaumauga i totonu o se fa'amalama taimi fa'apitoa.

O le code i le Lisi 5.5 e faitaulia le numera o fefaʻatauaiga i totonu o faʻamalama o sauniga. I le Ata. 5.13 o nei gaioiga o lo'o su'esu'eina la'asaga ta'itasi.

E ala i le vala'au i le windowedBy(SessionWindows.with(twentySeconds).until(fifteenMinutes)) matou te faia ai se fa'amalama o le sauniga ma le va o le le toaga i le 20 sekone ma le tumau tumau o le 15 minute. Ole va ole taimi ole 20 sekone o lona uiga o le talosaga o le a aofia ai soʻo se ulufale e oʻo mai i totonu ole 20 sekone o le faʻaiʻuga poʻo le amataga o le taimi nei i le taimi nei (gaoioiga) sauniga.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Ma le isi, matou te faʻamaonia poʻo fea faʻasalalauga faʻapitoa e manaʻomia ona faia i le faamalama o le sauniga - i lenei tulaga, faitau. Afai e pa'ū le ulufale mai i fafo o le faamalama le toaga (po o le itu o le faailoga o le aso/taimi), e faia e le talosaga se sauniga fou. O le taimi fa'atumauina o lona uiga o le fa'atumauina o se vasega mo se taimi fa'apitoa ma fa'ataga mo fa'amatalaga tuai e ova atu i tua atu o le taimi e le toaga ai le vasega ae e mafai lava ona fa'apipi'i. E le gata i lea, o le amataga ma le faaiuga o le sauniga fou e mafua mai i le tu'ufa'atasiga e fetaui ma le ulua'i fa'ailoga aso/taimi lata mai.

Se'i o tatou va'ai i ni nai fa'amatalaga mai le metotia o le faitau e va'ai pe fa'afefea ona fa'atino vasega (Laulau 5.1).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
A o'o mai fa'amaumauga, matou te va'ava'ai mo sauniga o lo'o i ai ma le ki lava e tasi, o le taimi fa'ai'u e itiiti ifo nai lo le fa'ailoga o le aso/taimi o lo'o i ai nei - va'aiga le toaga, ma le taimi amata e sili atu nai lo le fa'ailoga o le aso/taimi o lo'o iai + le va o le le toaga. A fa'atatau i lea tulaga, e fa fa'amatalaga mai le laulau. 5.1 ua tu'ufa'atasia i se vasega e tasi e pei ona taua i lalo.

1. Faʻamaumauga 1 e taunuu muamua, o lea o le taimi amata e tutusa ma le taimi faʻaiʻu ma o le 00:00:00.

2. Sosoo ai, ulufale 2 taunuu, ma tatou vaavaai mo sauniga e le muta muamua nai lo 23:59:55 ma amata le sili atu i le 00:00:35. Matou te maua faʻamaumauga 1 ma tuʻufaʻatasia vasega 1 ma le 2. Matou te ave le taimi amata o le vasega 1 (muamua) ma le taimi faʻaiʻu o le vasega 2 (mulimuli ane), ina ia amata la matou sauniga fou i le 00:00:00 ma faʻaiʻu i le 00: 00:15.

3. Faʻamaumauga 3 e oʻo mai, matou te vaʻavaʻai mo sauniga i le va o 00:00:30 ma 00:01:10 ma e le maua se mea. Fa'aopoopo se vasega lona lua mo le ki 123-345-654,FFBE, amata ma fa'ai'u ile 00:00:50.

4. Fa'amaumauga 4 taunuu mai ma o loʻo matou suʻeina vasega i le va o le 23:59:45 ma le 00:00:25. Ole taimi lea e maua uma ai vasega 1 ma 2. O vasega uma e tolu e tuʻufaʻatasia i le tasi, with a start time of 00:00:00 and an end time of 00:00:15.

Mai mea o loʻo faʻamatalaina i lenei vaega, e taua le manatuaina o nuances taua nei:

  • o sauniga e le'o fa'amalama fa'amalama. O le umi o se sauniga e fa'atatau i le gaioiga i totonu o se vaitaimi;
  • O fa'ailoga aso/taimi i fa'amaumauga e iloa ai pe pa'u le mea na tupu i totonu o se vasega o lo'o i ai po'o le taimi e le aoga.

Sosoo ai o le a tatou talanoaina le isi ituaiga o faamalama - "tumbling" faamalama.

"Tumu" faamalama

O fa'amalama pa'u'u e pu'eina mea e pa'u i totonu o se vaitaimi. Vaʻai faalemafaufau e te manaʻomia e puʻeina uma fefaʻatauaiga faʻatau a se kamupani faʻapitoa i 20 sekone, o lea e te aoina uma ai mea na tutupu i lena vaitaimi. I le fa'ai'uga o le vaeluaga o le 20-lua, e ta'avale le fa'amalama ma fa'asolo atu i se va'aiga fou e 20-lua. Ata 5.14 o lo'o fa'aalia ai lea tulaga.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
E pei ona e vaʻai, o mea uma na maua i le 20 sekone mulimuli o loʻo aofia i le faamalama. I le fa'ai'uga o lenei vaitau, ua faia ai se fa'amalama fou.

Lisi 5.6 o loʻo faʻaalia ai le faʻailoga e faʻaalia ai le faʻaogaina o faʻamalama paʻu e puʻeina ai fefaʻatauaiga o oloa i 20 sekone (maua i le src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Faatasi ai ma lenei suiga laʻititi i le TimeWindows.of method call, e mafai ona e faʻaogaina se faʻamalama paʻu. O lenei faʻataʻitaʻiga e le taʻua le until() method, o lea o le a faʻaaogaina le taimi le tumau o le 24 itula.

Mulimuli ane, ua oʻo i le taimi e alu ai i le pito mulimuli o le faʻamalama filifiliga - "hopping" windows.

Fa'amalama fa'ase'e ("oso'oso'o").

O fa'amalama fa'ase'e/oso e tai tutusa ma fa'amalama fa'ato'a, ae e iai sina eseesega. Fa'amalama fa'ase'e aua le fa'atali se'ia o'o i le fa'ai'uga o le vaeluaga o le taimi a'o le'i faia se fa'amalama fou e fa'agasolo ai mea na tutupu lata mai. Latou te amata fa'atusatusaga fou pe a mae'a se vaitaimi fa'atali e itiiti ifo nai lo le umi o le fa'amalama.

Ina ia faʻaalia le eseesega i le va o faʻamalama pa'ū ma osooso, seʻi o tatou toe foʻi i le faʻataʻitaʻiga o le faitauina o fefaʻatauaiga o fefaʻatauaiga. O la matou sini o le faitau pea o le numera o fefaʻatauaiga, ae matou te le manaʻo e faʻatali i le taimi atoa aʻo leʻi faʻafouina le fata. Ae, o le a matou fa'afouina le fata i taimi pupuu. Mo se faʻataʻitaʻiga, o le a matou faitauina pea le numera o fefaʻatauaiga i 20 sekone, ae faʻafouina le fata i 5 sekone, e pei ona faʻaalia i le Ata. 5.15. I lenei tulaga, matou te faʻamaeʻaina i faʻamalama faʻamalama e tolu ma faʻamatalaga faʻapipiʻi.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Lisi 5.7 o loʻo faʻaalia ai le code mo le faʻamalamalamaina o faʻamalama faʻasolo (maua i le src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
O se fa'amalama pa'u e mafai ona liua i se fa'amalama osooso e ala i le fa'aopoopoina o se vala'au i le auala advanceBy(). I le faʻataʻitaʻiga o loʻo faʻaalia, o le taimi faʻasao e 15 minute.

Na e va'ai i lenei vaega le fa'atapula'aina o fa'aputuga o fa'ai'uga ile taimi fa'amalama. Aemaise lava, ou te manao ia e manatua mea nei e tolu mai lenei vaega:

  • o le tele o faʻamalama faʻamalama e faʻatapulaʻaina e le o le taimi, ae o le gaioiga a tagata faʻaoga;
  • "tu'u" faamalama e maua ai se aotelega o mea na tutupu i totonu o se vaitaimi atofaina;
  • Ole umi ole osooso fa'amalama e fa'amautu, ae e fa'afou fa'afou ma e ono aofia ai fa'amatalaga fa'apipi'i i fa'amalama uma.

O le isi, o le a tatou aʻoaʻoina pe faʻafefea ona liliu se KTable i tua ile KStream mo se fesoʻotaʻiga.

5.3.3. Feso'ota'i KStream ma KTable meafaitino

I le Mataupu 4, na matou talanoaina le faʻafesoʻotaʻi o mea e lua KStream. Ole taimi nei e tatau ona tatou aʻoaʻoina pe faʻafefea ona faʻafesoʻotaʻi KTable ma KStream. Atonu e manaʻomia lenei mea mo le mafuaaga faigofie nei. O le KStream o se vaitafe o fa'amaumauga, ma o le KTable o se fa'afouga o fa'amaumauga, ae o nisi taimi atonu e te mana'o e fa'aopoopo i ai fa'amatalaga fa'aopoopo i le fa'amaumauga e fa'aaoga ai fa'afouga mai le KTable.

Se'i o tatou ave fa'amaumauga ile numera o fefa'ataua'iga fefa'ataua'iga ma tu'ufa'atasia i tala fou fa'atauga mo pisinisi talafeagai. O le mea lea e tatau ona e faia e ausia ai lenei mea ona o le code ua uma ona e maua.

  1. Suia se mea KTable ma faʻamatalaga i luga o le numera o fefaʻatauaiga o oloa i totonu o se KStream, sosoo ai ma le suia o le ki i le ki e faʻaalia ai le vaega o alamanuia e fetaui ma lenei faʻailoga faʻatau.
  2. Fausia se mea KTable e faitau faʻamatalaga mai se autu ma tala fou fefaʻatauaʻiga. O lenei KTable fou o le a fa'avasegaina i vaega o alamanuia.
  3. Fa'afeso'ota'i tala fou ma fa'amatalaga i le aofa'i o fefa'ataua'iga fefa'ataua'iga a le vaega o alamanuia.

Se'i o tatou va'ai pe fa'apefea ona fa'atino lea fuafuaga fa'atino.

Su'e KTable ile KStream

Ina ia liliu KTable i KStream e tatau ona e faia mea nei.

  1. Valaau le KTable.toStream() auala.
  2. I le vala'au o le KStream.map metotia, sui le ki i le igoa alamanuia, ona toe aumai lea o le TransactionSummary mea mai le Windowed instance.

O le a matou filifili faʻatasi nei gaioiga e pei ona taua i lalo (o le code e mafai ona maua i le faila src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Listing 5.8).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Talu ai o lo'o matou fa'atinoina se fa'agaioiga KStream.map, o le fa'ata'ita'iga KStream ua toe fa'afo'i mai e otometi lava ona toe vaelua pe a fa'aoga i se feso'ota'iga.

Ua matou faʻamaeʻaina le faagasologa o le liua, e sosoo ai e manaʻomia le fatuina o se mea KTable mo le faitauina o tala fou.

Fausia o le KTable mo tala fa'asoa

O le mea e lelei ai, o le fatuina o se mea KTable e naʻo le tasi le laina o le code (e mafai ona maua le code i le src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Listing 5.9).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
E taua le maitauina e leai se mea Serde e manaʻomia e faʻamaonia, talu ai o le manoa Serdes o loʻo faʻaaogaina i totonu o faʻatulagaga. E le gata i lea, e ala i le faʻaaogaina o le EARLIEST enumeration, e faʻatumu le laulau i faʻamaumauga i le amataga.

O lea e mafai ona tatou agai atu i le laasaga mulimuli - sootaga.

Fa'afeso'ota'i tala fou fa'atasi ma fa'amaumauga tau fefa'ataua'iga

E le faigata le fatuina o se sootaga. O le a matou faʻaogaina le agavale tuʻufaʻatasia pe a leai se tala faʻasoa mo le pisinisi talafeagai (o le code talafeagai e mafai ona maua i le faila src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Listing 5.10).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
O lenei leftJoin operator e fai si faigofie. E le pei o so'oga i le Mataupu 4, e le'o fa'aogaina le JoinWindow method aua a fa'atino se KStream-KTable tu'ufa'atasi, e na'o le tasi le fa'aulu i le KTable mo ki ta'itasi. O sea fesoʻotaʻiga e le faʻatapulaʻaina i le taimi: o le faʻamaumauga o loʻo i le KTable pe leai. Ole fa'ai'uga autu: fa'aaoga mea KTable e mafai ona e fa'atamaoaigaina KStream fa'atasi ai ma fa'amatalaga fa'afou fa'afou.

O lea o le a tatou vaʻavaʻai i se auala sili atu ona lelei e faʻatamaoaigaina ai mea na tutupu mai KStream.

5.3.4. GlobalKTable mea faitino

E pei ona mafai ona e vaʻai, e manaʻomia le faʻatamaoaigaina o mea e tutupu pe faʻaopoopoina faʻamatalaga ia i latou. I le Mataupu 4 na e va'aia feso'ota'iga i le va o mea e lua KStream, ma i le vaega muamua na e va'aia le feso'ota'iga i le va o le KStream ma le KTable. I nei tulaga uma, e manaʻomia le toe vaeluaga o faʻamaumauga faʻamaumauga pe a faʻafanua ki i se ituaiga fou poʻo se tau. O nisi taimi o le toe vaeluaga e faia ma le manino, ma o nisi taimi o Kafka Streams e otometi lava. E manaʻomia le toe vaeluaga aua ua suia ki ma o faʻamaumauga e tatau ona iʻu i ni vaega fou, a leai o le a le mafai le fesoʻotaʻiga (na talanoaina lenei mea i le Mataupu 4, i le vaega "Re-partitioning data" i le vaega 4.2.4).

O le toe vaeluaga e iai se tau

O le toe vaeluaga e mana'omia ai tau - tau fa'aopoopo mo le fa'atupuina o mataupu fa'apitoa, teuina o fa'amatalaga fa'alua i se isi autu; o lona uiga fo'i ua fa'atupula'ia le fa'aletonu ona o le tusitusi ma le faitau mai lenei autu. E le gata i lea, afai e te manaʻomia le faʻatasi i luga o le sili atu ma le tasi itu poʻo le fua, e tatau ona e filifili soʻo, faʻafanua faamaumauga i ki fou, ma toe faʻatautaia le faiga o le toe vaeluaga.

Feso'ota'i i fa'amaumauga laiti

I nisi tulaga, o le tele o faʻamatalaga faʻamatalaga e fesoʻotaʻi e laʻititi, o lea o kopi atoatoa e faigofie ona ofi i le lotoifale i node taʻitasi. Mo tulaga fa'apenei, Kafka Streams e maua ai le vasega GlobalKTable.

GlobalKTable fa'ata'ita'iga e tulaga ese ona o le talosaga e fa'atusa uma fa'amaumauga i nodes ta'itasi. Ma talu ai o faʻamatalaga uma o loʻo i ai i luga o node taʻitasi, e leai se manaʻoga e vaelua le mea na tupu e ala i faʻamatalaga faʻamaumauga ina ia avanoa i vaega uma. E mafai foi ona e faia so'oga e leai se ki e fa'aaoga ai mea GlobalKTable. Se'i o tatou toe fo'i i se tasi o fa'ata'ita'iga muamua e fa'aalia ai lea tulaga.

Fa'afeso'ota'i mea KStream i mea fa'alelalolagi

I le faafuaiupu 5.3.2, na matou faia ai le fa'aputuga fa'amalama o fefa'atauaiga fa'atau e tagata fa'atau. O faʻaiʻuga o lenei faʻapotopotoga e pei o lenei:

{customerId='074-09-3705', stockTicker='GUTM'}, 17
{customerId='037-34-5184', stockTicker='CORK'}, 16

E ui o nei fa'ai'uga na fa'atino ai le fa'amoemoe, e sili atu le aoga pe ana fa'aalia le igoa o le tagata fa'atau ma le igoa atoa o le kamupani. Ina ia faʻaopoopo le igoa o le tagata faʻatau ma le igoa o le kamupani, e mafai ona e faia faʻatasi masani, ae e manaʻomia ona e faia ni faʻafanua autu se lua ma toe vaelua. Faatasi ai ma GlobalKTable e mafai ona e aloese mai le tau o ia gaioiga.

Ina ia faia lenei mea, matou te faʻaaogaina le countStream mea mai le Listing 5.11 (o le code tutusa e mafai ona maua i le src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) ma faʻafesoʻotaʻi i mea e lua GlobalKTable.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Ua uma ona tatou talanoaina muamua, o lea ou te le toe faia. Ae ou te matauina o le code i le toStream ().map galuega tauave ua abstracted i se galuega faatino nai lo se inline lambda faaupuga mo le lelei o le faitau.

O le isi laasaga o le faʻaalia lea o faʻataʻitaʻiga e lua o GlobalKTable (o le code faʻaalia e mafai ona maua i le faila src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Listing 5.12).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"

Faamolemole ia matau o igoa autu o lo'o fa'amatalaina i le fa'aogaina o ituaiga fa'avasega.

I le taimi nei ua uma ona matou saunia vaega uma, o mea uma e totoe o le tusia lea o le code mo le fesoʻotaʻiga (lea e mafai ona maua i le faila src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Listing 5.13).

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
E ui lava e lua fa'atasi i lenei fa'ailoga, o lo'o saisaitia aua e leai se tasi o latou fa'ai'uga o lo'o fa'aoga ese. O fa'ai'uga o lo'o fa'aalia i le fa'ai'uga o le ta'aloga atoa.

A e faʻatautaia le faʻaogaina o loʻo taʻua i luga, o le ae mauaina faʻamatalaga e pei o lenei:

{customer='Barney, Smith' company="Exxon", transactions= 17}

E leʻi suia le aano, ae o nei taunuuga e sili atu ona manino.

Afai e te faitau i lalo i le Mataupu 4, ua uma ona e vaʻai i le tele o ituaiga fesoʻotaʻiga o loʻo galue. O lo'o lisiina i le laulau. 5.2. O lenei laulau o lo'o atagia ai le mafai feso'ota'iga e pei o le version 1.0.0 o Kafka Streams; E iai se mea e ono suia i fa'asalalauga i le lumana'i.

O le tusi "Kafka Streams i le gaioiga. Talosaga ma microservices mo galuega taimi moni"
Ina ia afifi mea i luga, seʻi o tatou toe faʻavasega mea faʻavae: e mafai ona e faʻafesoʻotaʻi vaitafe mea tutupu (KStream) ma faʻafouina vaitafe (KTable) e faʻaoga ai le setete. I le isi itu, afai e le tele tele le tele o faʻamatalaga faʻamatalaga, e mafai ona e faʻaogaina le mea GlobalKTable. GlobalKTables toe fa'atusa uma vaega i node talosaga ta'itasi a Kafka Streams, fa'amautinoa o lo'o maua uma fa'amaumauga tusa lava po'o le a le vaeluaga e fetaui ma le ki.

O le isi o le a tatou vaʻaia le ata o Kafka Streams, faʻafetai e mafai ona tatou matauina suiga o le setete e aunoa ma le faʻaaogaina o faʻamatalaga mai se autu Kafka.

5.3.5. Tulaga e mafai ona fesiligia

Ua uma ona matou faia ni gaioiga e aofia ai le setete ma faʻaalia i taimi uma iʻuga i le faʻamafanafanaga (mo faʻamoemoega atinaʻe) pe tusi i se autu (mo faʻamoemoega gaosiga). A e tusia fa'ai'uga i se autu, e tatau ona e fa'aogaina se tagata fa'atau Kafka e matamata ai.

O le faitauina o fa'amaumauga mai nei autu e mafai ona ta'ua o se ituaiga o manatu fa'atino. Mo a tatou faʻamoemoega, e mafai ona tatou faʻaogaina le faʻamatalaga o se vaaiga faʻapitoa mai Wikipedia: "...se mea faitino faʻamaumauga faʻapitoa o loʻo i ai iʻuga o se fesili. Mo se faʻataʻitaʻiga, e mafai ona avea o se kopi faʻapitonuʻu o faʻamatalaga mamao, poʻo se vaega o laina ma/poʻo koluma o se laulau poʻo faʻatasi iʻuga, poʻo se laulau otooto e maua mai i le faʻapipiʻiina" (https://en.wikipedia.org/wiki /Materialized_view).

O le Kafka Streams e mafai ai foi ona e faʻatautaia fesili fefaʻasoaaʻi i faleoloa a le setete, e mafai ai ona e faitau saʻo i nei manatu faʻaalia. E taua le maitauina o le fesili i le faleoloa a le setete o se fa'agaioiga na'o le faitau. E fa'amautinoa ai e le tatau ona e popole i le fa'afuase'i ona fa'aletonu le setete a'o fa'agasolo fa'amatalaga lau talosaga.

E taua le mafai ona fesiligia sa'o faleoloa a le setete. O lona uiga e mafai ona e faia ni talosaga dashboard e aunoa ma le ave muamua o faʻamatalaga mai le tagata faatau Kafka. E faʻateleina ai foi le lelei o le talosaga, ona o le mea moni e leai se manaʻoga e toe tusia faʻamaumauga:

  • faafetai i le nofoaga o faʻamaumauga, e mafai ona vave maua;
  • o le toe fa'aluaina o fa'amaumauga e fa'aumatia, talu ai e le o tusia i le teuina i fafo.

O le mea autu ou te manaʻo e te manatua e mafai ona e fesili tuusaʻo le setete mai totonu o lau talosaga. O avanoa e tu'uina atu ia te oe e le mafai ona fa'asilisili. Nai lo le faʻaaogaina o faʻamatalaga mai Kafka ma teuina faʻamaumauga i totonu o se faʻamaumauga mo le talosaga, e mafai ona e fesiligia faleoloa a le setete ma le iʻuga tutusa. O fesili tuusa'o i faleoloa o lona uiga e itiiti le code (leai se tagata fa'atau) ma itiiti le polokalama (e le mana'omia se laulau fa'amaumauga e teu ai fa'ai'uga).

Ua uma ona matou talanoaina le tele o mea i lenei mataupu, o lea o le a tu'u ai la matou talanoaga o fesili fegalegaleai e faasaga i faleoloa a le setete mo le taimi nei. Ae aua le popole: i le Mataupu 9, o le a matou fatuina se lisi faʻapipiʻi faigofie ma fesili fefaʻasoaaʻi. O le a faʻaaogaina nisi o faʻataʻitaʻiga mai lenei ma mataupu muamua e faʻaalia ai fesili fegalegaleai ma pe faʻapefea ona e faʻaopoopoina i latou i talosaga a Kafka Streams.

Aotelega

  • KStream mea faitino e fai ma sui o vaitafe o mea tutupu, faʻatusatusa i faʻaofi i totonu o se faʻamaumauga. O mea faitino KTable e fai ma sui o vaitafe faʻafouina, e pei o faʻafouga i se faʻamaumauga. Ole tele ole mea KTable e le tupu, faʻamaumauga tuai e suia i mea fou.
  • O mea faitino KTable e manaʻomia mo le faʻapipiʻiina o gaioiga.
  • I le fa'aogaina o fa'agaioiga fa'amalama, e mafai ona e vaevaeina fa'amaumauga tu'ufa'atasi i pakete taimi.
  • Faʻafetai i mea GlobalKTable, e mafai ona e mauaina faʻamatalaga faʻamatalaga i soʻo se mea i totonu o le talosaga, e tusa lava po o le a le vaeluaga.
  • So'oga i le va o KStream, KTable ma GlobalKTable mea e mafai.

I le taimi nei, ua matou taulaʻi i le fausiaina o talosaga a Kafka Streams e faʻaaoga ai le KStream DSL maualuga. E ui o le auala maualuga e mafai ai e oe ona fatuina ni polokalame faʻapitoa ma faʻapitoa, o le faʻaaogaina e fai ma sui o se fefaʻatauaʻiga. O le galulue fa'atasi ma le DSL KStream o lona uiga o le fa'atuputeleina o le fa'apitoa o lau fa'ailoga e ala i le fa'aitiitia o le fa'atonuga. I le isi mataupu, o le a tatou vaʻavaʻai i le API puʻupuʻu lima maualalo ma faʻataʻitaʻi isi fefaʻatauaʻiga. O polokalame o le a umi atu nai lo le taimi muamua, ae o le a mafai ona matou fatuina toetoe lava o soʻo se node faʻapipiʻi e ono manaʻomia.

→ E mafai ona maua nisi fa'amatalaga e uiga i le tusi ile upegatafa'ilagi a le lomitusi

→ Mo Habrozhiteli 25% fa'aitiitiga fa'aaoga coupon - Alia o Kafka

→ I luga o le totogiina o le lomiga pepa o le tusi, o le a lafoina se tusi faaeletonika e ala i le imeli.

puna: www.habr.com

Faaopoopo i ai se faamatalaga