Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu" Kia ora, e nga kainoho o Khabro! He pai tenei pukapuka mo nga kaiwhakawhanake e hiahia ana ki te mohio ki te tukatuka miro. Ma te mohio ki nga kaupapa toha ka awhina koe ki te mohio ake ki nga awa o Kafka me Kafka. He pai ki te mohio ki te anga Kafka ake, engari kaore tenei e tika: Ka korerotia e ahau nga mea katoa e hiahia ana koe. Ka ako nga kaiwhakawhanake Kafka mohio me nga tauhou me pehea te hanga tono tukatuka awa whakamere ma te whakamahi i te whare pukapuka Kafka Streams i roto i tenei pukapuka. Ko nga kaiwhakawhanake Java takawaenga me te matatau kua mohio ki nga ariā penei i te raupapa raupapa ka ako ki te whakamahi i o raatau pukenga ki te hanga tono Kafka Streams. Ko te waehere puna o te pukapuka kua tuhia ki te Java 8 me te whakamahi nui i te Java 8 lambda expression syntax, na ko te mohio ki te mahi me nga mahi lambda (ahakoa i tetahi atu reo hotaka) ka whai hua.

Tuhinga. 5.3. Te whakahiato me nga mahi matapihi

I tenei waahanga, ka anga whakamua tatou ki te torotoro i nga waahanga tino pai o nga awa o Kafka. I tenei wa kua hipokina e matou nga waahanga e whai ake nei o Kafka Streams:

  • te hanga i te topology tukatuka;
  • te whakamahi i te ahua i roto i nga tono roma;
  • te mahi hononga awa raraunga;
  • nga rereketanga i waenga i nga awa takahanga (KSream) me nga awa whakahou (KTRipu).

I roto i nga tauira e whai ake nei ka whakakotahihia enei waahanga katoa. Ka ako ano koe mo te matapihi, tetahi atu waahanga nui o nga tono rerenga. Ko ta maatau tauira tuatahi he whakahiato ngawari.

5.3.1. Te whakahiatotanga o nga hoko kararehe ma te waahanga ahumahi

Ko te whakahiato me te whakarōpū he taputapu tino nui i te wa e mahi ana me te rerenga raraunga. Ko te tirotiro i nga rekoata takitahi i te wa e whiwhi ana kaore i te rawaka. Hei tango i etahi atu korero mai i nga raraunga, me whakarōpū me te whakakotahi.

I tenei tauira, ka mau koe ki te kakahu o te kaihokohoko ra e hiahia ana ki te whai i te rahinga hoko o nga rakau o nga kamupene i roto i nga umanga maha. Ina koa, kei te pirangi koe ki nga kamupene e rima me te nui o nga hokonga hea i ia umanga.

Ko taua whakahiatotanga ka hiahia kia maha nga waahanga e whai ake nei hei whakamaori i nga raraunga ki te ahua e hiahiatia ana (he korero whanui).

  1. Waihangahia he puna kaupapa e whakaputa ana i nga korero hokohoko kararehe mata. Me mapi he ahanoa o te momo StockTransaction ki tetahi momo momo ShareVolume. Ko te kaupapa ko te ahanoa StockTransaction kei roto i nga metadata hoko, engari me raraunga noa mo te maha o nga hea e hokona ana.
  2. Whakarōpūhia nga raraunga ShareVolume ma te tohu kararehe. Ina whakarōpūhia ma te tohu, ka taea e koe te tiango i enei raraunga ki roto i nga kohinga iti o nga pukapuka hoko kararehe. Me mohio ko te tikanga KStream.groupBy te whakahoki i tetahi tauira o te momo KGroupedStream. A ka taea e koe te tiki tauira KTable ma te waea atu ki te tikanga KGroupedStream.reduce.

He aha te atanga KGroupedStream

Ko nga tikanga KStream.groupBy me KStream.groupByKey ka whakahoki i tetahi tauira o KGroupedStream. Ko KGroupedStream he whakaaturanga takawaenga o te awa o nga huihuinga i muri i te whakarōpūtanga ma nga ki. Kaore rawa i te kii mo te mahi tika ki a ia. Engari, ka whakamahia te KGroupedStream mo nga mahi whakahiato, ka puta he KTtable i nga wa katoa. Na i te mea ko te hua o nga mahi whakahiato he KTable me te whakamahi i tetahi toa kawanatanga, tera pea kaore nga whakahoutanga katoa e tukuna atu ki raro i te paipa.

Ka whakahokia e te tikanga KTable.groupBy he KGroupedTable rite - he tohu takawaenga o te awa o nga whakahōutanga, kua whakarōpūhia ma te matua.

Kia okioki tatou ka titiro ki te Fig. 5.9, e whakaatu ana i nga mea kua tutuki i a maatau. Me tino mohio koe ki tenei topology.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Me titiro inaianei ki te waehere mo tenei topology (ka kitea i te konae src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Rarangi 5.2).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ko te waehere kua tohua he tohu na tona poto me te nui o nga mahi e mahia ana i roto i nga rarangi maha. Ka kite pea koe i tetahi mea hou i roto i te tawhā tuatahi o te tikanga builder.stream: he uara o te momo enum AutoOffsetReset.EARLIEST (kei reira ano he LATEST), kua whakaritea ma te whakamahi i te tikanga Consumed.withOffsetResetPolicy. Ka taea te whakamahi i tenei momo tatauranga ki te tautuhi i te rautaki tautuhi whakatiki mo ia KStream, KTTable ranei, ka eke ki mua i te kowhiringa tautuhi i te whirihoranga.

