ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช" ืฉืœื•ื ืชื•ืฉื‘ื™ ื—ื‘ืจื•! ืกืคืจ ื–ื” ืžืชืื™ื ืœื›ืœ ืžืคืชื— ืฉืจื•ืฆื” ืœื”ื‘ื™ืŸ ืขื™ื‘ื•ื“ ืฉืจืฉื•ืจ. ื”ื‘ื ืช ืชื›ื ื•ืช ืžื‘ื•ื–ืจ ืชืขื–ื•ืจ ืœืš ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ืงืคืงื ื•ืงืคืงื ื–ืจืžื™ื. ื–ื” ื™ื”ื™ื” ื ื—ืžื“ ืœื”ื›ื™ืจ ืืช ืžืกื’ืจืช ืงืคืงื ืขืฆืžื”, ืื‘ืœ ื–ื” ืœื ื”ื›ืจื—ื™: ืื ื™ ืื’ื™ื“ ืœืš ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš. ืžืคืชื—ื™ ืงืคืงื ืžื ื•ืกื™ื ื•ื˜ื™ืจื•ื ื™ื ื›ืื—ื“ ื™ืœืžื“ื• ื›ื™ืฆื“ ืœื™ืฆื•ืจ ื™ื™ืฉื•ืžื™ ืขื™ื‘ื•ื“ ื–ืจืžื™ื ืžืขื ื™ื™ื ื™ื ื‘ืืžืฆืขื•ืช ืกืคืจื™ื™ืช Kafka Streams ื‘ืกืคืจ ื–ื”. ืžืคืชื—ื™ Java ื‘ื™ื ื•ื ื™ื™ื ื•ืžืชืงื“ืžื™ื ืฉื›ื‘ืจ ืžื›ื™ืจื™ื ืžื•ืฉื’ื™ื ื›ืžื• ืกื“ืจื” ื™ืœืžื“ื• ืœื™ื™ืฉื ืืช ื›ื™ืฉื•ืจื™ื”ื ืœื™ืฆื™ืจืช ื™ื™ืฉื•ืžื™ Kafka Streams. ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ืกืคืจ ื›ืชื•ื‘ ื‘-Java 8 ื•ืขื•ืฉื” ืฉื™ืžื•ืฉ ืžืฉืžืขื•ืชื™ ื‘ืชื—ื‘ื™ืจ ื”ื‘ื™ื˜ื•ื™ ืฉืœ Java 8 lambda, ื›ืš ืฉื™ื“ืข ืœืขื‘ื•ื“ ืขื ืคื•ื ืงืฆื™ื•ืช ืœืžื‘ื“ื” (ืืคื™ืœื• ื‘ืฉืคืช ืชื›ื ื•ืช ืื—ืจืช) ื™ื”ื™ื” ืฉื™ืžื•ืฉื™.

ืงื˜ืข. 5.3. ืคืขื•ืœื•ืช ืฆื‘ื™ืจื” ื•ื—ืœื•ืŸ

ื‘ื—ืœืง ื–ื”, ื ืขื‘ื•ืจ ืœื—ืงื•ืจ ืืช ื”ื—ืœืงื™ื ื”ืžื‘ื˜ื™ื—ื™ื ื‘ื™ื•ืชืจ ืฉืœ ืงืคืงื ื–ืจืžื™ื. ืขื“ ื›ื” ื›ื™ืกื™ื ื• ืืช ื”ื”ื™ื‘ื˜ื™ื ื”ื‘ืื™ื ืฉืœ ืงืคืงื ื–ืจืžื™:

  • ื™ืฆื™ืจืช ื˜ื•ืคื•ืœื•ื’ื™ื™ืช ืขื™ื‘ื•ื“;
  • ืฉื™ืžื•ืฉ ื‘ืžืฆื‘ ื‘ืืคืœื™ืงืฆื™ื•ืช ืกื˜ืจื™ืžื™ื ื’;
  • ื‘ื™ืฆื•ืข ื—ื™ื‘ื•ืจื™ ื–ืจื ื ืชื•ื ื™ื;
  • ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ื–ืจืžื™ ืื™ืจื•ืขื™ื (KStream) ืœื–ืจืžื™ ืขื“ื›ื•ืŸ (KTable).

ื‘ื“ื•ื’ืžืื•ืช ื”ื‘ืื•ืช ื ื‘ื™ื ืืช ื›ืœ ื”ืžืจื›ื™ื‘ื™ื ื”ืœืœื• ื™ื—ื“. ืชืœืžื“ ื’ื ืขืœ ื—ืœื•ื ื•ืช, ืชื›ื•ื ื” ื ื”ื“ืจืช ื ื•ืกืคืช ืฉืœ ื™ื™ืฉื•ืžื™ ืกื˜ืจื™ืžื™ื ื’. ื”ื“ื•ื’ืžื” ื”ืจืืฉื•ื ื” ืฉืœื ื• ืชื”ื™ื” ืฆื‘ื™ืจื” ืคืฉื•ื˜ื”.

5.3.1. ืฆื‘ื™ืจืช ืžื›ื™ืจื•ืช ื”ืžื ื™ื•ืช ืœืคื™ ืžื’ื–ืจื™ ืชืขืฉื™ื™ื”

ืฆื‘ื™ืจื” ื•ืงื™ื‘ื•ืฅ ื”ื ื›ืœื™ื ื—ื™ื•ื ื™ื™ื ื‘ืขื‘ื•ื“ื” ืขื ื–ืจื™ืžืช ื ืชื•ื ื™ื. ื‘ื“ื™ืงื” ืฉืœ ืจืฉื•ืžื•ืช ื‘ื•ื“ื“ื•ืช ื›ื›ืœ ืฉื”ืŸ ืžืชืงื‘ืœื•ืช ืื™ื ื” ืžืกืคื™ืงื”. ื›ื“ื™ ืœื—ืœืฅ ืžื™ื“ืข ื ื•ืกืฃ ืžื”ื ืชื•ื ื™ื, ื™ืฉ ืฆื•ืจืš ืœืงื‘ืฅ ื•ืœืฉืœื‘ ืื•ืชื.

ื‘ื“ื•ื’ืžื” ื–ื•, ืชืœื‘ืฉ ืชื—ืคื•ืฉืช ืฉืœ ืกื•ื—ืจ ื™ื•ืžื™ ืฉืฆืจื™ืš ืœืขืงื•ื‘ ืื—ืจ ื ืคื— ื”ืžื›ื™ืจื•ืช ืฉืœ ืžื ื™ื•ืช ืฉืœ ื—ื‘ืจื•ืช ื‘ื›ืžื” ืขื ืคื™ื. ื‘ืื•ืคืŸ ืกืคืฆื™ืคื™, ืืชื” ืžืขื•ื ื™ื™ืŸ ื‘ื—ืžืฉ ื”ื—ื‘ืจื•ืช ืขื ืžื›ื™ืจื•ืช ื”ืžื ื™ื•ืช ื”ื’ื“ื•ืœื•ืช ื‘ื™ื•ืชืจ ื‘ื›ืœ ืขื ืฃ.

ืฆื‘ื™ืจื” ื›ื–ื• ืชื“ืจื•ืฉ ืืช ืžืกืคืจ ื”ืฉืœื‘ื™ื ื”ื‘ืื™ื ื›ื“ื™ ืœืชืจื’ื ืืช ื”ื ืชื•ื ื™ื ืœืฆื•ืจื” ื”ืจืฆื•ื™ื” (ื‘ืžื•ื ื—ื™ื ื›ืœืœื™ื™ื).

  1. ืฆื•ืจ ืžืงื•ืจ ืžื‘ื•ืกืก ื ื•ืฉื ื”ืžืคืจืกื ืžื™ื“ืข ื’ื•ืœืžื™ ืขืœ ืžืกื—ืจ ื‘ืžื ื™ื•ืช. ื ืฆื˜ืจืš ืœืžืคื•ืช ืื•ื‘ื™ื™ืงื˜ ืžืกื•ื’ StockTransaction ืœืื•ื‘ื™ื™ืงื˜ ืžืกื•ื’ ShareVolume. ื”ื ืงื•ื“ื” ื”ื™ื ืฉืื•ื‘ื™ื™ืงื˜ StockTransaction ืžื›ื™ืœ ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ืžื›ื™ืจื•ืช, ืื‘ืœ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืจืง ื ืชื•ื ื™ื ืขืœ ืžืกืคืจ ื”ืžื ื™ื•ืช ืฉื ืžื›ืจื•ืช.
  2. ืงื‘ืฅ ื ืชื•ื ื™ ShareVolume ืœืคื™ ืกืžืœ ื”ืžื ื™ื”. ืœืื—ืจ ืงื™ื‘ื•ืฅ ืœืคื™ ืกืžืœ, ืชื•ื›ืœ ืœื›ื•ื•ืฅ ื ืชื•ื ื™ื ืืœื” ืœืกื™ื›ื•ืžื™ ื‘ื™ื ื™ื™ื ืฉืœ ื ืคื—ื™ ืžื›ื™ืจื•ืช ื‘ืžืœืื™. ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉืฉื™ื˜ืช KStream.groupBy ืžื—ื–ื™ืจื” ืžื•ืคืข ืžืกื•ื’ KGroupedStream. ื•ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืžื•ืคืข KTable ืขืœ ื™ื“ื™ ืงืจื™ืื” ื ื•ืกืคืช ืœืฉื™ื˜ืช KGroupedStream.reduce.

ืžื”ื• ืžืžืฉืง KGroupedStream

ื”ืฉื™ื˜ื•ืช KStream.groupBy ื•-KStream.groupByKey ืžื—ื–ื™ืจื•ืช ืžื•ืคืข ืฉืœ KGroupedStream. KGroupedStream ื”ื•ื ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ืฉืœ ื–ืจื ืื™ืจื•ืขื™ื ืœืื—ืจ ืงื™ื‘ื•ืฅ ืœืคื™ ืžืคืชื—ื•ืช. ื–ื” ื‘ื›ืœืœ ืœื ืžื™ื•ืขื“ ืœืขื‘ื•ื“ื” ื™ืฉื™ืจื” ืื™ืชื•. ื‘ืžืงื•ื ื–ืืช, KGroupedStream ืžืฉืžืฉ ืœืคืขื•ืœื•ืช ืฆื‘ื™ืจื”, ืฉืชืžื™ื“ ืžื•ื‘ื™ืœื•ืช ืœ-KTable. ื•ืžื›ื™ื•ื•ืŸ ืฉื”ืชื•ืฆืื” ืฉืœ ืคืขื•ืœื•ืช ืฆื‘ื™ืจื” ื”ื™ื KTable ื•ื”ื ืžืฉืชืžืฉื™ื ื‘ื—ื ื•ืช ืžื“ื™ื ื”, ื™ื™ืชื›ืŸ ืฉืœื ื›ืœ ื”ืขื“ื›ื•ื ื™ื ื›ืชื•ืฆืื” ืžื›ืš ื ืฉืœื—ื™ื ื‘ื”ืžืฉืš ื”ืฆื™ื ื•ืจ.

ื”ืฉื™ื˜ื” KTable.groupBy ืžื—ื–ื™ืจื” KGroupedTable ื“ื•ืžื” - ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ืฉืœ ื–ืจื ื”ืขื“ื›ื•ื ื™ื, ืžืงื•ื‘ืฅ ืžื—ื“ืฉ ืœืคื™ ืžืคืชื—.

