เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡" เบชเบฐเบšเบฒเบเบ”เบตเบŠเบฒเบง Khabro! เบ›เบทเป‰เบกเบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเบฐเบ—เบนเป‰. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆ Kafka เปเบฅเบฐ Kafka Stream เป„เบ”เป‰เบ”เบตเบ‚เบถเป‰เบ™. เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบˆเบฑเบเบเบญเบš Kafka เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™: เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Kafka เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™ เปเบฅเบฐเบˆเบปเบงเปƒเปเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฐเปเบชเบ—เบตเปˆเปœเป‰เบฒเบชเบปเบ™เปƒเบˆเป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” Kafka Stream เปƒเบ™เบ›เบถเป‰เบกเบซเบปเบงเบ™เบตเป‰. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Java เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เปเบฅเบฐเบ‚เบฑเป‰เบ™เบชเบนเบ‡เบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบŠเบฑเปˆเบ™ serialization เบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ—เบฑเบเบชเบฐเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Kafka Stream. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ›เบทเป‰เบกเปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Java 8 เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ Java 8 lambda syntax, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™ lambda (เปเบกเป‰เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบญเบทเปˆเบ™) เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.

เบซเบเปเป‰เบกเบฒเบˆเบฒเบ. 5.3. เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ windowing

เปƒเบ™เบžเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ›เบ„เบปเป‰เบ™เบซเบฒเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ Kafka Stream. เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเบงเบกเป€เบญเบปเบฒเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ‚เบญเบ‡ Kafka Stream:

  • เบเบฒเบ™เบชเป‰เบฒเบ‡ topology เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡;
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบ–เบฒเบ™เบฐเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ streaming;
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เป‰เปเบฒเบ‚เปเป‰เบกเบนเบ™;
  • เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เป€เบซเบ”เบเบฒเบ™ (KStream) เปเบฅเบฐเบญเบฑเบšเป€เบ”เบ”เบชเบฐเบ•เบฃเบตเบก (KTable).

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเป€เบญเบปเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบฒเบฎเปˆเบงเบกเบเบฑเบ™. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ windowing, เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ streaming. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‡เปˆเบฒเบเบ”เบฒเบ.

5.3.1. เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบšเป‚เบ”เบเบ‚เบฐเปเบซเบ™เบ‡เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ

เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเบฑเบ™เบ—เบถเบเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบกเบฑเบเบˆเบฐเบšเปเปˆเบžเบฝเบ‡เบžเป. เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบธเปˆเบกเปเบฅเบฐเบชเบปเบกเบ—เบปเบšเบžเบงเบเบกเบฑเบ™.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เบ™เบธเปˆเบ‡เบ‚เบญเบ‡เบžเปเปˆเบ„เป‰เบฒเบกเบทเป‰เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบšเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เปƒเบ™เบซเบผเบฒเบเป†เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบซเป‰เบฒเบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ‚เบฒเบเบฎเบธเป‰เบ™เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ.

เบเบฒเบ™เบฎเบงเบšเบฎเบงเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบžเบทเปˆเบญเปเบ›เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (เป€เบงเบปเป‰เบฒเปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ—เบปเปˆเบงเป„เบ›).

  1. เบชเป‰เบฒเบ‡เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเป€เบœเบตเบเปเบœเปˆเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบšเบ”เบดเบš. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเปเบœเบ™เบ—เบตเปˆเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” StockTransaction เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” ShareVolume. เบˆเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบงเบฑเบ”เบ–เบธ StockTransaction เบกเบต metadata เบเบฒเบ™เบ‚เบฒเบ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบฎเบธเป‰เบ™เบ—เบตเปˆเบ–เบทเบเบ‚เบฒเบ.
  2. เบเบธเปˆเบกเบ‚เปเป‰เบกเบนเบ™ ShareVolume เป‚เบ”เบเบชเบฑเบ™เบเบฒเบฅเบฑเบเบซเบผเบฑเบเบŠเบฑเบš. เป€เบกเบทเปˆเบญเบˆเบฑเบ”เบเบธเปˆเบกเป‚เบ”เบเบชเบฑเบ™เบเบฒเบฅเบฑเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบเปเป‰เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบเปˆเบญเบเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบš. เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™ KStream.groupBy เบ•เบญเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” KGroupedStream. เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡ KTable เป‚เบ”เบเบเบฒเบ™เป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก KGroupedStream.reduce.

เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš KGroupedStream เปเบกเปˆเบ™เบซเบเบฑเบ‡

เบงเบดเบ—เบตเบเบฒเบ™ KStream.groupBy เปเบฅเบฐ KStream.groupByKey เบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ KGroupedStream. KGroupedStream เปเบกเปˆเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบฑเป‰เบ™เบเบฒเบ‡เบ‚เบญเบ‡เบเบฐเปเบชเป€เบซเบ”เบเบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบˆเบฑเบ”เบเบธเปˆเบกเป‚เบ”เบเบเบฐเปเบˆ. เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบกเบฑเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, KGroupedStream เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™ KTable เบชเบฐเป€เบซเบกเบต. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™ KTable เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เบฎเป‰เบฒเบ™เบ‚เบญเบ‡เบฅเบฑเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบฅเบปเบ‡เป„เบ›เปƒเบ™เบ—เปเปˆเบ™เบฑเป‰เบ™.

เบงเบดเบ—เบตเบเบฒเบ™ KTable.groupBy เบชเบปเปˆเบ‡เบ„เบทเบ™ KGroupedTable เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ - เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบเบฐเปเบชเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”, เบˆเบฑเบ”เบเบธเปˆเบกเปƒเบซเบกเปˆเป‚เบ”เบเบฅเบฐเบซเบฑเบ”.

เปƒเบซเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบžเบฑเบเบœเปˆเบญเบ™เบชเบฑเป‰เบ™เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบฎเบนเบš. 5.9, เป€เบŠเบดเปˆเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบฅเบธเป„เบ”เป‰. topology เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ—เปˆเบฒเบ™เบซเบผเบฒเบ.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš topology เบ™เบตเป‰ (เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป„เบŸเบฅเปŒ src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (เบฅเบฒเบเบเบฒเบ™ 5.2).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบซเป‰เป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเปเบ™เบเป‚เบ”เบเบ„เบงเบฒเบกเบซเบเปเป‰เบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบซเบผเบฒเบเบชเบฒเบ. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เปƒเบซเบกเปˆเปƒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ builder.stream: เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” enum AutoOffsetReset.EARLIEST (เบเบฑเบ‡เบกเบต LATEST), เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ Consumed.withOffsetResetPolicy. เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ™เบฑเบšเป€เบฅเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ›เบฑเบšเบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเบชเบณเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ KStream เบซเบผเบท KTable เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™เป€เปœเบทเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เบทเบ™เบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเบˆเบฒเบเบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒ.

GroupByKey เปเบฅเบฐ GroupBy

เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš KStream เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบšเบฑเบ™เบ—เบถเบ: GroupByKey เปเบฅเบฐ GroupBy. เบ—เบฑเบ‡เบชเบญเบ‡เบชเบปเปˆเบ‡เบ„เบทเบ™ KGroupedTable, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบปเบ‡เป„เบชเบงเปˆเบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเป€เบงเบฅเบฒเปƒเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบญเบฑเบ™เปƒเบ”?

เบงเบดเบ—เบตเบเบฒเบ™ GroupByKey เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฐเปเบˆเปƒเบ™ KStream เปเบกเปˆเบ™เบšเปเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบ—เบธเบ‡ "เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆ" เบšเปเปˆเป€เบ„เบตเบเบ–เบทเบเบ•เบฑเป‰เบ‡.

เบงเบดเบ—เบตเบเบฒเบ™ GroupBy เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เบธเบ‡ repartition เบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบ–เบทเบเบ•เป‰เบญเบ‡. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบซเบผเบฑเบ‡เบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™ GroupBy เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.
เบชเบฐเบซเบผเบธเบš: เป€เบกเบทเปˆเบญเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰ GroupByKey เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ GroupBy.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ mapValues โ€‹โ€‹โ€‹โ€‹เปเบฅเบฐ groupBymethod เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”, เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ sum() method (เบžเบปเบšเปƒเบ™ src/main/java/bbejeck/model/ShareVolume.java) (Listing 5.3).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบงเบดเบ—เบตเบเบฒเบ™ ShareVolume.sum เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เปเบฅเปˆเบ™เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบš, เปเบฅเบฐเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธ KTable. . เบ•เบญเบ™เบ™เบตเป‰เป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡ KTable เปเบฅเป‰เบง. เป€เบกเบทเปˆเบญเบงเบฑเบ”เบ–เบธ ShareVolume เบกเบฒเบฎเบญเบ”, เบงเบฑเบ”เบ–เบธ KTable เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบซเบฅเป‰เบฒเบชเบธเบ”. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒเบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เปƒเบ™ shareVolumeKTable เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ KTable เบ™เบตเป‰เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบก (เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบฎเบธเป‰เบ™เบ—เบตเปˆเบŠเบทเป‰เบ‚เบฒเบ) เป€เบžเบทเปˆเบญเบกเบฒเบฎเบญเบ”เบซเป‰เบฒเบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบกเบตเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบชเบนเบ‡เบชเบธเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบˆเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”.

  1. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบธเปˆเบกเบญเบทเปˆเบ™เป‚เบ”เบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบธเปˆเบกเบงเบฑเบ”เบ–เบธ ShareVolume เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เป‚เบ”เบเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ.
  2. เป€เบฅเบตเปˆเบกเบชเบฐเบซเบผเบธเบšเบงเบฑเบ”เบ–เบธ ShareVolume. เป€เบงเบฅเบฒเบ™เบตเป‰เบงเบฑเบ”เบ–เบธเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™เปเบ–เบงเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ„เบปเบ‡เบ—เบตเปˆ. เปƒเบ™เปเบ–เบงเบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ„เบปเบ‡เบ—เบตเปˆเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเบซเป‰เบฒเบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบฎเบธเป‰เบ™เบ—เบตเปˆเบ‚เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰.
  3. เปเบœเบ™เบœเบฑเบ‡เปเบ–เบงเบˆเบฒเบเบงเบฑเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒเป„เบ›เบซเบฒเบ„เปˆเบฒเบชเบฐเบ•เบฃเบดเบ‡เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบซเป‰เบฒเบซเบผเบฑเบเบŠเบฑเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบ•เบปเบงเป€เบฅเบเป‚เบ”เบเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ.
  4. เบ‚เบฝเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบฎเบนเบšเปเบšเบšเบชเบฐเบ•เบฃเบดเบ‡เปƒเบชเปˆเบซเบปเบงเบ‚เปเป‰.

เปƒเบ™เบฎเบนเบš. เบฎเบนเบšเบ—เบต 5.10 เบชเบฐเปเบ”เบ‡เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบฎเบญเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบฎเบญเบšเบ—เบตเบชเบญเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบซเบฑเบ™เป„เบ›เบซเบฒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™ (เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (เบฅเบฒเบเบŠเบทเปˆ 5.4) .

เบ•เบปเบงเปเบ›เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ™เบตเป‰เบกเบตเบ•เบปเบงเปเบ›เบ„เบปเบ‡เบ—เบตเปˆQueue. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเบณเบ™เบปเบ”เป€เบญเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฐเปเบ”เบฑเบšเป€เบ•เบตเบชเบณเบฅเบฑเบš java.util.TreeSet เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบœเบปเบ™ N เป€เบ—เบดเบ‡เบชเบธเบ”เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เบฎเบธเป‰เบ™เบ—เบตเปˆเบŠเบทเป‰เบ‚เบฒเบเบเบฑเบ™.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบซเบฑเบ™เบเบฒเบ™เป‚เบ— groupBy เปเบฅเบฐ mapValues โ€‹โ€‹เปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™ (เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™ KTable.toStream เป€เบžเบฒเบฐเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™ KTable.print เบ–เบทเบเบเบปเบเป€เบฅเบตเบ). เปเบ•เปˆเบ—เปˆเบฒเบ™เบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบซเบฑเบ™เบชเบฐเบšเบฑเบš KTable เบ‚เบญเบ‡ aggregate() เป€เบ—เบทเปˆเบญ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฑเบ™.

เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบทเปˆ, เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰ KTable เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡. KTable เปเบ—เบ™เบฅเบฒเบเบเบฒเบ™เป€เบเบปเปˆเบฒเบ”เป‰เบงเบเบญเบฑเบ™เปƒเปเปˆ. เบเบฒเบ™เบฎเบงเบšเบฎเบงเบกเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™: เบšเบฑเบ™เบ—เบถเบเบซเบผเป‰เบฒเบชเบธเบ”เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบฅเบงเบšเบฅเบงเบก. เป€เบกเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบกเบฒเบฎเบญเบ”, เบกเบฑเบ™เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบŠเบฑเป‰เบ™ FixedSizePriorityQueue เป‚เบ”เบเปƒเบŠเป‰ adder (เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเบชเบญเบ‡เปƒเบ™เบเบฒเบ™เป‚เบ—เบงเบดเบ—เบตเบเบฒเบ™เบฅเบงเบก), เปเบ•เปˆเบ–เป‰เบฒเบกเบตเบšเบฑเบ™เบ—เบถเบเบญเบทเปˆเบ™เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฑเบ™เบ—เบถเบเป€เบเบปเปˆเบฒเบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบซเบฑเบ (เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเบชเบฒเบกเปƒเบ™ เป‚เบ—โ€‹เบซเบฒโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบฅเบงเบกโ€‹)โ€‹.

เบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, FixedSizePriorityQueue, เบšเปเปˆเป„เบ”เป‰เบฅเบงเบกเบกเบนเบ™เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบเบเบธเบ™เปเบˆเบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡ N เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบซเบผเบฑเบเบŠเบฑเบš. เปเบ•เปˆเบฅเบฐเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เบฎเบธเป‰เบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ‚เบฒเบเบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™. KTable เบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบฎเบธเป‰เบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เปƒเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบชเบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™:

  • เบเบธเปˆเบกเบ„เปˆเบฒเปƒเบ™ KTable เป‚เบ”เบเบ„เบตเบ—เบปเปˆเบงเป„เบ›;
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ„เปˆเบฒเบเบธเปˆเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบเบฒเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบœเปˆเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Kafka Streams เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เป€เบญเบปเบฒโ€‹เบšเบฒเบ‡โ€‹เปเบ™เบงโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบ›เบถเบโ€‹เบชเบฒโ€‹เบซเบฒโ€‹เบฅเบทโ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰โ€‹เปƒเบ™โ€‹เบ›เบถเป‰เบกโ€‹เบ™เบตเป‰โ€‹. เปƒเบ™เบšเบปเบ”เบ—เบต 4, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”, เบฅเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เปเบ™เบงเปƒเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบšเบปเบ”เบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบฅเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบˆเบถเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ - เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบซเบฑเบ™เปเบฅเป‰เบง. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปเบฅเบฐเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบผเบทเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบ”เป†, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบŠเบทเปˆเบ‚เบญเบ‡เบฎเป‰เบฒเบ™เบ‚เบญเบ‡เบฅเบฑเบ”. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ KTable, เปเบฅเบฐ KTable เปƒเบŠเป‰เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบเบปเปˆเบฒเบ”เป‰เบงเบเบญเบฑเบ™เปƒเบซเบกเปˆ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบซเบฑเบ™, เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบฅเบปเบ‡เป„เบ›เปƒเบ™เบ—เปเปˆ, เปเบฅเบฐเบ™เบตเป‰เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบชเบฐเบซเบผเบธเบš. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบฅเบฑเบ”โ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹, KTable เบˆเบฐโ€‹เบชเบปเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เบœเบปเบ™โ€‹เบเบฒเบ™โ€‹เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบกเป‰เบงเบ™โ€‹.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบžเบฒเบเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡ - เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ windowing.

5.3.2. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก

เปƒเบ™เบžเบฒเบเบเปˆเบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เป€เบฅเบทเปˆเบญเบ™เปเบฅเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฒเบเบซเบผเบฑเบเบŠเบฑเบšเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เป‚เบ”เบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเป‰เบฒเบซเบผเบฑเบเบŠเบฑเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™.

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฒเบ™เบฎเบงเบšเบฎเบงเบกเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เปเบฅเบฐเบเบฒเบ™เบกเป‰เบงเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™. เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเปเบฅเบเบ›เปˆเบฝเบ™เบเบฑเบšเบฎเบธเป‰เบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเปƒเบ™ 10 เบ™เบฒเบ—เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบซเบผเบทเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เบ„เบฅเบดเบเปƒเบชเปˆเบ›เป‰เบฒเบเป‚เบ„เบชเบฐเบ™เบฒเปƒเบซเบกเปˆเปƒเบ™ 15 เบ™เบฒเบ—เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เปเบ•เปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ (เบซเบ™เป‰เบฒเบ•เปˆเบฒเบ‡เป€เบงเบฅเบฒ).

เบเบฒเบ™เบ™เบฑเบšเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเปเบฅเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบœเบนเป‰เบŠเบทเป‰

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฑเบเบŠเบฑเบšเปƒเบ™เบ—เบปเปˆเบงเบžเปเปˆเบ„เป‰เบฒเบซเบผเบฒเบ - เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบทเบ™เบฑเบเบเบฒเบ™เป€เบ‡เบดเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”.

เบกเบตเบชเบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ™เบตเป‰. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบงเปˆเบฒเบœเบนเป‰เบ™เปเบฒเบ•เบฐเบซเบผเบฒเบ”เบŠเบทเป‰ / เบ‚เบฒเบเปเบกเปˆเบ™เบซเบเบฑเบ‡. เบ–เป‰เบฒเบœเบนเป‰เบซเบผเบดเป‰เบ™เปƒเบซเบเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบ™เบฑเบเบฅเบปเบ‡เบ—เบถเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เป€เบซเบฑเบ™เป‚เบญเบเบฒเบ”, เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เป€เบซเบ”เบœเบปเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบžเบฒเบเปƒเบ™เบ—เบตเปˆเบœเบดเบ”เบเบปเบ”เบซเบกเบฒเบ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบ‚เบญเบ‡เบเบญเบ”เบ‚เบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบญเบเบ‚เปˆเบฒเบงเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฐเปเบชเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฑเบเบŠเบฑเบš;
  • เบˆเบฑเบ”เบเบธเปˆเบกเบšเบฑเบ™เบ—เบถเบเบ‚เบฒเป€เบ‚เบปเป‰เบฒเป‚เบ”เบ ID เบœเบนเป‰เบŠเบทเป‰ เปเบฅเบฐเบชเบฑเบ™เบเบฒเบฅเบฑเบเบซเบผเบฑเบเบŠเบฑเบš. เบเบฒเบ™เป‚เบ—เบซเบฒเบเบธเปˆเบกเป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™ KGroupedStream;
  • เบงเบดเบ—เบตเบเบฒเบ™ KGroupedStream.windowedBy เบ•เบญเบšเบชเบฐเบ•เบฃเบตเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบณเบเบฑเบ”เบขเบนเปˆเปƒเบ™เปœเป‰เบฒเบ•เปˆเบฒเบ‡เป€เบงเบฅเบฒ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เปเบšเบš windowed. เบญเบตเบ‡เบ•เบฒเบกเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ TimeWindowedKStream เบซเบผเบท SessionWindowedKStream เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™;
  • เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™ windowed เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบšเบฑเบ™เบ—เบถเบเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เบเบฒเบ™เบ™เบฑเบšเบ™เบตเป‰;
  • เบเบฒเบ™เบ‚เบฝเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ›เบซเบฒเบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบปเปˆเบ‡เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเปƒเบ™ console เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

topology เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡เบฎเบนเบš. 5.11.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"

เบ›เบฐเป€เบžเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก

เบกเบตเบชเบฒเบกเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปƒเบ™ Kafka Stream:

  • เบเบญเบ‡เบ›เบฐเบŠเบธเบก;
  • โ€œtumblingโ€ (tumbling);
  • เป€เบฅเบทเปˆเบญเบ™ / hopping.

เบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปœเป‰เบฒเบˆเปเป€เบฅเบทเปˆเบญเบ™ เปเบฅเบฐ เป‚เบ”เบ”เปเบกเปˆเบ™เบˆเบณเบเบฑเบ”เป€เบงเบฅเบฒ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปœเป‰เบฒเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เบ–เบทเบเบˆเบณเบเบฑเบ”เป‚เบ”เบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰ - เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เปเบกเปˆเบ™เบเบณเบ™เบปเบ”เบขเปˆเบฒเบ‡เบ”เบฝเบงเป‚เบ”เบเบงเบดเบ—เบตเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบˆเบทเปˆเปเบกเปˆเบ™เบงเปˆเบฒเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เบฐเบ—เบฑเบšเบ•เบฒเบงเบฑเบ™เบ—เบต / เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™, เบšเปเปˆเปเบกเปˆเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” topology เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบžเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก. เบฅเบฐเบซเบฑเบ”เบ„เบปเบšเบ–เป‰เบงเบ™เบˆเบฐเบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”;

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก Session เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบˆเบฒเบเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบšเปเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เป‚เบ”เบเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ›เบฑเบ™เบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰ (เบซเบผเบทเบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฒเบก). เปœเป‰เบฒเบˆเปเป€เบŠเบ”เบŠเบฑเบ™เบ–เบทเบเบˆเบณเบเบฑเบ”เป‚เบ”เบเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง.

เบฎเบนเบšเบ—เบต 5.12 เบชเบฐเปเบ”เบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เปœเป‰เบฒเบ•เปˆเบฒเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบก. เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบ™เป‰เบญเบเบเบงเปˆเบฒเบˆเบฐเบฎเบงเบกเบเบฑเบšเป€เบŠเบ”เบŠเบฑเบ™เบ—เบฒเบ‡เบŠเป‰เบฒเบเบ‚เบญเบ‡เบกเบฑเบ™. เปเบฅเบฐเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบ‚เบงเบฒเบˆเบฐเปเบเบเบเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบงเบ™เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปเบ•เปˆเปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ—เบฑเบšเบ•เบฒเบงเบฑเบ™เบ—เบต/เป€เบงเบฅเบฒเบˆเบฒเบเบฅเบฒเบเบเบฒเบ™เป€เบžเบทเปˆเบญเบเบณเบ™เบปเบ”เบงเปˆเบฒเป€เบŠเบชเบŠเบฑเบ™เปƒเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ›เบฑเบ™เบ‚เบญเบ‡.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฑเบเบŠเบฑเบš

เปƒเบซเป‰เปƒเบŠเป‰เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบเบ›เปˆเบฝเบ™. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฅเบฒเบเบเบฒเบ™ 5.5 (เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ src/main/java/bbejeck/chapter_5/CountingWindowingAndKTableJoinExample.java).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบซเบฑเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบ™ topology เบ™เบตเป‰เปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เปเบ•เปˆเบเบฑเบ‡เบกเบตเบซเบผเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบซเบกเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก (เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบซเบผเบทเบเบฒเบ™เบ™เบฑเบš). เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบฑเบ‡โ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบชเบปเบกโ€‹เบชเบฐโ€‹เบชเบปเบกโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เปเบฅเปˆเบ™โ€‹, เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบฅเบงเบšโ€‹เบฅเบงเบกโ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบเบฒเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบžเบฒเบโ€‹เปƒเบ™โ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹.

เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฒเบเบเบฒเบ™ 5.5 เบˆเบฐเบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบžเบฒเบเปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™. เปƒเบ™เบฎเบนเบš. 5.13 เบเบฒเบ™เบเบฐเบ—เบณเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเป€เบ—เบทเปˆเบญเบฅเบฐเบ‚เบฑเป‰เบ™.

เป‚เบ”เบเบเบฒเบ™เป‚เบ—เบซเบฒ windowedBy(SessionWindows.with(twentySeconds).เบˆเบปเบ™เบเปˆเบงเบฒ(fifteenMinutes)) เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เปœเป‰เบฒเบ•เปˆเบฒเบ‡เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡ 20 เบงเบดเบ™เบฒเบ—เบต เปเบฅเบฐเป„เบฅเบเบฐเบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡ 15 เบ™เบฒเบ—เบต. เป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ 20 เบงเบดเบ™เบฒเบ—เบตเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบฅเบงเบกเป€เบญเบปเบฒเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบžเบฒเบเปƒเบ™ 20 เบงเบดเบ™เบฒเบ—เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบซเบผเบทเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก (เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง) เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบฅเบฐเบšเบธเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบก - เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ™เบฑเบš. เบ–เป‰เบฒเบฅเบฒเบเบเบฒเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเบ•เบปเบเบขเบนเปˆเบ™เบญเบเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เบ—เบฑเบ‡เบชเบญเบ‡เบ”เป‰เบฒเบ™เบ‚เบญเบ‡เบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบต / เป€เบงเบฅเบฒ), เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡เป€เบŠเบ”เบŠเบฑเบ™เปƒเบซเบกเปˆ. เป„เบฅเบเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบฎเบฑเบเบชเบฒเป€เบŠเบ”เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบ‚เปเป‰เบกเบนเบ™เบŠเบฑเบเบŠเป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เป€เบเบตเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เปเบ•เปˆเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เป„เบ”เป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปƒเบซเบกเปˆเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เปเบกเปˆเบ™เบเบปเบ‡เบเบฑเบšเบงเบฑเบ™เบ—เบต / เป€เบงเบฅเบฒเบ—เบตเปˆเป„เบงเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบซเบฅเป‰เบฒเบชเบธเบ”.

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบšเบฒเบ‡เบฅเบฒเบเบเบฒเบ™เบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ™เบฑเบšเป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบŠเบ”เบŠเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ” (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 5.1).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เป€เบกเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบกเบฒเบฎเบญเบ”, เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ”เป‰เบงเบเบเบฐเปเบˆเบ”เบฝเบงเบเบฑเบ™, เป€เบงเบฅเบฒเบชเบดเป‰เบ™เบชเบธเบ”เปœเป‰เบญเบเบเบงเปˆเบฒเบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบต/เป€เบงเบฅเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ - เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เปเบฅเบฐเป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบต/เป€เบงเบฅเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ + เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบŠเบต, เบชเบตเปˆเบฅเบฒเบเบเบฒเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. 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.

เบˆเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เบžเบฒเบเบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒ nuances เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป€เบŠเบ”เบŠเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เปœเป‰เบฒเบˆเปเบ‚เบฐเปœเบฒเบ”เบ„เบปเบ‡เบ—เบตเปˆ. เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบดเบ”เบˆเบฐเบเปเบฒเบžเบฒเบเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡;
  • เบเบฒเบ™เบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบต/เป€เบงเบฅเบฒเปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบเบณเบ™เบปเบ”เบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ•เบปเบเบขเบนเปˆเปƒเบ™เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง เบซเบผเบทเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ•เปเปˆเป„เบ› - เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก "tumbling".

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก "Tumbling".

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ—เบตเปˆเบฅเบปเป‰เบกเบฅเบธเบเบšเบฑเบ™เบ—เบถเบเป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบ•เบปเบเบขเบนเปˆเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบเปเบฒเบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฑเบเบŠเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบ—เบธเบเป† 20 เบงเบดเบ™เบฒเบ—เบต, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เป€เบเบฑเบšเบเปเบฒเป€เบซเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ™เบฑเป‰เบ™. เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบฅเบเบฐเบซเปˆเบฒเบ‡ 20 เบงเบดเบ™เบฒเบ—เบต, เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบกเป‰เบงเบ™เปเบฅเบฐเบเป‰เบฒเบเป„เบ›เป„เบฅเบเบฐเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เปƒเบซเบกเปˆ 20 เบงเบดเบ™เบฒเบ—เบต. เบฎเบนเบš 5.14 เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เป€เบซเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™ 20 เบงเบดเบ™เบฒเบ—เบตเบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก. เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ™เบตเป‰, เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปƒเบซเบกเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™.

เบฅเบฒเบเบŠเบทเปˆ 5.6 เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เปƒเบŠเป‰ windows tumbling เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฑเบเบŠเบฑเบšเบ—เบธเบเป† 20 เบงเบดเบ™เบฒเบ—เบต (เบžเบปเบšเปƒเบ™ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เป‰เบญเบเป†เบ™เบตเป‰เบ•เปเปˆเบเบฑเบšเบเบฒเบ™เป‚เบ—เบ”เป‰เบงเบเบงเบดเบ—เบต TimeWindows.of, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เปœเป‰เบฒเบ•เปˆเบฒเบ‡ tumbling. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบˆเบปเบ™เบเปˆเบงเบฒ (), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป„เบฅเบเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡เบˆเบฐเบ–เบทเบเปƒเบŠเป‰.

เบชเบธเบ”เบ—เป‰เบฒเบ, เบกเบฑเบ™เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเป„เบ›เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก - "hopping" windows .

เป€เบฅเบทเปˆเบญเบ™ ("เป‚เบ”เบ”") เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเป€เบฅเบทเปˆเบญเบ™ / เป€เบฅเบทเปˆเบญเบ™เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ—เบตเปˆเบฅเบปเป‰เบกเบฅเบปเบ‡, เปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเป€เบฅเบทเปˆเบญเบ™เบšเปเปˆเป„เบ”เป‰เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบžเบงเบเป€เบ‚เบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปƒเบซเบกเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเป„เบฅเบเบฐเป€เบงเบฅเบฒเบฅเปเบ–เป‰เบฒเบซเบ™เป‰เบญเบเบเบงเปˆเบฒเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก.

เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฐเป‚เบ›เบ‡เปเบฅเบฐเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก, เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ™เบฑเบšเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเปเบฅเบเบ›เปˆเบฝเบ™เบซเบผเบฑเบเบŠเบฑเบš. เป€เบ›เบปเป‰เบฒเปเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบเบฑเบ‡เบˆเบฐเบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒเป€เบงเบฅเบฒเบ—เบฑเบ‡เปเบปเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบฑเบšเป€เบ”เบ”เป€เบ„เบปเบฒเป€เบ•เบต. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เป€เบ„เบปเบฒเป€เบ•เบตเปƒเบ™เป„เบฅเบเบฐเบ—เบตเปˆเบชเบฑเป‰เบ™เบเบงเปˆเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปƒเบ™เบ—เบธเบเป† 20 เบงเบดเบ™เบฒเบ—เบต, เปเบ•เปˆเบ›เบฑเบšเบ›เบธเบ‡เป€เบ„เบปเบฒเป€เบ•เบตเบ—เบธเบเป† 5 เบงเบดเบ™เบฒเบ—เบต, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบš. 5.15. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบชเบฒเบกเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบฅเบฒเบเบŠเบทเปˆ 5.7 เบชเบฐเปเบ”เบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเป€เบฅเบทเปˆเบญเบ™ (เบžเบปเบšเปƒเบ™ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เบ—เบตเปˆโ€‹เบเบฐโ€‹เบ•เบธเป‰เบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบก hopping เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบเบฑเบšโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™ advanceBy()โ€‹. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡, เป„เบฅเบเบฐเบ›เบฐเบซเบเบฑเบ”เปเบกเปˆเบ™ 15 เบ™เบฒเบ—เบต.

เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบซเบฑเบ™เปƒเบ™เบžเบฒเบเบ™เบตเป‰เบงเบดเบ—เบตเบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบšเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเป€เบงเบฅเบฒ. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ—เปˆเบฒเบ™เบˆเบทเปˆเบชเบฒเบกเบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฒเบเบžเบฒเบเบ™เบตเป‰:

  • เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เบ‚เบญเบ‡โ€‹เบเบญเบ‡โ€‹เบ›เบฐโ€‹เบŠเบธเบกโ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เป‚เบ”เบโ€‹เป„เบฅโ€‹เบเบฐโ€‹เป€เบงโ€‹เบฅเบฒโ€‹, เปเบ•เปˆโ€‹เป‚เบ”เบโ€‹เบเบดเบ”โ€‹เบˆเบฐโ€‹เบเปเบฒโ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹;
  • เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก "tumbling" เปƒเบซเป‰เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เบžเบฒเบเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡;
  • เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ”เบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ–เบทเบเปเบเป‰เป„เบ‚, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เป€เบฅเบทเป‰เบญเบเป†เปเบฅเบฐเบญเบฒเบ”เบกเบตเบฅเบฒเบเบเบฒเบ™เบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™เปƒเบ™เบ—เบธเบเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ›เปˆเบฝเบ™ 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).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™ KStream.map, เบ•เบปเบงเบขเปˆเบฒเบ‡ KStream เบ—เบตเปˆเบชเบปเปˆเบ‡เบกเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเปเบšเปˆเบ‡เปเบเบเบ„เบทเบ™เปƒเปเปˆเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญเบกเบฑเบ™เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปƒเบˆเป€เบซเบฅเบทเป‰เบญเบกเปƒเบช, เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธ KTable เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปˆเบฒเบงเบซเบผเบฑเบเบŠเบฑเบš.

เบเบฒเบ™เบชเป‰เบฒเบ‡ KTable เบชเปเบฒเบฅเบฑเบšเบ‚เปˆเบฒเบงเบซเบผเบฑเบเบŠเบฑเบš

เป‚เบŠเบเบ”เบต, เบเบฒเบ™เบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธ KTable เปƒเบŠเป‰เป€เบงเบฅเบฒเบžเบฝเบ‡เป€เบชเบฑเป‰เบ™เบ”เบฝเบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” (เบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Listing 5.9).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบฅเบฐเบšเบธเบงเบฑเบ”เบ–เบธ Serde, เป€เบžเบฒเบฐเบงเปˆเบฒ string Serdes เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบ™เบฑเบšเบˆเบณ เบ™เบงเบ™เบ„เบฑเป‰เบ‡เบ—เบณเบญเบดเบ”, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบ - เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ‚เปˆเบฒเบงเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ

เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบšเปเปˆเบเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบŠเป‰เบฒเบเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เปˆเบฒเบงเบซเบผเบฑเบเบŠเบฑเบšเบชเปเบฒเบฅเบฑเบšเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡ (เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป„เบŸเบฅเปŒ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (เบฅเบฒเบเบŠเบทเปˆ 5.10).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ leftJoin เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ. เบšเปเปˆเบ„เบทเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบšเบปเบ”เบ—เบต 4, เบงเบดเบ—เบตเบเบฒเบ™ JoinWindow เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก KStream-KTable, เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เป€เบ‚เบปเป‰เบฒเบขเบนเปˆเปƒเบ™ KTable เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฐเปเบˆ. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเบˆเปเบฒเบเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒ: เบšเบฑเบ™เบ—เบถเบเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ KTable เบซเบผเบทเบšเปเปˆเบกเบต. เบเบฒเบ™เบชเบฐเบซเบฅเบธเบšเบ•เบปเป‰เบ™เบ•เป: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ KTable เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบชเบตเบกเบชเป‰เบฒเบ‡ KStream เบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบซเบ™เป‰เบญเบเบฅเบปเบ‡เป€เบฅเบทเป‰เบญเบเป†.

เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เป€เบžเบทเปˆเบญเป€เบชเบตเบกเบชเป‰เบฒเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบˆเบฒเบ KStream.

5.3.4. เบงเบฑเบ”เบ–เบธ GlobalKTable

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบชเบตเบกเบชเป‰เบฒเบ‡เบเบฐเปเบชเป€เบซเบ”เบเบฒเบ™เบซเบผเบทเป€เบžเบตเปˆเบกเบšเปเบฅเบดเบšเบปเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ. เปƒเบ™โ€‹เบšเบปเบ”โ€‹เบ—เบต 4 เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบซเบฑเบ™โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบชเบญเบ‡โ€‹เบงเบฑเบ”โ€‹เบ–เบธ KStream, เปเบฅเบฐโ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เบกเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบซเบฑเบ™โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡ KStream เปเบฅเบฐ KTable เป„เบ”เป‰. เปƒเบ™เบ—เบธเบเป†เบเปเบฅเบฐเบ™เบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบกเบฑเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™เบ„เบทเบ™ เปƒเปเปˆ เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบ„เบตเบเบฑเบšเบ›เบฐเป€เบžเบ”เบซเบผเบทเบกเบนเบ™เบ„เปˆเบฒ เปƒเปเปˆ. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡, เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡ Kafka Stream เป€เบฎเบฑเบ”เบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. Re-partitioning เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฐเปเบˆเป„เบ”เป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ•เป‰เบญเบ‡เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™เบžเบฒเบเปƒเบซเบกเปˆ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰ (เบญเบฑเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เบšเบปเบ”เบ—เบต 4, เปƒเบ™เบžเบฒเบ "เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆ" เปƒเบ™เบžเบฒเบเบเปˆเบญเบ 4.2.4).

เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ„เบทเบ™เปƒเปเปˆเบกเบตเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ

Re-partitioning เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ - เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบซเบปเบงเบ‚เปเป‰เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบญเบทเปˆเบ™; เบกเบฑเบ™เบเบฑเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฝเบ™เปเบฅเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ”เป‰เบฒเบ™เบซเบผเบทเบกเบดเบ•เบด, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบ™เบฎเปˆเบงเบก, เปเบœเบ™เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเบ”เป‰เบงเบเบเบฐเปเบˆเปƒเบซเบกเปˆ, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบเบณเบฅเบฑเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒ

เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ™เป‰เบญเบ, เบชเบฐเบ™เบฑเป‰เบ™เบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบกเบฒเบฐเบเบฑเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบ™เปเบ•เปˆเบฅเบฐ node. เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰, Kafka Streams เปƒเบซเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™ GlobalKTable.

GlobalKTable instances เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเป€เบžเบฒเบฐเบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบˆเปเบฒเบฅเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐ nodes. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐ node, เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบเบฐเปเบชเป€เบซเบ”เบเบฒเบ™เป‚เบ”เบเบเบฐเปเบˆเบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบ—เบธเบเบžเบฒเบ—เบดเบŠเบฑเบ™. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก keyless เป‚เบ”เบเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ GlobalKTable. เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบงเบฑเบ”เบ–เบธ KStream เบเบฑเบšเบงเบฑเบ”เบ–เบธ GlobalKTable

เปƒเบ™เบžเบฒเบเบเปˆเบญเบ 5.3.2, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบœเบนเป‰เบŠเบทเป‰. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

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

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเปƒเบŠเป‰เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบเบงเปˆเบฒเบ–เป‰เบฒเบŠเบทเปˆเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบŠเบทเปˆเป€เบ•เบฑเบกเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบชเบฐเปเบ”เบ‡. เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบŠเบทเปˆเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบŠเบทเปˆเบšเปเบฅเบดเบชเบฑเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, เปเบ•เปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบชเบญเบ‡เปเบœเบ™เบ—เบตเปˆเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆ. เบ”เป‰เบงเบ GlobalKTable เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบฅเบตเบเบฅเป‰เบฝเบ‡เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ countStream object เบˆเบฒเบ Listing 5.11 (เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบกเบฑเบ™เบเบฑเบšเบชเบญเบ‡เบงเบฑเบ”เบ–เบธ GlobalKTable.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบเปˆเบญเบ™เปเบฅเป‰เบง, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบŠเป‰เบณเบญเบตเบ เปเบ•เปˆเบ‚เป‰เบญเบเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ toStream().map เปเบกเปˆเบ™ abstracted เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ function object เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ inline lambda expression เป€เบžเบทเปˆเบญเบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เป„เบ”เป‰.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบชเบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ GlobalKTable (เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป„เบŸเบฅเปŒ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (เบฅเบฒเบเบเบฒเบ™ 5.12).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"

เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเปˆเบฒโ€‹เบŠเบทเปˆโ€‹เบซเบปเบงโ€‹เบ‚เปเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ›เบฐโ€‹เป€เบžเบ” enumeratedโ€‹.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฝเบกเบžเป‰เบญเบก, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ (เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป„เบŸเบฅเปŒ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (เบฅเบฒเบเบŠเบทเปˆ 5.13).

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบชเบญเบ‡เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ•เปˆเบญเบ‡เป‚เบชเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เป€เบกเบทเปˆเบญโ€‹เบ—เปˆเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฎเปˆเบงเบกโ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบ™เบตเป‰โ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

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

เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบšเปเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบ•เปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ™เบฑเบšเบฅเบปเบ‡เป„เบ›เปƒเบ™เบšเบปเบ”เบ—เบต 4, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบซเบผเบฒเบเบ›เบฐเป€เบžเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. 5.2. เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰เบชเบฐเบ—เป‰เบญเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ›เบฑเบ™เบชเบฐเบšเบฑเบš 1.0.0 เบ‚เบญเบ‡ Kafka Stream; เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เบ›เบทเป‰เบก "เบชเบฒเบ Kafka เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡"
เป€เบžเบทเปˆเบญเบชเบฐเบซเบผเบธเบšเบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบผเบธเบšเบžเบทเป‰เบ™เบ–เบฒเบ™: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เป€เบซเบ”เบเบฒเบ™ (KStream) เปเบฅเบฐเบญเบฑเบšเป€เบ”เบ”เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ” (KTable) เป‚เบ”เบเปƒเบŠเป‰เบชเบฐเบ–เบฒเบ™เบฐเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบญเบตเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบšเปเปˆเปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ›, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ GlobalKTable. GlobalKTables เป€เบฎเบฑเบ”เป€เบฅเบทเป‰เบกเบ„เบทเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบชเปˆเปเบ•เปˆเบฅเบฐเป‚เบซเบ™เบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Kafka Stream, เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”เบกเบตเบขเบนเปˆ เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เบงเปˆเบฒเบเบฒเบ™เปเบšเปˆเบ‡เบžเบฒเบ—เบดเบŠเบฑเบ™เบˆเบฐเบเบปเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบ”.

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” Kafka Stream, เบ‚เบญเบšเปƒเบˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบฅเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰ Kafka.

5.3.5. เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเบญเบšเบ–เบฒเบกเป„เบ”เป‰

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฑเบ”เปเบฅเบฐเบชเบฐเป€เบซเบกเบตเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฑเบš console (เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ) เบซเบผเบทเบ‚เบฝเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡ (เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”). เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ›เบซเบฒเบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ Kafka เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™.

เบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธ. เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบกเบธเบกเป€เบšเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบˆเบฒเบเบงเบดเบเบดเบžเบตเป€เบ”เบ: "... เบงเบฑเบ”เบ–เบธเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ, เบซเบผเบทเบŠเบธเบ”เบเปˆเบญเบเบ‚เบญเบ‡เปเบ–เบงเปเบฅเบฐ / เบซเบผเบทเบ„เปเบฅเปเบฒเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบผเบทเบœเบปเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก, เบซเบผเบทเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฐเบซเบผเบธเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก" (https://en.wikipedia.org/wiki /materialized_view).

Kafka Streams เบเบฑเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ‚เบญเบ‡เบฅเบฑเบ”, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเบเบปเบ‡. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเบฑเบšเบฎเป‰เบฒเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปเบšเบšเบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฑเบ”เบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™.

เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ‚เบญเบ‡เบฅเบฑเบ”เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ dashboard เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ Kafka. เบกเบฑเบ™เบเบฑเบ‡เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡:

  • เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป„เบง;
  • เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ‚เบฝเบ™เปƒเบชเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบ.

เบชเบดเปˆเบ‡เบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบˆเบทเปˆเปเบกเปˆเบ™เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบชเบญเบšเบ–เบฒเบกเป‚เบ”เบเบเบปเบ‡เบˆเบฒเบเบžเบฒเบเปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เป‚เบญเบเบฒเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป€เบเบตเบ™เป„เบ”เป‰. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบšเปเบฅเบดเป‚เบžเบเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ Kafka เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบญเบšเบ–เบฒเบกเบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ‚เบญเบ‡เบฅเบฑเบ”เบ”เป‰เบงเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ”เบฝเบงเบเบฑเบ™. เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ‚เบญเบ‡เบฅเบฑเบ”เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบซเบ™เป‰เบญเบ (เบšเปเปˆเบกเบตเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ) เปเบฅเบฐเบŠเบญเบšเปเบงเบซเบ™เป‰เบญเบ (เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš).

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเบงเบกเป€เบญเบปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบšเบปเบ”เบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเบญเบเบˆเบฒเบเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเบ•เปเปˆเบเบฑเบšเบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ‚เบญเบ‡เบฅเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เปเบ•เปˆเบขเปˆเบฒเบเบฑเบ‡เบงเบปเบ™: เปƒเบ™เบšเบปเบ”เบ—เบต 9, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ dashboard เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบšเบšเป‚เบ•เป‰เบ•เบญเบš. เบกเบฑเบ™เบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบเบšเบปเบ”เบ™เบตเป‰เปเบฅเบฐเบšเบปเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™เปƒเบชเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Kafka Stream.

Summary

  • เบงเบฑเบ”เบ–เบธ KStream เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบชเบฐเบ•เบฃเบตเบกเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™, เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เปเบŠเบเปƒเบชเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบงเบฑเบ”เบ–เบธ KTable เบชเบฐเปเบ”เบ‡เป€เบ–เบดเบ‡เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”, เบ„เบทเบเบฑเบšเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ KTable เบšเปเปˆเป€เบ•เบตเบšเป‚เบ•, เบšเบฑเบ™เบ—เบถเบเป€เบเบปเปˆเบฒเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบญเบฑเบ™เปƒเบซเบกเปˆ.
  • เบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบฑเบ”เบ–เบธ KTable เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ windowing, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฑเบ‡เป€เบงเบฅเบฒ.
  • เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบงเบฑเบ”เบ–เบธ GlobalKTable, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบธเบเบšเปˆเบญเบ™เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™.
  • เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบงเบฑเบ”เบ–เบธ KStream, KTable เปเบฅเบฐ GlobalKTable เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Kafka Stream เป‚เบ”เบเปƒเบŠเป‰ KStream DSL เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เป‰เบฒ. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš DSL KStream เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบก. เปƒเบ™เบšเบปเบ”เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡ API node handler เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเปเบฅเบฐเบฅเบญเบ‡เบเบฒเบ™เบ„เป‰เบฒเบญเบทเปˆเบ™เป†. เป‚เบ›เบฃเปเบเบกเบ•เปˆเบฒเบ‡เป†เบˆเบฐเบเบฒเบงเบเบงเปˆเบฒเบ—เบตเปˆเป€เบ„เบตเบเป€เบ›เบฑเบ™เบกเบฒ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡ node handler เป€เบเบทเบญเบšเบ—เบธเบเบญเบฑเบ™เบ—เบตเปˆเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™.

โ†’ เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบ›เบถเป‰เบกเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เบ—เบตเปˆ เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบœเบนเป‰เป€เบœเบตเบเปเบœเปˆ

โ†’ เบชเปเบฒเบฅเบฑเบš Habrozhiteli เบชเปˆเบงเบ™เบซเบผเบธเบ” 25% เป‚เบ”เบเปƒเบŠเป‰เบ„เบนเบ›เป‹เบญเบ‡ - เบเบฐเปเบช Kafka

โ†’ เป€เบกเบทเปˆเบญเบˆเปˆเบฒเบเป€เบ‡เบดเบ™เปƒเบซเป‰เบเบฑเบšเบชเบฐเบšเบฑเบšเป€เบˆเป‰เบเบ‚เบญเบ‡เบ›เบถเป‰เบก, เบ›เบถเป‰เบกเบญเบตเป€เบฅเบฑเบเป‚เบ—เบฃเบ™เบดเบเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบ—เบฒเบ‡เบญเบตเป€เบกเบฅ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™