GroupByKey me GroupBy

Ko te atanga KStream e rua nga tikanga mo te whakarōpū rekoata: GroupByKey me GroupBy. Ka whakahokia mai he Ripanga KGrouped, na kei te whakaaro koe he aha te rereketanga i waenga i a raatau me te wa e whakamahi ai ko tehea?

Ka whakamahia te tikanga GroupByKey i te mea kua kore noa nga ki o te KStream. A ko te mea nui, ko te haki "me wehewehe ano" kaore i whakatakotoria.

Ko te tikanga GroupBy kua huri koe i nga taviri whakarōpūtanga, na reira ka whakatauhia te haki wehewehenga ki te pono. Ko te mahi hono, whakahiato, aha atu i muri i te tikanga GroupBy ka hua te wehewehe aunoa.
Whakarāpopototanga: Ka taea, me whakamahi koe i te GroupByKey kaua i te GroupBy.

He maamaa te mahi a nga tikanga mapValues ​​me groupBy, na me titiro ki te tikanga sum() (kua kitea i roto i te src/main/java/bbejeck/model/ShareVolume.java) (Rarangi 5.3).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ko te tikanga ShareVolume.sum ka whakahoki i te tapeke whakahaere o te rahinga hoko kararehe, a ko te hua o te mekameka katoa o nga tatauranga he ahanoa KTable . Inaianei kua mohio koe ki nga mahi a KTable. Ina tae mai nga taonga ShareVolume, ka penapenahia e te ahanoa KTable te whakahōutanga o naianei. He mea nui kia maumahara ko nga whakahoutanga katoa ka kitea i roto i te shareVolumeKTable o mua, engari kaore katoa e tukuna atu.

Ka whakamahi matou i tenei KTable ki te whakahiato (ma te maha o nga hea i hokona) kia tae atu ki nga kamupene e rima me te nui rawa o nga wahanga hokohoko i ia ahumahi. Ko a maatau mahi i tenei keehi ka rite ki era mo te whakahiato tuatahi.

  1. Mahia tetahi atu mahi roopuNa ki te whakarōpū i nga taonga ShareVolume takitahi ma te ahumahi.
  2. Tīmata whakarāpopoto ahanoa ShareVolume. I tenei wa ko te ahanoa whakahiato he rarangi matua-nui. I roto i tenei rarangi-rahi-rahi, ko nga kamupene e rima anake te nui o nga hea kua hokona ka mau tonu.
  3. Maherehia nga rarangi mai i te kowae o mua ki te uara aho, ka whakahoki i nga rakau e rima e tino hokona ana ma te tau ma te ahumahi.
  4. Tuhia nga hua ki te ahua aho ki te kaupapa.

Kei te Fig. Ko te ahua 5.10 e whakaatu ana i te kauwhata topology rerenga raraunga. Ka taea e koe te kite, he tino ngawari te waahanga tuarua o te tukatuka.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Inaianei kua tino marama taatau ki te hanganga o tenei huringa tuarua o te tukatuka, ka taea e taatau te huri ki tana waehere puna (ka kitea e koe i te konae src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Rarangi 5.4) .

Kei roto i tenei kaiwhakaaratanga he taurangi Tutirai pumau. He ahanoa ritenga tenei he urutau mo java.util.TreeSet e whakamahia ana ki te whai i nga hua o runga N i roto i te raupapa heke o nga hea i hokona.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Kua kite koe i nga waea a groupBy me te mapValues, no reira kare matou e uru ki era (kei te karanga matou i te tikanga KTable.toStream na te mea kua whakakorehia te tikanga KTable.print). Engari kare ano koe kia kite i te putanga KTable o te aggregate() no reira ka noho tatou mo te wa poto mo tera.

Kei te maumahara koe, he aha te rerekee o KTable ko nga rekoata me nga taviri kotahi e kiia ana he whakahou. Ka whakakapihia e KTable te urunga tawhito me te mea hou. He rite te ahua o te whakahiatotanga: ko nga rekoata hou me te taviri kotahi ka whakahiatohia. Ka tae mai he rekoata, ka taapirihia ki te tauira FixedSizePriorityQueue ma te whakamahi i te taapiri (tawhā tuarua i roto i te waea tikanga whakahiato), engari mena kei te noho tonu tetahi atu rekoata me te taua ki, ka tangohia te rekoata tawhito ma te whakamahi i te tangohanga (tawhā tuatoru i roto te karanga tikanga whakahiato).