ื‘ื•ืื• ื ื™ืงื— ื”ืคืกืงื” ืงืฆืจื” ื•ื ืกืชื›ืœ ืขืœ ืื™ื•ืจ. 5.9, ืฉืžืจืื” ืžื” ื”ืฉื’ื ื•. ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ื”ื–ื• ื›ื‘ืจ ืืžื•ืจื” ืœื”ื™ื•ืช ืžื•ื›ืจืช ืœืš ืžืื•ื“.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ืขืช ื ืกืชื›ืœ ืขืœ ื”ืงื•ื“ ืฉืœ ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ื”ื–ื• (ื ื™ืชืŸ ืœืžืฆื•ื ืื•ืชื• ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (ืจื™ืฉื•ื 5.2).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื”ืงื•ื“ ื”ื ืชื•ืŸ ื ื‘ื“ืœ ื‘ืงื™ืฆื•ืจื• ื•ื‘ื ืคื— ื”ื’ื“ื•ืœ ืฉืœ ืคืขื•ืœื•ืช ื”ืžื‘ื•ืฆืขื•ืช ื‘ืžืกืคืจ ืฉื•ืจื•ืช. ื™ื™ืชื›ืŸ ืฉืชื‘ื—ื™ืŸ ื‘ืžืฉื”ื• ื—ื“ืฉ ื‘ืคืจืžื˜ืจ ื”ืจืืฉื•ืŸ ืฉืœ ืฉื™ื˜ืช builder.stream: ืขืจืš ืžืกื•ื’ enum AutoOffsetReset.EARLIEST (ื™ืฉ ื’ื LATEST), ืžื•ื’ื“ืจ ื‘ืฉื™ื˜ืช Consumed.withOffsetResetPolicy. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ ืกืคื™ืจื” ื–ื” ื›ื“ื™ ืœืฆื™ื™ืŸ ืืกื˜ืจื˜ื’ื™ื™ืช ืื™ืคื•ืก ื”ื™ืกื˜ ืขื‘ื•ืจ ื›ืœ KStream ืื• KTable ื•ื”ื•ื ืžืงื‘ืœ ืขื“ื™ืคื•ืช ืขืœ ืืคืฉืจื•ืช ืื™ืคื•ืก ื”ื™ืกื˜ ืžื”ืชืฆื•ืจื”.

GroupByKey ื•- GroupBy

ืœืžืžืฉืง KStream ื™ืฉ ืฉืชื™ ืฉื™ื˜ื•ืช ืœืงื™ื‘ื•ืฅ ืจืฉื•ืžื•ืช: GroupByKey ื•- GroupBy. ืฉื ื™ื”ื ืžื—ื–ื™ืจื™ื KGroupedTable, ืื– ืื•ืœื™ ืืชื” ืชื•ื”ื” ืžื” ื”ื”ื‘ื“ืœ ื‘ื™ื ื™ื”ื ื•ืžืชื™ ืœื”ืฉืชืžืฉ ื‘ืื™ื–ื”?

ืฉื™ื˜ืช GroupByKey ืžืฉืžืฉืช ื›ืืฉืจ ื”ืžืคืชื—ื•ืช ื‘-KStream ื›ื‘ืจ ืœื ืจื™ืงื™ื. ื•ื”ื›ื™ ื—ืฉื•ื‘, ื”ื“ื’ืœ "ื“ื•ืจืฉ ื—ืœื•ืงื” ืžื—ื“ืฉ" ืžืขื•ืœื ืœื ื”ื•ื’ื“ืจ.

ืฉื™ื˜ืช GroupBy ืžื ื™ื—ื” ืฉืฉื™ื ื™ืช ืืช ืžืคืชื—ื•ืช ื”ืงื™ื‘ื•ืฅ, ื›ืš ืฉื“ื’ืœ ื”ื—ืœื•ืงื” ืžื—ื“ืฉ ืžื•ื’ื“ืจ ื›-true. ื‘ื™ืฆื•ืข ื”ืฆื˜ืจืคื•ืช, ืฆื‘ื™ืจื” ื•ื›ื•' ืœืื—ืจ ืฉื™ื˜ืช GroupBy ื™ื‘ื™ื ืœื—ืœื•ืงื” ืžื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช.
ืกื™ื›ื•ื: ื‘ืžื™ื“ืช ื”ืืคืฉืจ, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘-GroupByKey ื•ืœื ื‘-GroupBy.

ื‘ืจื•ืจ ืžื” ืขื•ืฉื•ืช ืฉื™ื˜ื•ืช mapValues โ€‹โ€‹ื•-groupBy, ืื– ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืฉื™ื˜ืช sum() (ื ืžืฆืืช ื‘-src/main/java/bbejeck/model/ShareVolume.java) (ืจื™ืฉื•ื 5.3).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืฉื™ื˜ืช ShareVolume.sum ืžื—ื–ื™ืจื” ืืช ื”ืกื›ื•ื ื”ืจืฆื•ื™ ืฉืœ ื ืคื— ืžื›ื™ืจื•ืช ื”ืžืœืื™, ื•ื”ืชื•ืฆืื” ืฉืœ ื›ืœ ืฉืจืฉืจืช ื”ื—ื™ืฉื•ื‘ื™ื ื”ื™ื ืื•ื‘ื™ื™ืงื˜ KTable . ืขื›ืฉื™ื• ืืชื” ืžื‘ื™ืŸ ืืช ื”ืชืคืงื™ื“ ืฉ-KTable ืžืžืœื. ื›ืืฉืจ ืื•ื‘ื™ื™ืงื˜ื™ ShareVolume ืžื’ื™ืขื™ื, ืื•ื‘ื™ื™ืงื˜ KTable ื”ืžืชืื™ื ืžืื—ืกืŸ ืืช ื”ืขื“ื›ื•ืŸ ื”ืขื“ื›ื ื™ ื”ืื—ืจื•ืŸ. ื—ืฉื•ื‘ ืœื–ื›ื•ืจ ืฉื›ืœ ื”ืขื“ื›ื•ื ื™ื ื‘ืื™ื ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื‘-shareVolumeKTable ื”ืงื•ื“ื, ืืš ืœื ื›ื•ืœื ื ืฉืœื—ื™ื ื”ืœืื”.

ืœืื—ืจ ืžื›ืŸ ืื ื• ืžืฉืชืžืฉื™ื ื‘-KTable ื–ื” ื›ื“ื™ ืœืฆื‘ื•ืจ (ืœืคื™ ืžืกืคืจ ื”ืžื ื™ื•ืช ื”ื ืกื—ืจื•ืช) ื›ื“ื™ ืœื”ื’ื™ืข ืœื—ืžืฉ ื”ื—ื‘ืจื•ืช ืขื ื ืคื— ื”ืžื ื™ื•ืช ื”ื’ื‘ื•ื” ื‘ื™ื•ืชืจ ื”ื ืกื—ืจื•ืช ื‘ื›ืœ ืขื ืฃ. ื”ืคืขื•ืœื•ืช ืฉืœื ื• ื‘ืžืงืจื” ื–ื” ื™ื”ื™ื• ื“ื•ืžื•ืช ืœืืœื• ืฉืœ ื”ืฆื‘ื™ืจื” ื”ืจืืฉื•ื ื”.

  1. ื‘ืฆืข ืคืขื•ืœื” ื ื•ืกืคืช ืฉืœ groupBy ื›ื“ื™ ืœืงื‘ืฅ ืื•ื‘ื™ื™ืงื˜ื™ ShareVolume ื‘ื•ื“ื“ื™ื ืœืคื™ ืขื ืฃ.
  2. ื”ืชื—ืœ ืœืกื›ื ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ ShareVolume. ื”ืคืขื ืื•ื‘ื™ื™ืงื˜ ื”ืฆื‘ื™ืจื” ื”ื•ื ืชื•ืจ ืขื“ื™ืคื•ืช ื‘ื’ื•ื“ืœ ืงื‘ื•ืข. ื‘ืชื•ืจ ื‘ื’ื•ื“ืœ ืงื‘ื•ืข ื–ื” ื ืฉืžืจื•ืช ืจืง ื—ืžืฉ ื”ื—ื‘ืจื•ืช ืขื ื›ืžื•ื™ื•ืช ื”ืžื ื™ื•ืช ื”ื’ื“ื•ืœื•ืช ื‘ื™ื•ืชืจ ืฉื ืžื›ืจื•.
  3. ืžืคื” ืืช ื”ืชื•ืจื™ื ืžื”ืคืกืงื” ื”ืงื•ื“ืžืช ืœืขืจืš ืžื—ืจื•ื–ืช ื•ื”ื—ื–ืจ ืืช ื—ืžืฉ ื”ืžื ื™ื•ืช ื”ื ืกื—ืจื•ืช ื‘ื™ื•ืชืจ ืœืคื™ ืžืกืคืจ ืœืคื™ ืขื ืฃ.
  4. ื›ืชื•ื‘ ืืช ื”ืชื•ืฆืื•ืช ื‘ืฆื•ืจืช ืžื—ืจื•ื–ืช ืœื ื•ืฉื.

ื‘ืื™ื•ืจ. ืื™ื•ืจ 5.10 ืžืฆื™ื’ ืืช ื’ืจืฃ ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ืฉืœ ื–ืจื™ืžืช ื”ื ืชื•ื ื™ื. ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ืกื‘ื‘ ื”ืขื™ื‘ื•ื“ ื”ืฉื ื™ ื”ื•ื ื“ื™ ืคืฉื•ื˜.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ืขืช, ืœืื—ืจ ืฉื™ืฉ ืœื ื• ื”ื‘ื ื” ื‘ืจื•ืจื” ืฉืœ ื”ืžื‘ื ื” ืฉืœ ืกื‘ื‘ ืขื™ื‘ื•ื“ ืฉื ื™ ื–ื”, ืื ื• ื™ื›ื•ืœื™ื ืœืคื ื•ืช ืœืงื•ื“ ื”ืžืงื•ืจ ืฉืœื• (ืชื•ื›ืœื• ืœืžืฆื•ื ืื•ืชื• ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (ืจื™ืฉื•ื 5.4) .

ืืชื—ื•ืœ ื–ื” ืžื›ื™ืœ ืžืฉืชื ื” ืงื‘ื•ืข ื‘ืชื•ืจ. ื–ื”ื• ืื•ื‘ื™ื™ืงื˜ ืžื•ืชืื ืื™ืฉื™ืช ื”ืžื”ื•ื•ื” ืžืชืื ืขื‘ื•ืจ java.util.TreeSet ื”ืžืฉืžืฉ ืœืžืขืงื‘ ืื—ืจ ืชื•ืฆืื•ืช N ื”ืขืœื™ื•ื ื•ืช ื‘ืกื“ืจ ื™ื•ืจื“ ืฉืœ ื”ืžื ื™ื•ืช ื”ื ืกื—ืจื•ืช.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ื‘ืจ ืจืื™ืช ืืช ื”ืงืจื™ืื•ืช groupBy ื•-mapValues, ืื– ืœื ื ื™ื›ื ืก ืœืืœื• (ืื ื—ื ื• ืงื•ืจืื™ื ืœืฉื™ื˜ืช KTable.toStream ืžื›ื™ื•ื•ืŸ ืฉืฉื™ื˜ืช KTable.print ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ). ืื‘ืœ ืขื“ื™ื™ืŸ ืœื ืจืื™ืช ืืช ื’ืจืกืช KTable ืฉืœ aggregate() ืื– ื ืงื“ื™ืฉ ื–ืžืŸ ืœื“ื™ื•ืŸ ืขืœ ื–ื”.

ื›ืคื™ ืฉืืชื” ื–ื•ื›ืจ, ืžื” ืฉืžื™ื™ื—ื“ ืืช KTable ื”ื•ื ืฉืจืฉื•ืžื•ืช ืขื ืื•ืชื ืžืคืชื—ื•ืช ื ื—ืฉื‘ื•ืช ืœืขื“ื›ื•ื ื™ื. KTable ืžื—ืœื™ืฃ ืืช ื”ืขืจืš ื”ื™ืฉืŸ ื‘ื—ื“ืฉ. ืฆื‘ื™ืจื” ืžืชืจื—ืฉืช ื‘ืื•ืคืŸ ื“ื•ืžื”: ื”ืจืฉื•ืžื•ืช ื”ืื—ืจื•ื ื•ืช ืขื ืื•ืชื• ืžืคืชื— ืžืฆื˜ื‘ืจื™ื. ื›ืืฉืจ ืจืฉื•ืžื” ืžื’ื™ืขื”, ื”ื™ื ืžืชื•ื•ืกืคืช ืœืžื•ืคืข ื”ืžื—ืœืงื” FixedSizePriorityQueue ื‘ืืžืฆืขื•ืช adder (ืคืจืžื˜ืจ ืฉื ื™ ื‘ืงืจื™ืืช ื”ืฉื™ื˜ื” ื”ืžืฆื˜ื‘ืจืช), ืืš ืื ืจืฉื•ืžื” ืื—ืจืช ื›ื‘ืจ ืงื™ื™ืžืช ืขื ืื•ืชื• ืžืคืชื—, ืื– ื”ืจืฉื•ืžื” ื”ื™ืฉื ื” ืžื•ืกืจืช ื‘ืืžืฆืขื•ืช ืžื—ืกื™ืจ (ืคืจืžื˜ืจ ืฉืœื™ืฉื™ ื‘- ืงืจื™ืืช ื”ืฉื™ื˜ื” ื”ืžืฆื˜ื‘ืจืช).

ื›ืœ ื–ื” ืื•ืžืจ ืฉื”ืื’ืจื’ื˜ื•ืจ ืฉืœื ื•, FixedSizePriorityQueue, ืื™ื ื• ืฆื•ื‘ืจ ืืช ื›ืœ ื”ืขืจื›ื™ื ื‘ืžืคืชื— ืื—ื“, ืืœื ืžืื—ืกืŸ ืกื›ื•ื ื ืข ืฉืœ ื”ื›ืžื•ื™ื•ืช ืฉืœ N ืกื•ื’ื™ ื”ืžื ื™ื•ืช ื”ื ืกื—ืจื•ืช ื‘ื™ื•ืชืจ. ื›ืœ ืขืจืš ื ื›ื ืก ืžื›ื™ืœ ืืช ื”ืžืกืคืจ ื”ื›ื•ืœืœ ืฉืœ ื”ืžื ื™ื•ืช ืฉื ืžื›ืจื• ืขื“ ื›ื”. KTable ืชื™ืชืŸ ืœืš ืžื™ื“ืข ืœื’ื‘ื™ ื”ืžื ื™ื•ืช ืฉืœ ื”ื—ื‘ืจื•ืช ื”ื ืกื—ืจื•ืช ื›ื™ื•ื ื‘ื™ื•ืชืจ, ืžื‘ืœื™ ืœื”ื™ื“ืจืฉ ืœืฆื‘ื™ืจื” ืžืชื’ืœื’ืœืช ืฉืœ ื›ืœ ืขื“ื›ื•ืŸ.

ืœืžื“ื ื• ืœืขืฉื•ืช ืฉื ื™ ื“ื‘ืจื™ื ื—ืฉื•ื‘ื™ื:

  • ืงื‘ืฅ ืขืจื›ื™ื ื‘-KTable ืขืœ ื™ื“ื™ ืžืคืชื— ืžืฉื•ืชืฃ;
  • ืœื‘ืฆืข ืคืขื•ืœื•ืช ืฉื™ืžื•ืฉื™ื•ืช ื›ื’ื•ืŸ ืื•ืกืฃ ื•ืฆื‘ื™ืจื” ืขืœ ืขืจื›ื™ื ืžืงื•ื‘ืฆื™ื ืืœื”.

ืœื“ืขืช ื›ื™ืฆื“ ืœื‘ืฆืข ืคืขื•ืœื•ืช ืืœื• ื—ืฉื•ื‘ ืœื”ื‘ื™ืŸ ืืช ื”ืžืฉืžืขื•ืช ืฉืœ ื”ื ืชื•ื ื™ื ื”ืขื•ื‘ืจื™ื ื“ืจืš ืืคืœื™ืงืฆื™ื™ืช Kafka Streams ื•ืœื”ื‘ื™ืŸ ืื™ื–ื” ืžื™ื“ืข ื”ื•ื ื ื•ืฉื.

ืจื™ื›ื–ื ื• ื’ื ื›ืžื” ืžืžื•ืฉื’ื™ ื”ืžืคืชื— ืฉื ื“ื•ื ื• ืงื•ื“ื ืœื›ืŸ ื‘ืกืคืจ ื–ื”. ื‘ืคืจืง 4, ื“ื ื• ืขื“ ื›ืžื” ื”ืžื“ื™ื ื” ื”ืžืงื•ืžื™ืช ืกื•ื‘ืœื ื™ืช ืœืชืงืœื•ืช ื”ื™ื ื—ืฉื•ื‘ื” ืขื‘ื•ืจ ืืคืœื™ืงืฆื™ื™ืช ืกื˜ืจื™ืžื™ื ื’. ื”ื“ื•ื’ืžื” ื”ืจืืฉื•ื ื” ื‘ืคืจืง ื–ื” ื”ื“ื’ื™ืžื” ืžื“ื•ืข ื”ืžื“ื™ื ื” ื”ืžืงื•ืžื™ืช ื›ืœ ื›ืš ื—ืฉื•ื‘ื” - ื”ื™ื ืžืืคืฉืจืช ืœืš ืœืขืงื•ื‘ ืื—ืจ ื”ืžื™ื“ืข ืฉื›ื‘ืจ ืจืื™ืช. ื’ื™ืฉื” ืžืงื•ืžื™ืช ืžื•ื ืขืช ืขื™ื›ื•ื‘ื™ื ื‘ืจืฉืช, ืžื” ืฉื”ื•ืคืš ืืช ื”ืืคืœื™ืงืฆื™ื” ืœื™ื•ืชืจ ื‘ื™ืฆื•ืขื™ืช ื•ืขืžื™ื“ื” ื‘ืคื ื™ ืฉื’ื™ืื•ืช.

ื‘ืขืช ื‘ื™ืฆื•ืข ืคืขื•ืœืช ืื•ืกืฃ ืื• ืฆื‘ื™ืจื” ื›ืœืฉื”ื™, ืขืœื™ืš ืœืฆื™ื™ืŸ ืืช ืฉื ื—ื ื•ืช ื”ืžื“ื™ื ื”. ืคืขื•ืœื•ืช ื”ืื•ืกืฃ ื•ื”ืฆื‘ื™ืจื” ืžื—ื–ื™ืจื•ืช ืžื•ืคืข ืฉืœ KTable, ื•ื”-KTable ืžืฉืชืžืฉ ื‘ืื—ืกื•ืŸ ืžืฆื‘ ื›ื“ื™ ืœื”ื—ืœื™ืฃ ืชื•ืฆืื•ืช ื™ืฉื ื•ืช ื‘ื—ื“ืฉื•ืช. ื›ืคื™ ืฉืจืื™ืช, ืœื ื›ืœ ื”ืขื“ื›ื•ื ื™ื ื ืฉืœื—ื™ื ื‘ืฆื ืจืช, ื•ื–ื” ื—ืฉื•ื‘ ืžื›ื™ื•ื•ืŸ ืฉืคืขื•ืœื•ืช ืฆื‘ื™ืจื” ื ื•ืขื“ื• ืœื™ื™ืฆืจ ืžื™ื“ืข ืžืกื›ื. ืื ืœื ืชื—ื™ืœ ืืช ื”ืžื“ื™ื ื” ื”ืžืงื•ืžื™ืช, KTable ืชืขื‘ื™ืจ ืืช ื›ืœ ืชื•ืฆืื•ืช ื”ืฆื‘ื™ืจื” ื•ื”ืื•ืกืฃ.

ืœืื—ืจ ืžื›ืŸ, ื ื‘ื—ืŸ ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ื›ื’ื•ืŸ ืฆื‘ื™ืจื” ื‘ืชื•ืš ืคืจืง ื–ืžืŸ ืžืกื•ื™ื - ืžื” ืฉื ืงืจื ืคืขื•ืœื•ืช ื—ืœื•ื ื•ืช.

5.3.2. ืคืขื•ืœื•ืช ื—ืœื•ื ื•ืช

ื‘ืกืขื™ืฃ ื”ืงื•ื“ื, ื”ืฆื’ื ื• ืงื•ื ื‘ื•ืœื•ืœื•ืฆื™ื” ื•ืฆื‘ื™ืจื” ืฉืœ ื”ื—ืœืงื”. ื”ืืคืœื™ืงืฆื™ื” ื‘ื™ืฆืขื” ืจื•ืœ-ืืค ืžืชืžืฉืš ืฉืœ ืžื›ื™ืจื•ืช ื”ืžื ื™ื•ืช ื•ืœืื—ืจื™ื” ืฆื‘ื™ืจืช ื—ืžืฉ ื”ืžื ื™ื•ืช ื”ื ืกื—ืจื•ืช ื‘ื™ื•ืชืจ ื‘ื‘ื•ืจืกื”.

ืœืคืขืžื™ื ื™ืฉ ืฆื•ืจืš ื‘ืฆื‘ื™ืจื” ืจืฆื™ืคื” ื›ื–ื• ืฉืœ ืชื•ืฆืื•ืช. ื•ืœืคืขืžื™ื ืืชื” ืฆืจื™ืš ืœื‘ืฆืข ืคืขื•ืœื•ืช ืจืง ืขืœ ืคื ื™ ืคืจืง ื–ืžืŸ ื ืชื•ืŸ. ืœื“ื•ื’ืžื”, ื—ืฉื‘ ื›ืžื” ืขืกืงืื•ืช ื—ืœื™ืคื™ืŸ ื‘ื•ืฆืขื• ืขื ืžื ื™ื•ืช ืฉืœ ื—ื‘ืจื” ืžืกื•ื™ืžืช ื‘-10 ื”ื“ืงื•ืช ื”ืื—ืจื•ื ื•ืช. ืื• ื›ืžื” ืžืฉืชืžืฉื™ื ืœื—ืฆื• ืขืœ ื‘ืื ืจ ืคืจืกื•ืžื™ ื—ื“ืฉ ื‘-15 ื”ื“ืงื•ืช ื”ืื—ืจื•ื ื•ืช. ื™ื™ืฉื•ื ืขืฉื•ื™ ืœื‘ืฆืข ืคืขื•ืœื•ืช ื›ืืœื” ืžืกืคืจ ืคืขืžื™ื, ืืš ืขื ืชื•ืฆืื•ืช ื”ื—ืœื•ืช ืจืง ืขืœ ืคืจืงื™ ื–ืžืŸ ืžื•ื’ื“ืจื™ื (ื—ืœื•ื ื•ืช ื–ืžืŸ).

ืกืคื™ืจืช ืขืกืงืื•ืช ื—ืœื™ืคื™ืŸ ืœืคื™ ืงื•ื ื”

ื‘ื“ื•ื’ืžื” ื”ื‘ืื”, ื ืขืงื•ื‘ ืื—ืจ ืขืกืงืื•ืช ืžื ื™ื•ืช ื‘ื™ืŸ ืžืกืคืจ ืกื•ื—ืจื™ื - ืืจื’ื•ื ื™ื ื’ื“ื•ืœื™ื ืื• ืื ืฉื™ ื›ืกืคื™ื ื‘ื•ื“ื“ื™ื ื—ื›ืžื™ื.

ื™ืฉื ืŸ ืฉืชื™ ืกื™ื‘ื•ืช ืืคืฉืจื™ื•ืช ืœืžืขืงื‘ ื–ื”. ืื—ื“ ืžื”ื ื”ื•ื ื”ืฆื•ืจืš ืœื“ืขืช ืžื” ืžื•ื‘ื™ืœื™ ืฉื•ืง ืงื•ื ื™ื/ืžื•ื›ืจื™ื. ืื ื”ืฉื—ืงื ื™ื ื”ื’ื“ื•ืœื™ื ื•ื”ืžืฉืงื™ืขื™ื ื”ืžืชื•ื—ื›ืžื™ื ื”ืืœื” ืจื•ืื™ื ื”ื–ื“ืžื ื•ืช, ื–ื” ื”ื’ื™ื•ื ื™ ืœืขืงื•ื‘ ืื—ืจ ื”ืืกื˜ืจื˜ื’ื™ื” ืฉืœื”ื. ื”ืกื™ื‘ื” ื”ืฉื ื™ื™ื” ื”ื™ื ื”ืจืฆื•ืŸ ืœื–ื”ื•ืช ื›ืœ ืกื™ืžืŸ ืืคืฉืจื™ ืฉืœ ืกื—ืจ ื‘ืคื ื™ื ืœื ื—ื•ืงื™. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืชืฆื˜ืจืš ืœื ืชื— ืืช ื”ืžืชืื ืฉืœ ืขืœื™ื•ืช ืžื›ื™ืจื•ืช ื’ื“ื•ืœื•ืช ืขื ื”ื•ื“ืขื•ืช ืœืขื™ืชื•ื ื•ืช ื—ืฉื•ื‘ื•ืช.

ืžืขืงื‘ ื›ื–ื” ืžื•ืจื›ื‘ ืžื”ืฉืœื‘ื™ื ื”ื‘ืื™ื:

  • ื™ืฆื™ืจืช ื–ืจื ืœืงืจื™ืื” ืžืชื•ืš ื ื•ืฉื ืขืกืงืื•ืช ืžื ื™ื•ืช;
  • ืงื™ื‘ื•ืฅ ืจืฉื•ืžื•ืช ื ื›ื ืกื•ืช ืœืคื™ ืžื–ื”ื” ืงื•ื ื” ื•ืกืžืœ ื”ืžื ื™ื”. ืงืจื™ืื” ืœืžืชื•ื“ื” groupBy ืžื—ื–ื™ืจื” ืžื•ืคืข ืฉืœ ื”ืžื—ืœืงื” KGroupedStream;
  • ื”ืฉื™ื˜ื” KGroupedStream.windowedBy ืžื—ื–ื™ืจื” ื–ืจื ื ืชื•ื ื™ื ืžื•ื’ื‘ืœ ืœื—ืœื•ืŸ ื–ืžืŸ, ื”ืžืืคืฉืจ ืฆื‘ื™ืจื” ื‘ื—ืœื•ืŸ. ื‘ื”ืชืื ืœืกื•ื’ ื”ื—ืœื•ืŸ, ืžื•ื—ื–ืจ TimeWindowedKStream ืื• SessionWindowedKStream;
  • ืกืคื™ืจืช ืขืกืงืื•ืช ืขื‘ื•ืจ ืคืขื•ืœืช ื”ืฆื‘ื™ืจื”. ื–ืจื™ืžืช ื”ื ืชื•ื ื™ื ื‘ื—ืœื•ืŸ ืงื•ื‘ืขืช ืื ืจืฉื•ืžื” ืžืกื•ื™ืžืช ื ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ื‘ืกืคื™ืจื” ื–ื•;
  • ื›ืชื™ื‘ืช ืชื•ืฆืื•ืช ืœื ื•ืฉื ืื• ื”ื•ืฆืืชืŸ ืœืงื•ื ืกื•ืœื” ื‘ืžื”ืœืš ื”ืคื™ืชื•ื—.

ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ืฉืœ ื™ื™ืฉื•ื ื–ื” ื”ื™ื ืคืฉื•ื˜ื”, ืืš ืชืžื•ื ื” ื‘ืจื•ืจื” ืฉืœื• ืชื”ื™ื” ืžื•ืขื™ืœื”. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืื™ื•ืจ. 5.11.

ืœืื—ืจ ืžื›ืŸ, ื ื‘ื—ืŸ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ืคืขื•ืœื•ืช ื”ื—ืœื•ืŸ ื•ืืช ื”ืงื•ื“ ื”ืžืชืื™ื.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"

ืกื•ื’ื™ ื—ืœื•ื ื•ืช

ื™ืฉื ื ืฉืœื•ืฉื” ืกื•ื’ื™ื ืฉืœ ื—ืœื•ื ื•ืช ื‘-Kafka Streams:

  • ืžื•ืฉื‘;
  • "ืžื˜ืœื˜ืœืช" (ืžื˜ืœื˜ืœืช);
  • ื”ื—ืœืงื”/ื“ื™ืœื•ื’.

ืื™ื–ื” ืžื”ื ืœื‘ื—ื•ืจ ืชืœื•ื™ ื‘ื“ืจื™ืฉื•ืช ื”ืขืกืงื™ื•ืช ืฉืœืš. ื—ืœื•ื ื•ืช ื ืคื™ืœื” ื•ืงืคื™ืฆื” ืžื•ื’ื‘ืœื™ื ื‘ื–ืžืŸ, ื‘ืขื•ื“ ืฉื—ืœื•ื ื•ืช ื”ืคืขืœื” ืžื•ื’ื‘ืœื™ื ืขืœ ื™ื“ื™ ืคืขื™ืœื•ืช ื”ืžืฉืชืžืฉ - ืžืฉืš ื”ื”ืคืขืœื”/ื™ื ื ืงื‘ืขื™ื ืืš ื•ืจืง ืœืคื™ ืžื™ื“ืช ื”ืคืขื™ืœื•ืช ืฉืœ ื”ืžืฉืชืžืฉ. ื”ื“ื‘ืจ ื”ืขื™ืงืจื™ ืฉื™ืฉ ืœื–ื›ื•ืจ ื”ื•ื ืฉื›ืœ ืกื•ื’ื™ ื”ื—ืœื•ื ื•ืช ืžื‘ื•ืกืกื™ื ืขืœ ื—ื•ืชืžื•ืช ื”ืชืืจื™ืš/ืฉืขื” ืฉืœ ื”ืขืจื›ื™ื, ืœื ืขืœ ืฉืขืช ื”ืžืขืจื›ืช.

ืœืื—ืจ ืžื›ืŸ, ืื ื• ืžื™ื™ืฉืžื™ื ืืช ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ืฉืœื ื• ืขื ื›ืœ ืื—ื“ ืžืกื•ื’ื™ ื”ื—ืœื•ื ื•ืช. ื”ืงื•ื“ ื”ืžืœื ื™ื™ื ืชืŸ ืจืง ื‘ื“ื•ื’ืžื” ื”ืจืืฉื•ื ื”; ืขื‘ื•ืจ ืกื•ื’ื™ื ืื—ืจื™ื ืฉืœ ื—ืœื•ื ื•ืช ืฉื•ื ื“ื‘ืจ ืœื ื™ืฉืชื ื” ืžืœื‘ื“ ืกื•ื’ ืคืขื•ืœืช ื”ื—ืœื•ืŸ.

ื—ืœื•ื ื•ืช ื”ืคืขืœื”

ื—ืœื•ื ื•ืช ื”ืคืขืœื” ืฉื•ื ื™ื ืžืื•ื“ ืžื›ืœ ืกื•ื’ื™ ื”ื—ืœื•ื ื•ืช ื”ืื—ืจื™ื. ื”ื ืžื•ื’ื‘ืœื™ื ืœื ื›ืœ ื›ืš ืขืœ ื™ื“ื™ ื–ืžืŸ ืืœื ืขืœ ื™ื“ื™ ื”ืคืขื™ืœื•ืช ืฉืœ ื”ืžืฉืชืžืฉ (ืื• ื”ืคืขื™ืœื•ืช ืฉืœ ื”ื™ืฉื•ืช ืฉืื—ืจื™ื” ืชืจืฆื” ืœืขืงื•ื‘). ื—ืœื•ื ื•ืช ื”ืคืขืœื” ืžื•ื’ื‘ืœื™ื ืœืคื™ ืชืงื•ืคื•ืช ืฉืœ ื—ื•ืกืจ ืคืขื™ืœื•ืช.

ืื™ื•ืจ 5.12 ืžืžื—ื™ืฉ ืืช ื”ืจืขื™ื•ืŸ ืฉืœ ื—ืœื•ื ื•ืช ื”ืคืขืœื”. ื”ื”ืคืขืœื” ื”ืงื˜ื ื” ื™ื•ืชืจ ืชืชืžื–ื’ ืขื ื”ื”ืคืขืœื” ืžืฉืžืืœ ืœื”. ื•ื”ืคื’ื™ืฉื” ืžื™ืžื™ืŸ ืชื”ื™ื” ื ืคืจื“ืช ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ื‘ืื” ื‘ืขืงื‘ื•ืช ืชืงื•ืคื” ืืจื•ื›ื” ืฉืœ ื—ื•ืกืจ ืคืขื™ืœื•ืช. ื—ืœื•ื ื•ืช ื”ืคืขืœื” ืžื‘ื•ืกืกื™ื ืขืœ ืคืขื™ืœื•ืช ื”ืžืฉืชืžืฉ, ืืš ื”ืฉืชืžืฉื• ื‘ื—ื•ืชืžื•ืช ืชืืจื™ืš/ืฉืขื” ืžื”ืขืจื›ื™ื ื›ื“ื™ ืœืงื‘ื•ืข ืœืื™ื–ื• ื”ืคืขืœื” ื”ืขืจืš ืฉื™ื™ืš.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"

ืฉื™ืžื•ืฉ ื‘ื—ืœื•ื ื•ืช ื”ืคืขืœื” ืœืžืขืงื‘ ืื—ืจ ืขืกืงืื•ืช ืžื ื™ื•ืช

ื‘ื•ืื• ื ืฉืชืžืฉ ื‘ื—ืœื•ื ื•ืช ื”ืคืขืœื” ื›ื“ื™ ืœืœื›ื•ื“ ืžื™ื“ืข ืขืœ ืขืกืงืื•ืช ื—ืœื™ืคื™ืŸ. ื”ื™ื™ืฉื•ื ืฉืœ ื—ืœื•ื ื•ืช ื”ืคืขืœื” ืžื•ืฆื’ ื‘ืจื™ืฉื•ื 5.5 (ืืฉืจ ื ื™ืชืŸ ืœืžืฆื•ื ื‘-src/main/java/bbejeck/chapter_5/CountingWindowingAndKTableJoinExample.java).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ื‘ืจ ืจืื™ืช ืืช ืจื•ื‘ ื”ืคืขื•ืœื•ืช ื‘ื˜ื•ืคื•ืœื•ื’ื™ื” ื”ื–ื•, ืื– ืื™ืŸ ืฆื•ืจืš ืœื”ืกืชื›ืœ ืขืœื™ื”ืŸ ืฉื•ื‘ ื›ืืŸ. ืื‘ืœ ื™ืฉ ื›ืืŸ ื’ื ื›ืžื” ืืœืžื ื˜ื™ื ื—ื“ืฉื™ื, ืขืœื™ื”ื ื ื“ื•ืŸ ื›ืขืช.

ื›ืœ ืคืขื•ืœืช groupBy ืžื‘ืฆืขืช ื‘ื“ืจืš ื›ืœืœ ืคืขื•ืœืช ืฆื‘ื™ืจื” ื›ืœืฉื”ื™ (ืฆื‘ื™ืจื”, ืื•ืกืฃ ืื• ืกืคื™ืจื”). ืืชื” ื™ื›ื•ืœ ืœื‘ืฆืข ืฆื‘ื™ืจื” ืžืฆื˜ื‘ืจืช ืขื ืกืš ืจืฅ, ืื• ืฆื‘ื™ืจื” ืฉืœ ื—ืœื•ืŸ, ืฉืœื•ืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืจืฉื•ืžื•ืช ื‘ืชื•ืš ื—ืœื•ืŸ ื–ืžืŸ ืžื•ื’ื“ืจ.

ื”ืงื•ื“ ื‘ืจื™ืฉื•ื 5.5 ืกื•ืคืจ ืืช ืžืกืคืจ ื”ืขืกืงืื•ืช ื‘ืชื•ืš ื—ืœื•ื ื•ืช ื”ืคืขืœื”. ื‘ืื™ื•ืจ. 5.13 ืคืขื•ืœื•ืช ืืœื• ืžื ื•ืชื—ื•ืช ืฆืขื“ ืื—ืจ ืฆืขื“.

ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœ-windowedBy(SessionWindows.with(twentySeconds).until(fifteenMinutes)) ืื ื• ื™ื•ืฆืจื™ื ื—ืœื•ืŸ ื”ืคืขืœื” ืขื ืžืจื•ื•ื— ื—ื•ืกืจ ืคืขื™ืœื•ืช ืฉืœ 20 ืฉื ื™ื•ืช ื•ืžืจื•ื•ื— ื”ืชืžื“ื” ืฉืœ 15 ื“ืงื•ืช. ืžืจื•ื•ื— ืกืจืง ืฉืœ 20 ืฉื ื™ื•ืช ืื•ืžืจ ืฉื”ืืคืœื™ืงืฆื™ื” ืชื›ืœื•ืœ ื›ืœ ื›ื ื™ืกื” ืฉืชื’ื™ืข ืชื•ืš 20 ืฉื ื™ื•ืช ืžืกื™ื•ื ืื• ืชื—ื™ืœืช ื”ื”ืคืขืœื” ื”ื ื•ื›ื—ื™ืช ืœืชื•ืš ื”ื”ืคืขืœื” ื”ื ื•ื›ื—ื™ืช (ื”ืคืขื™ืœื”).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืœืื—ืจ ืžื›ืŸ, ืื ื• ืžืฆื™ื™ื ื™ื ืื™ื–ื• ืคืขื•ืœืช ืฆื‘ื™ืจื” ื™ืฉ ืœื‘ืฆืข ื‘ื—ืœื•ืŸ ื”ืคื’ื™ืฉื” - ื‘ืžืงืจื” ื–ื”, ืกืคื™ืจื”. ืื ืขืจืš ื ื›ื ืก ื ื•ืคืœ ืžื—ื•ืฅ ืœื—ืœื•ืŸ ื—ื•ืกืจ ื”ืคืขื™ืœื•ืช (ื‘ืฉื ื™ ื”ืฆื“ื“ื™ื ืฉืœ ื—ื•ืชืžืช ื”ืชืืจื™ืš/ืฉืขื”), ื”ื™ื™ืฉื•ื ื™ื•ืฆืจ ื”ืคืขืœื” ื—ื“ืฉื”. ืžืจื•ื•ื— ืฉืžื™ืจื” ืคื™ืจื•ืฉื• ืฉืžื™ืจื” ืขืœ ืกืฉืŸ ืœืžืฉืš ืคืจืง ื–ืžืŸ ืžืกื•ื™ื ื•ืžืืคืฉืจ ืื™ื—ื•ืจ ืฉืœ ื ืชื•ื ื™ื ืฉื ืžืฉื›ื™ื ืžืขื‘ืจ ืœืชืงื•ืคืช ื—ื•ืกืจ ื”ืคืขื™ืœื•ืช ืฉืœ ื”ืคื’ื™ืฉื” ืืš ืขื“ื™ื™ืŸ ื ื™ืชืŸ ืœืฆืจืฃ. ื‘ื ื•ืกืฃ, ื”ื”ืชื—ืœื” ื•ื”ืกื™ื•ื ืฉืœ ื”ื”ืคืขืœื” ื”ื—ื“ืฉื” ื”ื ื•ื‘ืขืช ืžื”ืžื™ื–ื•ื’ ืชื•ืืžื™ื ืœื—ื•ืชืžืช ื”ืชืืจื™ืš/ืฉืขื” ื”ืžื•ืงื“ืžืช ื•ื”ืื—ืจื•ื ื” ื‘ื™ื•ืชืจ.

ื”ื‘ื” ื ืกืชื›ืœ ืขืœ ื›ืžื” ืขืจื›ื™ื ืžืฉื™ื˜ืช ื”ืกืคื™ืจื” ื›ื“ื™ ืœืจืื•ืช ื›ื™ืฆื“ ืคื•ืขืœื•ืช ื”ืคืขืœื•ืช (ื˜ื‘ืœื” 5.1).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ืืฉืจ ืจืฉื•ืžื•ืช ืžื’ื™ืขื•ืช, ืื ื• ืžื—ืคืฉื™ื ื”ืคืขืœื•ืช ืงื™ื™ืžื•ืช ืขื ืื•ืชื• ืžืคืชื—, ืฉืขืช ืกื™ื•ื ื ืžื•ื›ื” ืžื—ื•ืชืžืช ื”ืชืืจื™ืš/ืฉืขื” ื”ื ื•ื›ื—ื™ืช - ืžืจื•ื•ื— ื—ื•ืกืจ ืคืขื™ืœื•ืช, ื•ืฉืขืช ื”ืชื—ืœื” ื’ื“ื•ืœื” ืžื—ื•ืชืžืช ื”ืชืืจื™ืš/ืฉืขื” ื”ื ื•ื›ื—ื™ืช + ืžืจื•ื•ื— ื—ื•ืกืจ ื”ืคืขื™ืœื•ืช. ืื ืœื•ืงื—ื™ื ื–ืืช ื‘ื—ืฉื‘ื•ืŸ, ืืจื‘ืขื” ืขืจื›ื™ื ืžื”ื˜ื‘ืœื”. 5.1 ืžืชืžื–ื’ื™ื ืœื”ืคืขืœื” ืื—ืช ื›ื“ืœืงืžืŸ.

1. ืจืฉื•ืžื” 1 ืžื’ื™ืขื” ืจืืฉื•ื ื”, ืื– ืฉืขืช ื”ื”ืชื—ืœื” ืฉื•ื•ื” ืœืฉืขืช ื”ืกื™ื•ื ื•ื”ื™ื 00:00:00.

2. ืœืื—ืจ ืžื›ืŸ, ืžื’ื™ืขื” ื›ื ื™ืกื” 2, ื•ืื ื• ืžื—ืคืฉื™ื ืžืคื’ืฉื™ื ืฉืžืกืชื™ื™ืžื™ื ืœื ืœืคื ื™ 23:59:55 ื•ืžืชื—ื™ืœื™ื ืœื ื™ืื•ื—ืจ ืž-00:00:35. ืื ื• ืžื•ืฆืื™ื ืฉื™ื 1 ื•ืžืฉืœื‘ื™ื ืžืคื’ืฉื™ื 1 ื•-2. ืื ื• ืœื•ืงื—ื™ื ืืช ืฉืขืช ื”ื”ืชื—ืœื” ืฉืœ ืžืคื’ืฉ 1 (ืžื•ืงื“ื ื™ื•ืชืจ) ื•ืืช ืฉืขืช ื”ืกื™ื•ื ืฉืœ ืžืคื’ืฉ 2 (ืžืื•ื—ืจ ื™ื•ืชืจ), ื›ืš ืฉื”ืžืคื’ืฉ ื”ื—ื“ืฉ ืฉืœื ื• ืžืชื—ื™ืœ ื‘-00:00:00 ื•ืžืกืชื™ื™ื ื‘-00: 00:15.

3. ืžื’ื™ืข ืฉื™ื 3, ืื ื—ื ื• ืžื—ืคืฉื™ื ืžืคื’ืฉื™ื ื‘ื™ืŸ 00:00:30 ืœ-00:01:10 ื•ืœื ืžื•ืฆืื™ื. ื”ื•ืกืฃ ืกืฉืŸ ืฉื ื™ ืœืžืคืชื— 123-345-654,FFBE, ืžืชื—ื™ืœ ื•ืžืกืชื™ื™ื ื‘ืฉืขื” 00:00:50.

4. ืžื’ื™ืข ืฉื™ื 4 ื•ืื ื• ืžื—ืคืฉื™ื ืžืคื’ืฉื™ื ื‘ื™ืŸ ื”ืฉืขื•ืช 23:59:45 ืœ-00:00:25. ื”ืคืขื ื ืžืฆืื• ืฉื ื™ ื”ืžืคื’ืฉื™ื 1 ื•-2. ื›ืœ ืฉืœื•ืฉืช ื”ืžืคื’ืฉื™ื ืžืฉื•ืœื‘ื™ื ืœืื—ื“, ืขื ืฉืขืช ื”ืชื—ืœื” ืฉืœ 00:00:00 ื•ืฉืขืช ืกื™ื•ื ืฉืœ 00:00:15.

ืžืžื” ืฉืžืชื•ืืจ ื‘ืกืขื™ืฃ ื–ื”, ื›ื“ืื™ ืœื–ื›ื•ืจ ืืช ื”ื ื™ื•ืื ืกื™ื ื”ื—ืฉื•ื‘ื™ื ื”ื‘ืื™ื:

  • ื”ืคืขืœื•ืช ืื™ื ืŸ ื—ืœื•ื ื•ืช ื‘ื’ื•ื“ืœ ืงื‘ื•ืข. ืžืฉืš ื”ืคื’ื™ืฉื” ื ืงื‘ืข ืœืคื™ ื”ืคืขื™ืœื•ืช ื‘ืชื•ืš ืคืจืง ื–ืžืŸ ื ืชื•ืŸ;
  • ื—ื•ืชืžื•ืช ื”ืชืืจื™ืš/ืฉืขื” ื‘ื ืชื•ื ื™ื ืงื•ื‘ืขื•ืช ืื ื”ืื™ืจื•ืข ื ื•ืคืœ ื‘ืชื•ืš ื”ืคืขืœื” ืงื™ื™ืžืช ืื• ื‘ืžื”ืœืš ืชืงื•ืคืช ืกืจืง.

ื‘ืฉืœื‘ ื”ื‘ื ื ื“ื•ืŸ ื‘ืกื•ื’ ื”ื—ืœื•ืŸ ื”ื‘ื - ื—ืœื•ื ื•ืช "ืžืชื ืคืœื™ื".

ื—ืœื•ื ื•ืช "ืžื•ื˜ื˜ื™ื".

ื—ืœื•ื ื•ืช ื ืคื•ืœื™ื ืœื•ื›ื“ื™ื ืื™ืจื•ืขื™ื ืฉื ื•ืคืœื™ื ื‘ืชื•ืš ืคืจืง ื–ืžืŸ ืžืกื•ื™ื. ืชืืจ ืœืขืฆืžืš ืฉืืชื” ืฆืจื™ืš ืœืœื›ื•ื“ ืืช ื›ืœ ืขืกืงืื•ืช ื”ืžื ื™ื•ืช ืฉืœ ื—ื‘ืจื” ืžืกื•ื™ืžืช ื›ืœ 20 ืฉื ื™ื•ืช, ืื– ืืชื” ืื•ืกืฃ ืืช ื›ืœ ื”ืื™ืจื•ืขื™ื ื‘ืžื”ืœืš ืคืจืง ื”ื–ืžืŸ ื”ื–ื”. ื‘ืชื•ื ื”ืžืจื•ื•ื— ืฉืœ 20 ืฉื ื™ื•ืช, ื”ื—ืœื•ืŸ ืžืชื”ืคืš ื•ืขื•ื‘ืจ ืœืžืจื•ื•ื— ืชืฆืคื™ืช ื—ื“ืฉ ืฉืœ 20 ืฉื ื™ื•ืช. ืื™ื•ืจ 5.14 ืžืžื—ื™ืฉ ืžืฆื‘ ื–ื”.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช, ื›ืœ ื”ืื™ืจื•ืขื™ื ืฉื”ืชืงื‘ืœื• ื‘-20 ื”ืฉื ื™ื•ืช ื”ืื—ืจื•ื ื•ืช ื›ืœื•ืœื™ื ื‘ื—ืœื•ืŸ. ื‘ืชื•ื ืคืจืง ื–ืžืŸ ื–ื” ื ื•ืฆืจ ื—ืœื•ืŸ ื—ื“ืฉ.

ืจื™ืฉื•ื 5.6 ืžืฆื™ื’ ืงื•ื“ ื”ืžื“ื’ื™ื ืืช ื”ืฉื™ืžื•ืฉ ื‘ื—ืœื•ื ื•ืช ืžื˜ืœื˜ืœื™ื ื›ื“ื™ ืœืœื›ื•ื“ ืขืกืงืื•ืช ื‘ืžื ื™ื•ืช ื›ืœ 20 ืฉื ื™ื•ืช (ื ืžืฆื ื‘-src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืขื ื”ืฉื™ื ื•ื™ ื”ืงื˜ืŸ ื”ื–ื” ื‘ืงืจื™ืืช ื”ืฉื™ื˜ื” TimeWindows.of, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื—ืœื•ืŸ ื ืคื™ืœื”. ื“ื•ื’ืžื” ื–ื• ืื™ื ื” ืงื•ืจืืช ืœืžืชื•ื“ื” () ืขื“, ื•ืœื›ืŸ ื™ืฉืžืฉ ืžืจื•ื•ื— ื”ืฉืžื™ืจื” ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉืœ 24 ืฉืขื•ืช.

ืœื‘ืกื•ืฃ, ื”ื’ื™ืข ื”ื–ืžืŸ ืœืขื‘ื•ืจ ืœืื—ืจื•ืŸ ืžื‘ื™ืŸ ืืคืฉืจื•ื™ื•ืช ื”ื—ืœื•ื ื•ืช - ื—ืœื•ื ื•ืช "ืงืคื™ืฆื”".

ื—ืœื•ื ื•ืช ื”ื–ื–ื” ("ืงื•ืคืฆื™ื")

ื—ืœื•ื ื•ืช ื”ื–ื–ื”/ื“ื™ืœื•ื’ื™ื ื“ื•ืžื™ื ืœื—ืœื•ื ื•ืช ื ืคื•ืœื™ื, ืืš ืขื ื”ื‘ื“ืœ ืงืœ. ื—ืœื•ื ื•ืช ื”ื–ื–ื” ืืœ ืชื—ื›ื• ืœืกื•ืฃ ืžืจื•ื•ื— ื”ื–ืžืŸ ืœืคื ื™ ื™ืฆื™ืจืช ื—ืœื•ืŸ ื—ื“ืฉ ืœืขื™ื‘ื•ื“ ืื™ืจื•ืขื™ื ืื—ืจื•ื ื™ื. ื”ื ืžืชื—ื™ืœื™ื ื—ื™ืฉื•ื‘ื™ื ื—ื“ืฉื™ื ืœืื—ืจ ืžืจื•ื•ื— ื”ืžืชื ื” ื”ืงื˜ืŸ ืžืžืฉืš ื”ื—ืœื•ืŸ.

ื›ื“ื™ ืœื”ืžื—ื™ืฉ ืืช ื”ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ื—ืœื•ื ื•ืช ื ืคื™ืœื” ืœืงืคื™ืฆื”, ื ื—ื–ื•ืจ ืœื“ื•ื’ืžื ืฉืœ ืกืคื™ืจืช ืขืกืงืื•ืช ื‘ื‘ื•ืจืกื”. ื”ืžื˜ืจื” ืฉืœื ื• ื”ื™ื ืขื“ื™ื™ืŸ ืœืกืคื•ืจ ืืช ืžืกืคืจ ื”ืขืกืงืื•ืช, ืื‘ืœ ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื—ื›ื•ืช ืืช ื›ืœ ื”ื–ืžืŸ ืœืคื ื™ ืขื“ื›ื•ืŸ ื”ืžื•ื ื”. ื‘ืžืงื•ื ื–ืืช, ื ืขื“ื›ืŸ ืืช ื”ืžื•ื ื” ื‘ืžืจื•ื•ื—ื™ื ืงืฆืจื™ื ื™ื•ืชืจ. ืœื“ื•ื’ืžื”, ืขื“ื™ื™ืŸ ื ืกืคื•ืจ ืืช ืžืกืคืจ ื”ืขืกืงืื•ืช ื›ืœ 20 ืฉื ื™ื•ืช, ืืš ื ืขื“ื›ืŸ ืืช ื”ืžื•ื ื” ื›ืœ 5 ืฉื ื™ื•ืช, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ. 5.15. ื‘ืžืงืจื” ื–ื”, ืื ื• ืžืงื‘ืœื™ื ืฉืœื•ืฉื” ื—ืœื•ื ื•ืช ืชื•ืฆืื•ืช ืขื ื ืชื•ื ื™ื ื—ื•ืคืคื™ื.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืจื™ืฉื•ื 5.7 ืžืฆื™ื’ ืืช ื”ืงื•ื“ ืœื”ื’ื“ืจืช ื—ืœื•ื ื•ืช ื”ื–ื–ื” (ื ืžืฆื ื‘-src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื ื™ืชืŸ ืœื”ืžื™ืจ ื—ืœื•ืŸ ื ืคื™ืœื” ืœื—ืœื•ืŸ ื“ื™ืœื•ื’ ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืงืจื™ืื” ืœืฉื™ื˜ืช advanceBy() . ื‘ื“ื•ื’ืžื” ื”ืžื•ืฆื’ืช, ืžืจื•ื•ื— ื”ืฉืžื™ืจื” ื”ื•ื 15 ื“ืงื•ืช.

ืจืื™ืช ื‘ืกืขื™ืฃ ื–ื” ื›ื™ืฆื“ ืœื”ื’ื‘ื™ืœ ืืช ืชื•ืฆืื•ืช ื”ืฆื‘ื™ืจื” ืœื—ืœื•ื ื•ืช ื–ืžืŸ. ื‘ืคืจื˜, ืื ื™ ืจื•ืฆื” ืฉืชื–ื›ื•ืจ ืืช ืฉืœื•ืฉืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื ืžืกืขื™ืฃ ื–ื”:

  • ื’ื•ื“ืœ ื—ืœื•ื ื•ืช ื”ืคื’ื™ืฉื” ืžื•ื’ื‘ืœ ืœื ืœืคื™ ืคืจืง ื–ืžืŸ, ืืœื ืœืคื™ ืคืขื™ืœื•ืช ื”ืžืฉืชืžืฉ;
  • ื—ืœื•ื ื•ืช "ืžืชื ืคืœื™ื" ืžืกืคืงื™ื ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืื™ืจื•ืขื™ื ื‘ืชื•ืš ืคืจืง ื–ืžืŸ ื ืชื•ืŸ;
  • ืžืฉืš ื”ื–ืžืŸ ืฉืœ ื—ืœื•ื ื•ืช ืงืคื™ืฆื” ืงื‘ื•ืข, ืืš ื”ื ืžืชืขื“ื›ื ื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื•ืขืฉื•ื™ื™ื ืœื”ื›ื™ืœ ืขืจื›ื™ื ื—ื•ืคืคื™ื ื‘ื›ืœ ื”ื—ืœื•ื ื•ืช.

ืœืื—ืจ ืžื›ืŸ, ื ืœืžื“ ื›ื™ืฆื“ ืœื”ืžื™ืจ KTable ื‘ื—ื–ืจื” ืœ-KStream ืขื‘ื•ืจ ื—ื™ื‘ื•ืจ.

5.3.3. ื—ื™ื‘ื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ KStream ื•-KTable

ื‘ืคืจืง 4, ื“ื ื• ื‘ื—ื™ื‘ื•ืจ ืฉื ื™ ืื•ื‘ื™ื™ืงื˜ื™ KStream. ื›ืขืช ืขืœื™ื ื• ืœืœืžื•ื“ ื›ื™ืฆื“ ืœื—ื‘ืจ ืืช KTable ื•-KStream. ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ื ื—ื•ืฅ ืžื”ืกื™ื‘ื” ื”ืคืฉื•ื˜ื” ื”ื‘ืื”. KStream ื”ื•ื ื–ืจื ืฉืœ ืจืฉื•ืžื•ืช, ื•-KTable ื”ื•ื ื–ืจื ืฉืœ ืขื“ื›ื•ื ื™ ืจืฉื•ืžื•ืช, ืื‘ืœ ืœืคืขืžื™ื ื™ื™ืชื›ืŸ ืฉืชืจืฆื” ืœื”ื•ืกื™ืฃ ื”ืงืฉืจ ื ื•ืกืฃ ืœื–ืจื ื”ืจืฉื•ืžื•ืช ื‘ืืžืฆืขื•ืช ืขื“ื›ื•ื ื™ื ืžื”-KTable.

ื‘ื•ืื• ื ื™ืงื— ื ืชื•ื ื™ื ืขืœ ืžืกืคืจ ืขืกืงืื•ืช ื”ื‘ื•ืจืกื” ื•ื ืฉืœื‘ ืื•ืชื ืขื ื—ื“ืฉื•ืช ื‘ื•ืจืกื” ืœืขื ืคื™ื ื”ืจืœื•ื•ื ื˜ื™ื™ื. ื”ื ื” ืžื” ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื›ื“ื™ ืœื”ืฉื™ื’ ื–ืืช ื‘ื”ืชื—ืฉื‘ ื‘ืงื•ื“ ืฉื›ื‘ืจ ื™ืฉ ืœืš.

  1. ื”ืžืจ ืื•ื‘ื™ื™ืงื˜ KTable ืขื ื ืชื•ื ื™ื ืขืœ ืžืกืคืจ ืขืกืงืื•ืช ื”ืžื ื™ื•ืช ืœ-KStream, ื•ืœืื—ืจ ืžื›ืŸ ื”ื—ืœืคืช ื”ืžืคืชื— ื‘ืžืคืชื— ื”ืžืฆื™ื™ืŸ ืืช ืžื’ื–ืจ ื”ืชืขืฉื™ื™ื” ื”ืžืชืื™ื ืœืกืžืœ ื”ืžื ื™ื” ื”ื–ื”.
  2. ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ KTable ืฉืงื•ืจื ื ืชื•ื ื™ื ืžื ื•ืฉื ืขื ื—ื“ืฉื•ืช ื”ื‘ื•ืจืกื”. KTable ื—ื“ืฉ ื–ื” ื™ืกื•ื•ื’ ืœืคื™ ืžื’ื–ืจ ื”ืชืขืฉื™ื™ื”.
  3. ื—ื‘ืจ ืขื“ื›ื•ื ื™ ื—ื“ืฉื•ืช ืขื ืžื™ื“ืข ืขืœ ืžืกืคืจ ื”ืขืกืงืื•ืช ื‘ื‘ื•ืจืกื” ืœืคื™ ืžื’ื–ืจื™ ืชืขืฉื™ื™ื”.

ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ื›ื™ืฆื“ ืœื™ื™ืฉื ืืช ืชื•ื›ื ื™ืช ื”ืคืขื•ืœื” ื”ื–ื•.

ื”ืžืจ KTable ืœ-KStream

ื›ื“ื™ ืœื”ืžื™ืจ KTable ืœ-KStream ืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ืื•ืช.

  1. ืงืจื ืœืฉื™ื˜ืช KTable.toStream()โ€Ž.
  2. ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœืฉื™ื˜ืช KStream.map, ื”ื—ืœืฃ ืืช ื”ืžืคืชื— ื‘ืฉื ื”ืชืขืฉื™ื™ื”, ื•ืœืื—ืจ ืžื›ืŸ ืื—ื–ืจ ืืช ื”ืื•ื‘ื™ื™ืงื˜ TransactionSummary ืžืžื•ืคืข Windowed.

ื ืฉืจืฉืจ ืืช ื”ืคืขื•ืœื•ืช ื”ืœืœื• ื™ื—ื“ ื‘ืื•ืคืŸ ื”ื‘ื (ืืช ื”ืงื•ื“ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (ืจื™ืฉื•ื 5.8).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžื‘ืฆืขื™ื ืคืขื•ืœืช KStream.map, ืžื•ืคืข KStream ื”ืžื•ื—ื–ืจ ืžื—ื•ืœืง ืžื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช ื›ืืฉืจ ื ืขืฉื” ื‘ื• ืฉื™ืžื•ืฉ ื‘ื—ื™ื‘ื•ืจ.

ื”ืฉืœืžื ื• ืืช ืชื”ืœื™ืš ื”ื”ืžืจื”, ื‘ืฉืœื‘ ื”ื‘ื ืขืœื™ื ื• ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ KTable ืœืงืจื™ืืช ื—ื“ืฉื•ืช ืžื ื™ื•ืช.

ื™ืฆื™ืจืช KTable ืœื—ื“ืฉื•ืช ืžื ื™ื•ืช

ืœืžืจื‘ื” ื”ืžื–ืœ, ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ KTable ื“ื•ืจืฉืช ืจืง ืฉื•ืจืช ืงื•ื“ ืื—ืช (ืืช ื”ืงื•ื“ ื ื™ืชืŸ ืœืžืฆื•ื ื‘-src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (ืจื™ืฉื•ื 5.9).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืจืื•ื™ ืœืฆื™ื™ืŸ ื›ื™ ืื™ืŸ ืฆื•ืจืš ืœืฆื™ื™ืŸ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ Serde, ืžื›ื™ื•ื•ืŸ ืฉื”ืžื—ืจื•ื–ืช Serdes ืžืฉืžืฉืช ื‘ื”ื’ื“ืจื•ืช. ื›ืžื• ื›ืŸ, ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืกืคื™ืจื” ื”ืžื•ืงื“ืžืช ื‘ื™ื•ืชืจ, ื”ื˜ื‘ืœื” ืžืชืžืœืืช ื‘ืจืฉื•ืžื•ืช ืžืžืฉ ื‘ื”ืชื—ืœื”.

ื›ืขืช ื ื•ื›ืœ ืœืขื‘ื•ืจ ืœืฉืœื‘ ื”ืื—ืจื•ืŸ โ€“ ื—ื™ื‘ื•ืจ.

ื—ื™ื‘ื•ืจ ืขื“ื›ื•ื ื™ ื—ื“ืฉื•ืช ืขื ื ืชื•ื ื™ ืกืคื™ืจืช ืขืกืงืื•ืช

ื™ืฆื™ืจืช ื—ื™ื‘ื•ืจ ืื™ื ื” ืงืฉื”. ื ืฉืชืžืฉ ื‘ื”ืฆื˜ืจืคื•ืช ืฉืžืืœื” ืœืžืงืจื” ืฉืื™ืŸ ื—ื“ืฉื•ืช ืžืœืื™ ืœืขื ืฃ ื”ืจืœื•ื•ื ื˜ื™ (ืืช ื”ืงื•ื“ ื”ื“ืจื•ืฉ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (ืจื™ืฉื•ื 5.10).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืื•ืคืจื˜ื•ืจ leftJoin ื–ื” ื“ื™ ืคืฉื•ื˜. ื‘ื ื™ื’ื•ื“ ืœ-joins ื‘ืคืจืง 4, ืœื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืฉื™ื˜ืช JoinWindow ืžื›ื™ื•ื•ืŸ ืฉื›ืืฉืจ ืžื‘ืฆืขื™ื ืฆื™ืจื•ืฃ KStream-KTable, ื™ืฉ ืจืง ื›ื ื™ืกื” ืื—ืช ื‘-KTable ืœื›ืœ ืžืคืชื—. ื—ื™ื‘ื•ืจ ื›ื–ื” ืื™ื ื• ืžื•ื’ื‘ืœ ื‘ื–ืžืŸ: ื”ืจืฉื•ืžื” ื ืžืฆืืช ืื• ื‘-KTable ืื• ื ืขื“ืจืช. ื”ืžืกืงื ื” ื”ืขื™ืงืจื™ืช: ื‘ืืžืฆืขื•ืช ืื•ื‘ื™ื™ืงื˜ื™ KTable ืืชื” ื™ื›ื•ืœ ืœื”ืขืฉื™ืจ ืืช KStream ื‘ื ืชื•ื ื™ ื”ืชื™ื™ื—ืกื•ืช ื”ืžืชืขื“ื›ื ื™ื ื‘ืชื“ื™ืจื•ืช ื ืžื•ื›ื” ื™ื•ืชืจ.

ื›ืขืช ื ื‘ื—ืŸ ื“ืจืš ื™ืขื™ืœื” ื™ื•ืชืจ ืœื”ืขืฉื™ืจ ืื™ืจื•ืขื™ื ืž-KStream.

5.3.4. ืื•ื‘ื™ื™ืงื˜ื™ื GlobalKTable

ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ื™ืฉ ืฆื•ืจืš ืœื”ืขืฉื™ืจ ืืช ื–ืจืžื™ ื”ืื™ืจื•ืขื™ื ืื• ืœื”ื•ืกื™ืฃ ืœื”ื ื”ืงืฉืจ. ื‘ืคืจืง 4 ืจืื™ืช ืืช ื”ื—ื™ื‘ื•ืจื™ื ื‘ื™ืŸ ืฉื ื™ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ KStream, ื•ื‘ืกืขื™ืฃ ื”ืงื•ื“ื ืจืื™ืช ืืช ื”ืงืฉืจ ื‘ื™ืŸ KStream ืœ-KTable. ื‘ื›ืœ ื”ืžืงืจื™ื ื”ืœืœื•, ื™ืฉ ืฆื•ืจืš ืœื—ืœืง ืžื—ื“ืฉ ืืช ื–ืจื ื”ื ืชื•ื ื™ื ื‘ืขืช ืžื™ืคื•ื™ ื”ืžืคืชื—ื•ืช ืœืกื•ื’ ืื• ืœืขืจืš ื—ื“ืฉ. ืœืคืขืžื™ื ื”ื—ืœื•ืงื” ืžื—ื“ืฉ ืžืชื‘ืฆืขืช ื‘ืžืคื•ืจืฉ, ื•ืœืคืขืžื™ื ืงืคืงื ืกื˜ืจื™ื ืขื•ืฉื” ื–ืืช ืื•ื˜ื•ืžื˜ื™ืช. ื—ืœื•ืงื” ืžื—ื“ืฉ ื ื—ื•ืฆื” ืžื›ื™ื•ื•ืŸ ืฉื”ืžืคืชื—ื•ืช ื”ืฉืชื ื• ื•ื”ืจืฉื•ืžื•ืช ื—ื™ื™ื‘ื•ืช ืœื”ื’ื™ืข ืœืžืงื˜ืขื™ื ื—ื“ืฉื™ื, ืื—ืจืช ื”ื—ื™ื‘ื•ืจ ื™ื”ื™ื” ื‘ืœืชื™ ืืคืฉืจื™ (ื”ื“ื‘ืจ ื ื“ื•ืŸ ื‘ืคืจืง 4, ื‘ืกืขื™ืฃ "ื—ืœื•ืงื” ืžื—ื“ืฉ ืฉืœ ื ืชื•ื ื™ื" ื‘ืชืช-ืกืขื™ืฃ 4.2.4).

ืœื—ืœื•ืงื” ืžื—ื“ืฉ ื™ืฉ ืขืœื•ืช

ื—ืœื•ืงื” ืžื—ื“ืฉ ืžืฆืจื™ื›ื” ืขืœื•ื™ื•ืช - ืขืœื•ื™ื•ืช ืžืฉืื‘ื™ื ื ื•ืกืคื•ืช ืœื™ืฆื™ืจืช ื ื•ืฉืื™ ื‘ื™ื ื™ื™ื, ืื—ืกื•ืŸ ื ืชื•ื ื™ื ื›ืคื•ืœื™ื ื‘ื ื•ืฉื ืื—ืจ; ื”ืžืฉืžืขื•ืช ื”ื™ื ื’ื ื—ื‘ื™ื•ืŸ ืžื•ื’ื‘ืจ ืขืงื‘ ื›ืชื™ื‘ื” ื•ืงืจื™ืื” ืžื”ื ื•ืฉื ื”ื–ื”. ื‘ื ื•ืกืฃ, ืื ืืชื” ืฆืจื™ืš ืœื”ืฆื˜ืจืฃ ืขืœ ืคื ื™ ื™ื•ืชืจ ืžืืกืคืงื˜ ืื• ืžื™ืžื“ ืื—ื“, ืขืœื™ืš ืœืฉืจืฉืจ ืืช ื”ื—ื™ื‘ื•ืจื™ื, ืœืžืคื•ืช ืืช ื”ืจืฉื•ืžื•ืช ืขื ืžืคืชื—ื•ืช ื—ื“ืฉื™ื ื•ืœื”ืคืขื™ืœ ืฉื•ื‘ ืืช ืชื”ืœื™ืš ื”ื—ืœื•ืงื” ืžื—ื“ืฉ.

ื—ื™ื‘ื•ืจ ืœืžืขืจื›ื™ ื ืชื•ื ื™ื ืงื˜ื ื™ื ื™ื•ืชืจ

ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ื ืคื— ื ืชื•ื ื™ ื”ื”ืชื™ื™ื—ืกื•ืช ืœื—ื™ื‘ื•ืจ ืงื˜ืŸ ื™ื—ืกื™ืช, ื›ืš ืฉืขื•ืชืงื™ื ืฉืœืžื™ื ืฉืœื”ื ื™ื›ื•ืœื™ื ืœื”ืชืื™ื ื‘ืงืœื•ืช ืžืงื•ืžื™ืช ืœื›ืœ ืฆื•ืžืช. ืขื‘ื•ืจ ืžืฆื‘ื™ื ื›ืืœื”, ืงืคืงื ืกื˜ืจื™ื ืžืกืคืง ืืช ื”ื›ื™ืชื” GlobalKTable.

ืžื•ืคืขื™ GlobalKTable ื”ื ื™ื™ื—ื•ื“ื™ื™ื ืžื›ื™ื•ื•ืŸ ืฉื”ืืคืœื™ืงืฆื™ื” ืžืฉื›ืคืœืช ืืช ื›ืœ ื”ื ืชื•ื ื™ื ืœื›ืœ ืื—ื“ ืžื”ืฆืžืชื™ื. ื•ืžื›ื™ื•ื•ืŸ ืฉื›ืœ ื”ื ืชื•ื ื™ื ืงื™ื™ืžื™ื ื‘ื›ืœ ืฆื•ืžืช, ืื™ืŸ ืฆื•ืจืš ืœื—ืœืง ืืช ื–ืจื ื”ืื™ืจื•ืขื™ื ืœืคื™ ืžืคืชื— ื ืชื•ื ื™ ื”ืคื ื™ื” ื›ืš ืฉื”ื•ื ื–ืžื™ืŸ ืœื›ืœ ื”ืžื—ื™ืฆื•ืช. ืืชื” ื™ื›ื•ืœ ื’ื ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจื™ื ืœืœื ืžืคืชื— ื‘ืืžืฆืขื•ืช ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ GlobalKTable. ื”ื‘ื” ื ื—ื–ื•ืจ ืœืื—ืช ื”ื“ื•ื’ืžืื•ืช ื”ืงื•ื“ืžื•ืช ื›ื“ื™ ืœื”ื“ื’ื™ื ืชื›ื•ื ื” ื–ื•.

ื—ื™ื‘ื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ KStream ืœืื•ื‘ื™ื™ืงื˜ื™ GlobalKTable

ื‘ืชืช-ืกืขื™ืฃ 5.3.2, ื‘ื™ืฆืขื ื• ืฆื‘ื™ืจืช ื—ืœื•ืŸ ืฉืœ ืขืกืงืื•ืช ื—ืœื™ืคื™ืŸ ืขืœ ื™ื“ื™ ืงื•ื ื™ื. ื”ืชื•ืฆืื•ืช ืฉืœ ืฆื‘ื™ืจื” ื–ื• ื ืจืื• ื‘ืขืจืš ื›ืš:

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

ืืžื ื ืชื•ืฆืื•ืช ืืœื• ืฉื™ืจืชื• ืืช ื”ืžื˜ืจื”, ืืš ื”ื™ื” ืฉื™ืžื•ืฉื™ ื™ื•ืชืจ ืื™ืœื• ื”ื™ื• ืžื•ืฆื’ื™ื ื’ื ืฉื ื”ืœืงื•ื— ื•ืฉื ื”ื—ื‘ืจื” ื”ืžืœื. ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืืช ืฉื ื”ืœืงื•ื— ื•ืฉื ื”ื—ื‘ืจื”, ืชื•ื›ืœื• ืœื‘ืฆืข ื”ืฆื˜ืจืคื•ืช ืจื’ื™ืœื•ืช, ืืš ืชืฆื˜ืจื›ื• ืœื‘ืฆืข ืฉื ื™ ืžื™ืคื•ื™ื™ ืžืคืชื— ื•ื—ืœื•ืงื” ืžื—ื“ืฉ. ืขื GlobalKTable ืืชื” ื™ื›ื•ืœ ืœื”ื™ืžื ืข ืžื”ืขืœื•ืช ืฉืœ ืคืขื•ืœื•ืช ื›ืืœื”.

ืœืฉื ื›ืš, ื ืฉืชืžืฉ ื‘ืื•ื‘ื™ื™ืงื˜ countStream ืž- Listing 5.11 (ืืช ื”ืงื•ื“ ื”ืžืชืื™ื ื ื™ืชืŸ ืœืžืฆื•ื ื‘-src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) ื•ื ื—ื‘ืจ ืื•ืชื• ืœืฉื ื™ ืื•ื‘ื™ื™ืงื˜ื™ื GlobalKTable.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ื‘ืจ ื“ื™ื‘ืจื ื• ืขืœ ื–ื” ื‘ืขื‘ืจ, ืื– ืื ื™ ืœื ืื—ื–ื•ืจ ืขืœ ื–ื”. ืื‘ืœ ืื ื™ ืžืฆื™ื™ืŸ ืฉื”ืงื•ื“ ื‘ืคื•ื ืงืฆื™ื” toStream().map ืžื•ืคืฉื˜ ืœืื•ื‘ื™ื™ืงื˜ ืคื•ื ืงืฆื™ื” ื‘ืžืงื•ื ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืžื•ื˜ื‘ืข ืœืžืขืŸ ื”ืงืจื™ืื”.

ื”ืฉืœื‘ ื”ื‘ื ื”ื•ื ืœื”ื›ืจื™ื– ืขืœ ืฉื ื™ ืžื•ืคืขื™ื ืฉืœ GlobalKTable (ืืช ื”ืงื•ื“ ื”ืžื•ืฆื’ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (ืจื™ืฉื•ื 5.12).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"

ืฉื™ื ืœื‘ ืฉืฉืžื•ืช ื”ื ื•ืฉืื™ื ืžืชื•ืืจื™ื ื‘ืืžืฆืขื•ืช ืกื•ื’ื™ื ืžืžื•ื™ื ื™ื.

ื›ืขืช, ื›ืฉื™ืฉ ืœื ื• ืืช ื›ืœ ื”ืจื›ื™ื‘ื™ื ืžื•ื›ื ื™ื, ื›ืœ ืฉื ื•ืชืจ ื”ื•ื ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ืœื—ื™ื‘ื•ืจ (ืืฉืจ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงื•ื‘ืฅ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (ืจื™ืฉื•ื 5.13).

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ืœืžืจื•ืช ืฉื™ืฉ ืฉื ื™ ื—ื™ื‘ื•ืจื™ื ื‘ืงื•ื“ ื–ื”, ื”ื ืžืฉื•ืจืฉืจื™ื ื‘ื’ืœืœ ืฉืืฃ ืื—ืช ืžื”ืชื•ืฆืื•ืช ืฉืœื”ื ืœื ืžืฉืžืฉืช ื‘ื ืคืจื“. ื”ืชื•ืฆืื•ืช ืžื•ืฆื’ื•ืช ื‘ืกื•ืฃ ื›ืœ ื”ืคืขื•ืœื”.

ื›ืืฉืจ ืืชื” ืžืคืขื™ืœ ืืช ืคืขื•ืœืช ื”ื”ืฆื˜ืจืคื•ืช ืœืขื™ืœ, ืชืงื‘ืœ ืชื•ืฆืื•ืช ื›ืžื• ืืœื”:

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

ื”ืžื”ื•ืช ืœื ื”ืฉืชื ืชื”, ืื‘ืœ ืชื•ืฆืื•ืช ืืœื• ื ืจืื•ืช ื‘ืจื•ืจื•ืช ื™ื•ืชืจ.

ืื ืืชื” ืกื•ืคืจ ืœืื—ื•ืจ ืœืคืจืง 4, ื›ื‘ืจ ืจืื™ืช ื›ืžื” ืกื•ื’ื™ื ืฉืœ ื—ื™ื‘ื•ืจื™ื ื‘ืคืขื•ืœื”. ื”ื ืจืฉื•ืžื™ื ื‘ื˜ื‘ืœื”. 5.2. ื˜ื‘ืœื” ื–ื• ืžืฉืงืคืช ืืช ื™ื›ื•ืœื•ืช ื”ืงื™ืฉื•ืจื™ื•ืช ื ื›ื•ืŸ ืœื’ืจืกื” 1.0.0 ืฉืœ Kafka Streams; ืžืฉื”ื• ืขืฉื•ื™ ืœื”ืฉืชื ื•ืช ื‘ืžื”ื“ื•ืจื•ืช ืขืชื™ื“ื™ื•ืช.

ื”ืกืคืจ "ื–ืจืžื™ ืงืคืงื ื‘ืคืขื•ืœื”. ื™ื™ืฉื•ืžื™ื ื•ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืœืขื‘ื•ื“ื” ื‘ื–ืžืŸ ืืžืช"
ื›ื“ื™ ืœืกื›ื ืืช ื”ื“ื‘ืจื™ื, ื‘ื•ืื• ื ืกื›ื ืืช ื”ื™ืกื•ื“ื•ืช: ืืชื” ื™ื›ื•ืœ ืœื—ื‘ืจ ื–ืจืžื™ื ืฉืœ ืื™ืจื•ืขื™ื (KStream) ื•ืœืขื“ื›ืŸ ื–ืจืžื™ื (KTable) ื‘ืืžืฆืขื•ืช ืžืฆื‘ ืžืงื•ืžื™. ืœื—ืœื•ืคื™ืŸ, ืื ื’ื•ื“ืœ ื ืชื•ื ื™ ื”ื”ืคื ื™ื” ืื™ื ื• ื’ื“ื•ืœ ืžื“ื™, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืื•ื‘ื™ื™ืงื˜ GlobalKTable. GlobalKTables ืžืฉื›ืคืœื™ื ืืช ื›ืœ ื”ืžื—ื™ืฆื•ืช ืœื›ืœ ืฆื•ืžืช ืืคืœื™ืงืฆื™ื™ืช Kafka Streams, ื•ืžื‘ื˜ื™ื—ื™ื ืฉื›ืœ ื”ื ืชื•ื ื™ื ื–ืžื™ื ื™ื ืœืœื ืงืฉืจ ืœืื™ื–ื• ืžื—ื™ืฆื” ื”ืžืคืชื— ืžืชืื™ื.

ื‘ืฉืœื‘ ื”ื‘ื ื ืจืื” ืืช ืชื›ื•ื ืช ืงืคืงื ื–ืจืžื™, ืฉื‘ื–ื›ื•ืชื” ื ื•ื›ืœ ืœืฆืคื•ืช ื‘ืฉื™ื ื•ื™ื™ ืžืฆื‘ ืžื‘ืœื™ ืœืฆืจื•ืš ื ืชื•ื ื™ื ืžื ื•ืฉื ืงืคืงื.

5.3.5. ืžืฆื‘ ืฉื ื™ืชืŸ ืœืฉืื•ืœ

ื›ื‘ืจ ื‘ื™ืฆืขื ื• ืžืกืคืจ ืคืขื•ืœื•ืช ื”ื›ื•ืœืœื•ืช ืžืฆื‘ ื•ืชืžื™ื“ ืคืœื˜ื ื• ืืช ื”ืชื•ืฆืื•ืช ืœืงื•ื ืกื•ืœื” (ืœืžื˜ืจื•ืช ืคื™ืชื•ื—) ืื• ื›ืชื‘ื ื• ืื•ืชืŸ ืœื ื•ืฉื (ืœืžื˜ืจื•ืช ื™ื™ืฆื•ืจ). ื‘ืขืช ื›ืชื™ื‘ืช ืชื•ืฆืื•ืช ืœื ื•ืฉื, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืฆืจื›ืŸ ืงืคืงื ื›ื“ื™ ืœืฆืคื•ืช ื‘ื”ืŸ.

ืงืจื™ืืช ื ืชื•ื ื™ื ืžื”ื ื•ืฉืื™ื ื”ืœืœื• ื™ื›ื•ืœื” ืœื”ื™ื—ืฉื‘ ื›ืกื•ื’ ืฉืœ ื”ืฉืงืคื•ืช ืžืžื•ืžืฉื•ืช. ืœืขื ื™ื™ื ื ื•, ืื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื”ื’ื“ืจื” ืฉืœ ืชืฆื•ื’ื” ืžืžื•ืžืฉืช ืžื•ื™ืงื™ืคื“ื™ื”: "...ืื•ื‘ื™ื™ืงื˜ ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ืคื™ื–ื™ ื”ืžื›ื™ืœ ืชื•ืฆืื•ืช ืฉืœ ืฉืื™ืœืชื”. ืœื“ื•ื’ืžื”, ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืขื•ืชืง ืžืงื•ืžื™ ืฉืœ ื ืชื•ื ื™ื ืžืจื•ื—ืงื™ื, ืื• ืชืช-ืงื‘ื•ืฆื” ืฉืœ ื”ืฉื•ืจื•ืช ื•/ืื• ื”ืขืžื•ื“ื•ืช ืฉืœ ื˜ื‘ืœื” ืื• ืชื•ืฆืื•ืช ื”ืฆื˜ืจืคื•ืช, ืื• ื˜ื‘ืœืช ืกื™ื›ื•ื ืฉื”ื•ืฉื’ื” ื‘ืืžืฆืขื•ืช ืฆื‘ื™ืจื”" (https://en.wikipedia.org/wiki /Materialized_view).

Kafka Streams ื’ื ืžืืคืฉืจ ืœืš ืœื”ืจื™ืฅ ืฉืื™ืœืชื•ืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช ื‘ื—ื ื•ื™ื•ืช ื”ืžื“ื™ื ื”, ืžื” ืฉืžืืคืฉืจ ืœืš ืœืงืจื•ื ื™ืฉื™ืจื•ืช ืืช ื”ื“ืขื•ืช ืฉื”ืชืžืžืฉื•. ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ ืฉื”ืฉืื™ืœืชื” ืœื—ื ื•ืช ื”ืžื“ื™ื ื” ื”ื™ื ืคืขื•ืœื” ืœืงืจื™ืื” ื‘ืœื‘ื“. ื–ื” ืžื‘ื˜ื™ื— ืฉืœื ืชืฆื˜ืจืš ืœื“ืื•ื’ ืœื”ืคื™ื›ืช ื”ืžืฆื‘ ื‘ื˜ืขื•ืช ืœื‘ืœืชื™ ืขืงื‘ื™ ื‘ื–ืžืŸ ืฉื”ืืคืœื™ืงืฆื™ื” ืฉืœืš ืžืขื‘ื“ืช ื ืชื•ื ื™ื.

ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ื™ืฉื™ืจื•ืช ื‘ื—ื ื•ื™ื•ืช ื”ืžื“ื™ื ื” ื—ืฉื•ื‘ื”. ื–ื” ืื•ืžืจ ืฉืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ื™ื™ืฉื•ืžื™ ืœื•ื— ืžื—ื•ื•ื ื™ื ืžื‘ืœื™ ืฉืชืฆื˜ืจืš ืงื•ื“ื ืœื”ื‘ื™ื ื ืชื•ื ื™ื ืžืฆืจื›ืŸ ืงืคืงื. ื–ื” ื’ื ืžื’ื‘ื™ืจ ืืช ื”ื™ืขื™ืœื•ืช ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉืื™ืŸ ืฆื•ืจืš ืœื›ืชื•ื‘ ื ืชื•ื ื™ื ืฉื•ื‘:

  • ื”ื•ื“ื•ืช ืœืžืงื•ืžื ืฉืœ ื”ื ืชื•ื ื™ื, ื ื™ืชืŸ ืœื’ืฉืช ืืœื™ื”ื ื‘ืžื”ื™ืจื•ืช;
  • ืฉื›ืคื•ืœ ื”ื ืชื•ื ื™ื ื ืžื—ืง, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืœื ื ื›ืชื‘ ืœืื—ืกื•ืŸ ื—ื™ืฆื•ื ื™.

ื”ื“ื‘ืจ ื”ืขื™ืงืจื™ ืฉืื ื™ ืจื•ืฆื” ืฉืชื–ื›ื•ืจ ื”ื•ื ืฉืืชื” ื™ื›ื•ืœ ืœืฉืื•ืœ ืืช ื”ืžืฆื‘ ื™ืฉื™ืจื•ืช ืžืชื•ืš ื”ื™ื™ืฉื•ื ืฉืœืš. ืื™ ืืคืฉืจ ืœื”ืคืจื™ื– ื‘ื”ื–ื“ืžื ื•ื™ื•ืช ืฉื–ื” ื ื•ืชืŸ ืœืš. ื‘ืžืงื•ื ืœืฆืจื•ืš ื ืชื•ื ื™ื ืžืงืคืงื ื•ืœืื—ืกืŸ ืจืฉื•ืžื•ืช ื‘ืžืกื“ ื ืชื•ื ื™ื ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื”, ื ื™ืชืŸ ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ื‘ื—ื ื•ื™ื•ืช ืžืฆื‘ ืขื ืื•ืชื” ืชื•ืฆืื”. ืฉืื™ืœืชื•ืช ื™ืฉื™ืจื•ืช ืœื—ื ื•ื™ื•ืช ื”ืžื“ื™ื ื” ืื•ืžืจื•ืช ืคื—ื•ืช ืงื•ื“ (ืœืœื ืฆืจื›ืŸ) ื•ืคื—ื•ืช ืชื•ื›ื ื” (ืื™ืŸ ืฆื•ืจืš ื‘ื˜ื‘ืœืช ืžืกื“ ื ืชื•ื ื™ื ื›ื“ื™ ืœืื—ืกืŸ ืืช ื”ืชื•ืฆืื•ืช).

ื›ื™ืกื™ื ื• ืœื ืžืขื˜ ืžื”ืฉื˜ื— ื‘ืคืจืง ื”ื–ื”, ืื– ื ืขื–ื•ื‘ ืืช ื”ื“ื™ื•ืŸ ืฉืœื ื• ื‘ืฉืื™ืœืชื•ืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช ื ื’ื“ ื—ื ื•ื™ื•ืช ืžืžืœื›ืชื™ื•ืช ืœืขืช ืขืชื”. ืื‘ืœ ืืœ ื“ืื’ื”: ื‘ืคืจืง 9, ื ื™ืฆื•ืจ ื™ื™ืฉื•ื ืœื•ื— ืžื—ื•ื•ื ื™ื ืคืฉื•ื˜ ืขื ืฉืื™ืœืชื•ืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช. ื”ื•ื ื™ืฉืชืžืฉ ื‘ื›ืžื” ืžื”ื“ื•ื’ืžืื•ืช ืžืคืจืงื™ื ื–ื” ื•ืžืคืจืงื™ื ืงื•ื“ืžื™ื ื›ื“ื™ ืœื”ื“ื’ื™ื ืฉืื™ืœืชื•ืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช ื•ื›ื™ืฆื“ ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ืื•ืชืŸ ืœื™ื™ืฉื•ืžื™ Kafka Streams.

ืชืงืฆื™ืจ

  • ืื•ื‘ื™ื™ืงื˜ื™ KStream ืžื™ื™ืฆื’ื™ื ื–ืจืžื™ื ืฉืœ ืื™ืจื•ืขื™ื, ื”ื“ื•ืžื™ื ืœื”ื•ืกืคื•ืช ืœืžืกื“ ื ืชื•ื ื™ื. ืื•ื‘ื™ื™ืงื˜ื™ KTable ืžื™ื™ืฆื’ื™ื ื–ืจืžื™ ืขื“ื›ื•ืŸ, ื™ื•ืชืจ ื›ืžื• ืขื“ื›ื•ื ื™ื ืœืžืกื“ ื ืชื•ื ื™ื. ื’ื•ื“ืœ ื”ืื•ื‘ื™ื™ืงื˜ KTable ืœื ื’ื“ืœ, ืจืฉื•ืžื•ืช ื™ืฉื ื•ืช ืžื•ื—ืœืคื•ืช ื‘ื—ื“ืฉื•ืช.
  • ืื•ื‘ื™ื™ืงื˜ื™ KTable ื ื“ืจืฉื™ื ืœืคืขื•ืœื•ืช ืฆื‘ื™ืจื”.
  • ื‘ืืžืฆืขื•ืช ืคืขื•ืœื•ืช ื—ืœื•ื ื•ืช, ืืชื” ื™ื›ื•ืœ ืœืคืฆืœ ื ืชื•ื ื™ื ืžืฆื˜ื‘ืจื™ื ืœื“ืœื™ื™ ื–ืžืŸ.
  • ื”ื•ื“ื•ืช ืœืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ GlobalKTable, ืืชื” ื™ื›ื•ืœ ืœื’ืฉืช ืœื ืชื•ื ื™ ื”ืชื™ื™ื—ืกื•ืช ื‘ื›ืœ ืžืงื•ื ื‘ืืคืœื™ืงืฆื™ื”, ืœืœื ืงืฉืจ ืœื—ืœื•ืงื”.
  • ื—ื™ื‘ื•ืจื™ื ื‘ื™ืŸ ืื•ื‘ื™ื™ืงื˜ื™ KStream, KTable ื•-GlobalKTable ืืคืฉืจื™ื™ื.

ืขื“ ื›ื”, ื”ืชืžืงื“ื ื• ื‘ื‘ื ื™ื™ืช ื™ื™ืฉื•ืžื™ Kafka Streams ื‘ืืžืฆืขื•ืช KStream DSL ื‘ืจืžื” ื’ื‘ื•ื”ื”. ืœืžืจื•ืช ืฉื”ื’ื™ืฉื” ื‘ืจืžื” ื”ื’ื‘ื•ื”ื” ืžืืคืฉืจืช ืœืš ืœื™ืฆื•ืจ ืชื•ื›ื ื™ื•ืช ืžืกื•ื“ืจื•ืช ื•ืชืžืฆื™ืชื™ื•ืช, ื”ืฉื™ืžื•ืฉ ื‘ื” ืžื™ื™ืฆื’ ืคืฉืจื”. ืขื‘ื•ื“ื” ืขื DSL KStream ืคื™ืจื•ืฉื” ื”ื’ื“ืœืช ื”ืชืžืฆื™ืชื™ื•ืช ืฉืœ ื”ืงื•ื“ ืฉืœืš ืขืœ ื™ื“ื™ ื”ืคื—ืชืช ืžื™ื“ืช ื”ืฉืœื™ื˜ื”. ื‘ืคืจืง ื”ื‘ื, ื ืกืชื›ืœ ืขืœ ื”-API ืฉืœ ืฆื•ืžืช ื”ืžื˜ืคืœ ื‘ืจืžื” ื ืžื•ื›ื” ื•ื ื ืกื” ืคืฉืจื•ืช ืื—ืจื•ืช. ื”ืชื•ื›ื ื™ื•ืช ื™ื”ื™ื• ืืจื•ื›ื•ืช ื™ื•ืชืจ ืžืžื” ืฉื”ืŸ ื”ื™ื• ื‘ืขื‘ืจ, ืื‘ืœ ื ื•ื›ืœ ืœื™ืฆื•ืจ ื›ืžืขื˜ ื›ืœ ืฆื•ืžืช ืžื˜ืคืœ ืฉืื•ืœื™ ื ืฆื˜ืจืš.

โ†’ ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœ ื”ืกืคืจ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ื›ืชื•ื‘ืช ืืชืจ ื”ืื™ื ื˜ืจื ื˜ ืฉืœ ื”ื”ื•ืฆืื” ืœืื•ืจ

โ†’ ืœื”ื‘ืจื•ื–'ืชื™ืœื™ 25% ื”ื ื—ื” ื‘ืืžืฆืขื•ืช ืงื•ืคื•ืŸ - ื ื—ืœื™ ืงืคืงื

โ† ืขื ื”ืชืฉืœื•ื ืขื‘ื•ืจ ื’ืจืกืช ื”ื ื™ื™ืจ ืฉืœ ื”ืกืคืจ ื™ืฉืœื— ืกืคืจ ืืœืงื˜ืจื•ื ื™ ื‘ืžื™ื™ืœ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”