Ko te tikanga o tenei, ko to tatou whakahiato, FixedSizePriorityQueue, e kore e whakahiato i nga uara katoa me te ki kotahi, engari ka pupuri i te moni neke o nga rahinga o nga momo rakau N te nuinga o te hokohoko. Kei ia urunga taumai te tapeke o nga hea i hokona i tenei wa. Ka hoatu e KTable nga korero e pa ana ki nga hea o nga kamupene e tino hokohoko ana i tenei wa, me te kore e tono whakahiato o ia whakahou.

I ako matou ki te mahi i nga mea nui e rua:

  • uara whakarōpū i roto i te KTRirangi ma te kī noa;
  • mahia nga mahi whai hua penei i te roopu me te whakahiato i runga i enei uara kua whakarōpūhia.

Ko te mohio ki te mahi i enei mahi he mea nui kia mohio ki te tikanga o nga raraunga e neke ana i roto i te tono Kafka Streams me te mohio he aha nga korero e mau ana.

Kua whakaemihia e matou etahi o nga kaupapa matua i korerohia i mua i tenei pukapuka. I roto i te Upoko 4, i korerohia e matou he aha te mea nui o te ahua o te rohe mo te tono roma. Ko te tauira tuatahi i roto i tenei upoko i whakaatu he aha te mea nui o te kawanatanga o te rohe—ka whai waahi koe ki te pupuri i nga korero kua kitea e koe. Ko te urunga a-rohe ka karo i nga whakaroa o te whatunga, ka kaha ake te mahi me te aukati i nga hapa.

I te wa e mahi ana koe i tetahi mahi whakahiato, whakahiato ranei, me tohu e koe te ingoa o te toa kawanatanga. Ko nga mahi whakahiato me te whakahiato ka whakahoki mai i tetahi tauira KTable, a ka whakamahia e te KTable te rokiroki ahua hei whakakapi i nga hua tawhito ki nga mea hou. Kua kite koe, kaore nga whakahoutanga katoa e tukuna ki raro i te paipa, he mea nui tenei na te mea i hangaia nga mahi whakahiato ki te whakaputa korero whakarāpopototanga. Ki te kore koe e tono i te kawanatanga o te rohe, ka tukuna e KTable nga hua whakahiato me te whakahiato.

I muri mai, ka titiro tatou ki te whakahaere i nga mahi penei i te whakahiato i roto i te waa motuhake - e kiia nei ko nga mahi matapihi.

5.3.2. Nga mahi matapihi

I roto i te waahanga o mua, i whakauruhia e matou te whakaheke me te whakahiato. I mahia e te tono te piki haere tonu o nga hoko kararehe whai muri i te whakahiatotanga o nga rakau e rima e tino hokona ana i runga i te utu.

I etahi wa ka tika te whakahiato me te whakaemi i nga hua. A i etahi wa ka hiahia koe ki te mahi i nga mahi mo te waa kua whakaritea. Hei tauira, tatauhia te maha o nga whakawhitinga whakawhiti i mahia me nga hea o tetahi kamupene i roto i nga meneti 10 kua hipa. E hia ranei nga kaiwhakamahi i paato i tetahi kara panui hou i roto i nga meneti 15 kua hipa. Ka taea e tetahi tono te mahi pera i nga wa maha, engari me nga hua ka pa ki nga waa kua tohua (matapihi wa).

Te tatau i nga whakawhitinga whakawhiti a te kaihoko

I roto i te tauira e whai ake nei, ka whai maatau i nga whakawhitinga kararehe puta noa i nga kaihokohoko maha-he whakahaere nui, he putea takitahi mohio ranei.

E rua pea nga take mo tenei aroturuki. Ko tetahi o ratou ko te hiahia ki te mohio he aha nga rangatira o te maakete e hoko/hoko ana. Mena ka kitea e enei kaitakaro nui me nga kaipupuri putea te whai waahi, he mea tika ki te whai i ta raatau rautaki. Ko te take tuarua ko te hiahia ki te kite i nga tohu e taea ana mo te tauhokohoko a-roto. Ki te mahi i tenei, ka hiahia koe ki te tātari i te hononga o nga koikoi hoko nui me nga whakaputanga perehi nui.

Ko nga mahi e whai ake nei ko te aroturuki:

  • te hanga roma hei panui mai i te kaupapa hokohoko kararehe;
  • whakarōpū i nga rekoata taumai ma te ID kaihoko me te tohu kararehe. Ko te karanga i te tikanga groupBy ka whakahoki i tetahi tauira o te akomanga KGroupedStream;
  • Ko te tikanga KGroupedStream.windowedBy he whakahoki i te awa raraunga kua whakawhāitihia ki te matapihi wa, e taea ai te whakahiato matapihi. I runga i te momo matapihi, ka whakahokia mai he TimeWindowedKStream, he SessionWindowedKStream ranei;
  • tatau tauwhitinga mo te mahi whakahiato. Ko te rerenga raraunga matapihi e whakatau ana mena ka whakaarohia he rekoata i tenei kaute;
  • te tuhi i nga hua ki tetahi kaupapa, te whakaputa ranei ki te papatohu i te wa e whanake ana.

He maamaa te topology o tenei tono, engari he pai te ahua o te pikitia. Kia titiro tatou ki te Fig. 5.11.

I muri mai, ka titiro tatou ki te mahi o nga mahi matapihi me te waehere e pa ana.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"

Momo Matapihi

E toru nga momo matapihi kei roto i nga awa o Kafka:

  • wātū;
  • "te takahuri";
  • retireti/hopu.

Ko tehea hei whiriwhiri ka whakawhirinaki ki o hiahia pakihi. Ko nga matapihi takahuri me te pekepeke he wa iti, engari ko nga matapihi huihuinga he iti noa e nga mahi a te kaiwhakamahi—ko te roanga o te (ng) waahi ka whakatauhia ma te kaha o te kaiwhakamahi. Ko te mea nui hei maumahara ko nga momo matapihi katoa kei runga i nga tohu ra/wa o nga whakaurunga, ehara i te wa punaha.

I muri mai, ka whakatinanahia e matou o taatau topology me ia momo matapihi. Ko te waehere katoa ka hoatu i te tauira tuatahi anake; mo etahi atu momo matapihi kaore he mea e rereke engari ko te momo mahi matapihi.

Wātū matapihi

He tino rereke nga matapihi huihuinga mai i era atu momo matapihi. Ka whakawhäitihia e te wa, engari na te mahi a te kaiwhakamahi (te mahi ranei a te hinonga e hiahia ana koe ki te whai). Ko nga matapihi huihuinga ka whakatauhia e nga waa kore mahi.

Ko te Whakaahua 5.12 e whakaatu ana i te ariā o nga matapihi wahanga. Ka hanumi te wātū iti ki te wātū ki tōna taha mauī. A ko te waahi kei te taha matau ka wehe kee na te mea e whai ana i te wa roa o te kore mahi. Ko nga matapihi huihuinga e ahu mai ana i nga mahi a te kaiwhakamahi, engari whakamahia nga tohu ra/wa mai i nga whakaurunga hei whakatau ko wai te waahi o te urunga.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"

Te whakamahi i nga matapihi waahi ki te whai i nga whakawhitinga kararehe

Me whakamahi nga matapihi wahanga ki te hopu korero mo nga whakawhitinga whakawhiti. Ko te whakatinanatanga o nga matapihi huihuinga e whakaatuhia ana i te Rarangi 5.5 (ka kitea i roto i te src/main/java/bbejeck/chapter_5/CountingWindowingAndKTableJoinExample.java).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Kua kite koe i te nuinga o nga mahi i roto i tenei topology, no reira kaore he take ki te arotake ano i konei. Engari he maha ano nga waahanga hou kei konei, ka korerohia e tatou inaianei.

Ko nga mahi a-rōpūNa te tikanga ka mahia etahi momo mahi whakahiato (te whakahiato, te hurihanga, te tatau ranei). Ka taea e koe te mahi whakahiato whakahiato me te katoa e rere ana, he whakahiato matapihi ranei, e whai whakaaro ana ki nga rekoata i roto i te matapihi wa kua tohua.

Ko te waehere i roto i te Rarangi 5.5 e tatau ana i te maha o nga whakawhitinga i roto i nga matapihi waahi. Kei te Fig. 5.13 ka wetewetehia enei mahi.

Ma te waea atu ki a windowedBy(SessionWindows.with(twentySeconds).tae ​​noa ki(tekau ma rimaMinutes)) ka waihangahia he matapihi waahi me te 20 hēkona kore mahi me te 15 meneti te roa. Ko te wa roa o te 20 hēkona te tikanga ka uru atu ki te tono tetahi urunga ka tae mai i roto i te 20 hēkona o te mutunga, te tiimata ranei o te waahi o naianei ki roto i te waahi (hohe) o naianei.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
I muri mai, ka tohua e matou ko tehea mahi whakahiato me mahi ki te matapihi o te waahi - i tenei keehi, tatau. Mena ka taka te urunga taumai ki waho o te matapihi hohekore (kei tetahi taha o te tohu ra/wa), ka hangaia e te tono he huihuinga hou. Ko te waahi pupuri ko te pupuri i tetahi huihuinga mo tetahi wa roa me te tuku mo nga raraunga mutunga ka toro atu ki tua atu i te waa kore mahi engari ka taea tonu te taapiri. I tua atu, ko te tiimata me te mutunga o te huihuinga hou i puta mai i te hanumi e rite ana ki te tohu tohu ra/waa o mua me te wa hou.

Me titiro ki etahi o nga whakaurunga mai i te tikanga tatau kia kite i te mahi o nga wahanga (Ripanga 5.1).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ka tae mai nga rekoata, ka rapua e matou nga huihuinga o naianei he rite tonu te ki, he wa mutunga iti iho i te tohu ra/wa o naianei - he waahi kore mahi, me te wa tiimata nui atu i te wa o te waa/waahi o naianei + mokowhiti. Ma te whakaaro ki tenei, e wha nga whakaurunga mai i te ripanga. Ka hanumihia te 5.1 ki te wahanga kotahi e whai ake nei.

1. Ka tae tuatahi te tuhi 1, no reira ka rite te wa tiimata ki te wa mutunga ka 00:00:00.

2. I muri mai, ka tae mai te urunga 2, ka rapua e matou nga waahi ka mutu i mua atu i te 23:59:55 ka timata i muri i te 00:00:35. Ka kitea e matou te rekoata 1 me te whakakotahi i nga wahanga 1 me te 2. Ka tango matou i te wa tiimata o te wahanga 1 (i mua ake) me te wa mutunga o te wahanga 2 (i muri mai), kia timata ta matou huihuinga hou i te 00:00:00 ka mutu i te 00: 00:15.

3. Ka tae mai te rekoata 3, ka rapua e matou nga huihuinga i waenga i te 00:00:30 me te 00:01:10 kaore e kitea. Tāpirihia he wātū tuarua mō te kī 123-345-654,FFBE, ka timata me te mutu i te 00:00:50.

4. Ka tae mai te rekoata 4 ka rapua e matou nga wahanga i waenga i te 23:59:45 me te 00:00:25. I tenei wa ka kitea nga wahanga e rua 1 me te 2. Ka whakakotahihia nga wahanga e toru ki te kotahi, me te wa timata 00:00:00 me te wa mutunga o 00:00:15.

Mai i nga mea e whakaahuahia ana i tenei waahanga, he mea tika kia mahara ki nga ahuatanga nui e whai ake nei:

  • ko nga waahi ehara i te matapihi te rahi. Ko te roanga o te huihuinga ka whakatauhia e te mahi i roto i te waa kua whakaritea;
  • Ko nga tohu o te ra/wa i roto i nga raraunga ka whakatau mena ka taka te takahanga i roto i te waahi o mua, i roto ranei i te waa mangere.

I muri mai ka korerohia e maatau te momo matapihi e whai ake nei - nga matapihi "huri".

Matapihi "Tuku".

Ka hopuhia e nga matapihi takahuri nga huihuinga ka taka i roto i tetahi waa. Whakaarohia me hopu e koe nga whakawhitinga kararehe katoa o tetahi kamupene ia 20 hēkona, na ka kohia e koe nga huihuinga katoa i roto i taua waa. I te mutunga o te waahi 20-hakona, ka huri te matapihi, ka neke ki te waahi tirohanga hou 20-hekona. Ko te ahua 5.14 e whakaatu ana i tenei ahuatanga.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ka taea e koe te kite, ko nga huihuinga katoa i tae mai i roto i te 20 hēkona kua pahemo kei roto i te matapihi. I te mutunga o tenei wa, ka hangaia he matapihi hou.

Ko te rarangi 5.6 e whakaatu ana i te waehere e whakaatu ana i te whakamahinga o nga matapihi takahuri hei hopu i nga whakawhitinga kararehe ia 20 hēkona (kua kitea i roto i te src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ma tenei huringa iti ki te waea tikanga TimeWindows.of, ka taea e koe te whakamahi i te matapihi takahuri. Karekau tenei tauira e kii i te tikanga tae noa(), no reira ka whakamahia te waahi pupuri taunoa o te 24 haora.

Ka mutu, kua tae ki te wa ki te neke atu ki te mutunga o nga whiringa matapihi - nga matapihi "hopu".

Matapihi retireti ("pekepeke")

He rite nga matapihi reeti/hopipii ki nga matapihi takahuri, engari he paku rereke. Ko nga matapihi whakahekeheke kaua e tatari ki te mutunga o te waahi i mua i te hanga i tetahi matapihi hou hei tukatuka i nga kaupapa o naianei. Ka timata nga tatauranga hou i muri i te wa tatari iti iho i te roanga o te matapihi.

Hei whakaatu i nga rereketanga i waenga i nga matapihi takahuri me te pekepeke, me hoki ano ki te tauira o te tatau i nga tauwhitinga whakawhiti kararehe. Ko ta matou whainga ko te tatau tonu i te maha o nga whakawhitinga, engari kaore matou e hiahia ki te tatari mo te wa katoa i mua i te whakahou i te kaute. Engari, ka whakahouhia e matou te kaute i nga wa poto ake. Hei tauira, ka tatau tonu tatou i te maha o nga whakawhitiwhitinga ia 20 hēkona, engari whakahouhia te porotiti ia 5 hēkona, penei i te Whakaatu. 5.15. I tenei take, ka mutu nga matapihi hua e toru me nga raraunga inaki.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ko te rarangi 5.7 e whakaatu ana i te waehere mo te tautuhi i nga matapihi reti (kua kitea i te src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ka taea te huri i te matapihi takahuri ki te matapihi pekepeke ma te taapiri waea ki te tikanga advanceBy(). I roto i te tauira e whakaatuhia ana, ko te waahi penapena he 15 meneti.

I kite koe i tenei waahanga me pehea te whakawhāiti i nga hua whakahiato ki nga matapihi wa. Ina koa, e hiahia ana ahau kia mahara koe ki nga mea e toru e whai ake nei mai i tenei waahanga:

  • ko te rahi o nga matapihi o te huihuinga he iti noa i te waa, engari na te mahi a te kaiwhakamahi;
  • Ko nga matapihi "tumbling" he tirohanga whanui mo nga huihuinga i roto i te waa kua whakaritea;
  • Kua whakaritea te roanga o nga matapihi peke, engari he maha nga wa ka whakahouhia, kei roto pea nga whakaurunga inaki ki nga matapihi katoa.

Panuku, ka ako tatou me pehea te huri i te KTable ki te KStream mo te hononga.

5.3.3. Te hono i nga taonga KStream me KTable

I te Upoko 4, i korero matou mo te hono i nga mea e rua KStream. Inaianei me ako taatau ki te hono i a KTable me KSream. Ka hiahiatia pea tenei mo te take ngawari e whai ake nei. Ko KStream he roma rekoata, a ko KTable he awa whakahou rekoata, engari i etahi wa ka hiahia koe ki te taapiri i etahi atu horopaki ki te roma rekoata ma te whakamahi i nga whakahou mai i te KTable.

Me tango raraunga mo te maha o nga tauwhitinga hokohoko me te whakakotahi ki nga korero whakawhiti kararehe mo nga umanga e tika ana. Anei nga mea e tika ana kia mahia e koe ki te whakatutuki i tenei i runga i te waehere kei a koe.

  1. Hurihia he ahanoa KTable me nga raraunga mo te maha o nga whakawhitinga kararehe ki roto i te KStream, ka whai i te whakakapi i te matua ki te tohu matua e tohu ana i te waahanga ahumahi e rite ana ki tenei tohu kararehe.
  2. Waihangahia he ahanoa KTable ka panui raraunga mai i tetahi kaupapa me nga korero whakawhiti kararehe. Ko tenei KTRipu hou ka whakarōpūhia e te waahanga ahumahi.
  3. Honoa nga korero hou me nga korero mo te maha o nga tauwhitinga whakawhiti kararehe ma te waahanga ahumahi.

Inaianei me titiro me pehea te whakatinana i tenei mahere mahi.

Tahuri KTable ki KStream

Hei huri i te KTable ki te KStream me mahi e koe nga mea e whai ake nei.

  1. Karangatia te tikanga KTable.toStream().
  2. Ma te karanga i te tikanga KStream.map, whakakapihia te matua ki te ingoa ahumahi, katahi ka tikina te ahanoa TransactionSummary mai i te tauira Windowed.

Ka herea e matou enei mahinga e whai ake nei (ka kitea te waehere i te konae src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Rarangi 5.8).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Na te mea kei te mahi matou i tetahi mahi KStream.map, ka wehewehea aunoatia te tauira KStream kua whakahokia mai ina whakamahia ana ki tetahi hononga.

Kua oti i a matou te mahi whakahuri, i muri mai me hanga he ahanoa KTable hei panui i nga purongo kararehe.

Te hanga o KTable mo nga purongo kararehe

Waimarie, ko te hanga i tetahi ahanoa KTable kotahi noa te rarangi waehere (ka kitea te waehere i src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Rarangi 5.9).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
He mea tika kia mohio koe kaore he ahanoa Serde e hiahiatia ana kia tohua, na te mea ka whakamahia te aho Serdes i roto i nga tautuhinga. Ano hoki, ma te whakamahi i te tatauranga EARLIEST, ka whakakiia te ripanga ki nga rekoata i te timatanga.

Inaianei ka taea e tatou te neke ki te taahiraa whakamutunga - hononga.

Te hono i nga korero hou me nga raraunga kaute tauwhitinga

Ko te hanga hononga ehara i te mea uaua. Ka whakamahi matou i te hono maui ki te kore he korero kararehe mo te ahumahi e tika ana (ka kitea te waehere e tika ana i roto i te konae src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Rarangi 5.10).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
He tino ngawari tenei kaiwhakahaere hono maui. Kaore i rite ki nga whakaurunga i te Upoko 4, kaore e whakamahia te tikanga JoinWindow na te mea i te wa e mahi ana i te hono KStream-KTable, kotahi noa te urunga i roto i te KTable mo ia ki. Karekau he hononga pera i te wa poto: kei te KT te rekoata kei te ngaro ranei. Ko te whakatau matua: ma te whakamahi i nga taonga KTable ka taea e koe te whakarangatira i te KStream me te iti ake o te whakahou i nga raraunga tohutoro.

Inaianei ka titiro tatou ki tetahi huarahi pai ake hei whakarangatira i nga huihuinga mai i KStream.

5.3.4. GlobalKTable ahanoa

Kei te kite koe, he hiahia ki te whakarangatira i nga awa takahanga me te taapiri i nga horopaki ki a raatau. I te Upoko 4 i kite koe i nga hononga i waenga i nga taonga KSream e rua, a i te waahanga o mua i kite koe i te hononga i waenga i te KSream me te KTtable. I enei ahuatanga katoa, me wehewehe ano te awa raraunga i te wa e mapi ana nga ki ki tetahi momo hou, uara ranei. I etahi wa ka mahia maatatia te wehewehenga, a, i etahi wa ka mahi aunoa a Kafka Streams. He mea tika kia wehewehea ano na te mea kua rereke nga ki, me mutu nga rekoata ki nga waahanga hou, mena ka kore e taea te hononga (i korerohia tenei i te Upoko 4, i te waahanga "Raraunga wehewehenga ano" i te waahanga 4.2.4).

He utu ano te wehewehenga

Ko te wehewehe ano he utu - he utu rauemi taapiri mo te hanga kaupapa takawaenga, te penapena raraunga taarua ki tetahi atu kaupapa; ko te tikanga kua piki ake te roanga na te tuhi me te panui mai i tenei kaupapa. I tua atu, ki te hiahia koe ki te uru atu ki te maha atu i te kotahi te waahanga, te rahi ranei, me herea e koe nga hononga, maherehia nga rekoata me nga taviri hou, ka whakahaere ano i te mahi wehewehe.

Te hono atu ki nga huingararaunga iti

I etahi wa, he iti noa te rahinga o nga raraunga tohutoro e hono ana, na reira ka taea e nga kape katoa te uru ki te rohe ki ia pona. Mo nga ahuatanga penei, ka whakaratohia e Kafka Streams te akomanga GlobalKTable.

He ahurei nga ahuatanga o te GlobalKTable na te mea ka tukuna e te tono nga raraunga katoa ki ia pona. A, i te mea kei te noho nga raraunga katoa ki ia node, kaore he take ki te wehewehe i te awa takahanga ma te kii raraunga tohutoro kia waatea ki nga waahanga katoa. Ka taea hoki e koe te hono ki te kore matua ma te whakamahi i nga taonga GlobalKTable. Me hoki ano ki tetahi o nga tauira o mua hei whakaatu i tenei ahuatanga.

Te hono i nga taonga KStream ki nga taonga GlobalKTable

I roto i te waahanga 5.3.2, i mahia e matou te whakahiato matapihi o nga whakawhitinga whakawhiti a nga kaihoko. Ko nga hua o tenei whakahiato he penei te ahua:

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

Ahakoa i tutuki enei hua ki te kaupapa, he pai ake mena ka whakaatuhia te ingoa o te kaihoko me te ingoa kamupene katoa. Hei taapiri i te ingoa kaihoko me te ingoa kamupene, ka taea e koe te hono noa, engari me mahi e koe nga mapi matua e rua me te wehewehe ano. Ma te GlobalKTable ka taea e koe te karo i te utu mo aua mahi.

Hei mahi i tenei, ka whakamahia e matou te ahanoa countStream mai i te Rarangi 5.11 (ka kitea te waehere e pa ana ki te src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) ka hono atu ki nga taonga GlobalKTable e rua.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Kua korerohia e tatou tenei i mua, no reira kare au e korero ano. Engari ka kite ahau ko te waehere kei roto i te toStream().mapi mahi ka tangohia ki roto i tetahi ahanoa mahi hei utu mo te whakaaturanga lambda rōraina kia pai ai te panui.

Ko te mahi e whai ake nei ko te whakapuaki i nga waahanga e rua o GlobalKTable (ka kitea te waehere e whakaatuhia ana i te konae src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Rarangi 5.12).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"

Kia mahara ko nga ingoa kaupapa e whakaahuahia ana ma te whakamahi i nga momo rarangi ingoa.

Inaianei kua rite nga waahanga katoa, ko nga mea katoa e toe ana ko te tuhi i te waehere mo te hononga (ka kitea i te konae src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Rarangi 5.13).

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Ahakoa e rua nga hononga i roto i tenei waehere, kua herea na te mea kaore tetahi o o raatau hua e whakamahia motuhake. Ka whakaatuhia nga hua i te mutunga o te mahi katoa.

Ina whakahaere koe i te mahi hono i runga ake nei, ka whiwhi koe i nga hua penei:

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

Ko te ngako kaore i rereke, engari he maamaa ake te ahua o enei hua.

Mena ka tatau koe ki te Upoko 4, kua kite koe i etahi momo hononga e mahi ana. Kua whakarārangihia ki te ripanga. 5.2. Ko tenei ripanga e whakaatu ana i nga hononga honohono mai i te putanga 1.0.0 o nga awa o Kafka; Ka huri pea tetahi mea i nga whakaputanga a meake nei.

Ko te pukapuka “Kafka Streams in Action. Nga tono me nga ratonga moroiti mo nga mahi wa-tūturu"
Hei takai i nga mea, me whakahoki ano i nga kaupapa: ka taea e koe te hono i nga awa takahanga (KStream) me te whakahou i nga awa (KTable) ma te whakamahi i te ahua o te rohe. Hei rereke, ki te kore e nui rawa te rahi o nga raraunga tohutoro, ka taea e koe te whakamahi i te ahanoa GlobalKTable. Ka tukuna e GlobalKTables nga wehewehenga katoa ki ia node tono Kafka Streams, me te whakarite kei te waatea nga raraunga katoa ahakoa ko tehea wehewehenga e pa ana ki te matua.

I muri mai ka kite tatou i te waahanga Kafka Streams, na reira ka kite tatou i nga huringa o te kawanatanga me te kore e pau nga raraunga mai i te kaupapa Kafka.

5.3.5. Te ahua patai

Kua mahia e matou etahi mahi e pa ana ki te kawanatanga me te whakaputa i nga hua ki te papatohu (mo nga kaupapa whanaketanga) ka tuhia ranei ki tetahi kaupapa (mo nga kaupapa whakaputa). I te wa e tuhi ana i nga hua ki tetahi kaupapa, me whakamahi koe i tetahi kaihoko Kafka hei tiro.

Ko te panui i nga raraunga mai i enei kaupapa ka kiia ko te ahua o nga tirohanga tino. Mo a maatau kaupapa, ka taea e taatau te whakamahi i te whakamaramatanga o te tirohanga mai i Wikipedia: “...he ahanoa pātengi raraunga tinana kei roto nga hua o te patai. Hei tauira, he kape o te rohe o nga raraunga mamao, he waahanga iti ranei o nga rarangi me/ranei nga pou o te ripanga, te hono ranei ki nga hua, he ripanga whakarāpopototanga ranei i whiwhihia ma te whakahiato” (https://en.wikipedia.org/wiki /Materialized_view).

Ka taea hoki e Kafka Streams koe ki te whakahaere i nga patai tauwhitiwhiti i runga i nga toa a te kawanatanga, e taea ai e koe te panui tika i enei tirohanga. He mea nui kia mahara ko te patai ki te toa kawanatanga he mahi panui-anake. Ma tenei ka kore koe e maaharahara mo te pohehe i te ahua koretake i te wa e tukatuka ana to tono i nga raraunga.

He mea nui te kaha ki te uiui tika i nga toa kawanatanga. Ko te tikanga ka taea e koe te hanga tono papatohu me te kore e tango i nga raraunga mai i te kaihoko Kafka. Ka piki ake ano te kaha o te tono, na te mea kaore he take ki te tuhi ano i nga raraunga:

  • he mihi ki te waahi o nga raraunga, ka tere te uru atu;
  • ka whakakorehia te taapiri o nga raraunga, na te mea kaore i tuhia ki te rokiroki o waho.

Ko te mea nui e hiahia ana ahau kia maumahara koe ka taea e koe te uiui i nga ahuatanga mai i to tono. Ko nga whai waahi ka hoatu e tenei ki a koe kaore e taea te whakahua. Engari ki te pau i nga raraunga mai i Kafka me te penapena i nga rekoata i roto i te paataka mo te tono, ka taea e koe te uiui i nga toa kawanatanga me te hua ano. Ko nga patai tika ki nga toa kawanatanga he iti ake te waehere (kaore he kaihoko) me te iti ake o te rorohiko (kaore e hiahiatia he ripanga raraunga hei penapena i nga hua).

Kua korerohia e matou etahi waahi mo tenei upoko, no reira ka waiho ta matou korero mo nga patai tauwhitiwhiti ki nga toa a te kawanatanga inaianei. Engari kaua e manukanuka: i roto i te Upoko 9, ka hangaia e matou he tono papatohu ngawari me nga patai tauwhitiwhiti. Ka whakamahia etahi o nga tauira mai i tenei me nga upoko o mua ki te whakaatu i nga patai tauwhitiwhiti me te pehea e taea ai e koe te taapiri atu ki nga tono Kafka Streams.

Whakarāpopoto

  • Ko nga ahanoa KStream e tohu ana i nga awa o nga huihuinga, he rite ki nga whakauru ki roto i te papaa raraunga. Ko nga mea KTable e tohu ana i nga awa whakahou, he rite tonu ki nga whakahōutanga ki te papaunga raraunga. Ko te rahi o te mea KTable kaore e tipu, ka whakakapihia nga rekoata tawhito e nga mea hou.
  • Ko nga taonga KTable e hiahiatia ana mo nga mahi whakahiato.
  • Ma te whakamahi i nga mahi matapihi, ka taea e koe te wehewehe i nga raraunga whakahiato ki nga peere wa.
  • He mihi ki nga taonga GlobalKTable, ka taea e koe te uru atu ki nga raraunga tohutoro ki nga waahi katoa o te tono, ahakoa te wehewehe.
  • Ka taea nga hononga i waenga i nga taonga KStream, KTable me GlobalKTable.

I tenei wa, kua arotahi matou ki te hanga i nga tono Kafka Streams ma te whakamahi i te KStream DSL taumata-tiketike. Ahakoa te huarahi taumata-tiketike ka taea e koe te hanga kaupapa maamaa me te poto, ma te whakamahi he tohu hokohoko. Ko te mahi me te DSL KStream ko te whakanui ake i te poto o to waehere ma te whakaiti i te tohu mana. I roto i te upoko e whai ake nei, ka titiro tatou ki te API node kaiwhakahaere taumata-iti ka whakamatau i etahi atu hokohoko. Ka roa ake nga papatono i era o mua, engari ka taea e matou te hanga tata ki nga waahanga kaihautu katoa e hiahia ana matou.

→ Ka kitea etahi atu korero mo te pukapuka i paetukutuku a te kaiwhakaputa

→ Mo te Habrozhiteli 25% hekenga ma te whakamahi i te coupon - Nga awa o Kafka

→ I te utunga mo te putanga pepa o te pukapuka, ka tukuna he pukapuka hiko ma te imeera.

Source: will.com

Tāpiri i te kōrero