ΠΠ·Π²Π°Π΄ΠΊΠ°. 5.3. ΠΠ³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
Π ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-ΠΎΠ±Π΅ΡΠ°Π²Π°ΡΠΈΡΠ΅ ΡΠ°ΡΡΠΈ Π½Π° Kafka Streams. ΠΠΎΡΠ΅Π³Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π½Π° Kafka Streams:
- ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°;
- ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
- ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ;
- ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΡΠΈ ΡΡΠ±ΠΈΡΠΈΡ (KStream) ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ (KTable).
Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ΅ ΡΡΠ±Π΅ΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π°Π΅Π΄Π½ΠΎ. Π©Π΅ Π½Π°ΡΡΠΈΡΠ΅ ΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, Π΄ΡΡΠ³Π° ΡΡΡΠ°Ρ ΠΎΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΡΡΠ²ΠΈΡΡ Π½ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΡΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
5.3.1. ΠΠ³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΎΡΡΠ°ΡΠ»ΠΈ
ΠΠ³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ° ΠΆΠΈΠ·Π½Π΅Π½ΠΎΠ²Π°ΠΆΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠΎΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΡΠΎΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΡΠΏΠ²Π°Ρ, ΡΠ΅ΡΡΠΎ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ Π΄Π°Π½Π½ΠΈΡΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π³ΡΡΠΏΠΈΡΠ°Π½ΠΈ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ.
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΠ±Π»Π΅ΡΠ΅Π½ΠΈ ΠΊΠ°ΡΠΎ Π΄Π½Π΅Π²Π΅Π½ ΡΡΡΠ³ΠΎΠ²Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΎΡ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ Π½Π° Π΄ΡΠ»ΠΎΠ²Π΅ Π²ΡΠ² Π²ΡΡΠΊΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ.
ΠΠ° ΡΠ°ΠΊΠΎΠ²Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΡΡΡΠΏΠΊΠΈ Π·Π° ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΡΠΎΡΠΌΠ° (Π² ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ).
- Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΠ³ΠΎΠ²ΠΈΡ Ρ Π°ΠΊΡΠΈΠΈ. Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΠΎΠ±Π΅ΠΊΡ ΠΎΡ ΡΠΈΠΏ StockTransaction ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡ ΠΎΡ ΡΠΈΠΏ ShareVolume. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΡΡ StockTransaction ΡΡΠ΄ΡΡΠΆΠ° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ ΠΈ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ°ΠΌΠΎ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π°ΠΊΡΠΈΠΈ.
- ΠΡΡΠΏΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° 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: ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΠΏ 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 Π·Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ (ΠΏΠΎ Π±ΡΠΎΠΉ ΡΡΡΠ³ΡΠ²Π°Π½ΠΈ Π°ΠΊΡΠΈΠΈ), Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ Π½Π° Π°ΠΊΡΠΈΠΈ Π²ΡΠ² Π²ΡΡΠΊΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ. ΠΠ°ΡΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΡΠ²ΠΎΡΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
- ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ Π΄ΡΡΠ³Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ groupBy, Π·Π° Π΄Π° Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π½Π° ShareVolume ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ.
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ ΠΊΡΠΌ ΡΡΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ShareVolume. Π’ΠΎΠ·ΠΈ ΠΏΡΡ ΠΎΠ±Π΅ΠΊΡΡΡ Π·Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π΅ ΠΎΠΏΠ°ΡΠΊΠ° Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ ΡΠ°Π·ΠΌΠ΅Ρ. Π‘Π°ΠΌΠΎ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠΈ ΠΎΡΡΠ°Π²Π°Ρ Π² ΡΠ°Π·ΠΈ ΠΎΠΏΠ°ΡΠΊΠ° Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ ΡΠ°Π·ΠΌΠ΅Ρ.
- Π‘ΡΠΏΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΊΡΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π½ΠΈΠ· ΠΈ Π²ΡΡΠ½Π΅ΡΠ΅ ΠΏΠ΅ΡΡΠ΅ Π½Π°ΠΉ-ΠΏΡΠΎΠ΄Π°Π²Π°Π½ΠΈ Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ.
- ΠΠ°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½ΠΈΠ· ΠΊΡΠΌ ΡΠ΅ΠΌΠ°ΡΠ°.
ΠΠ° ΡΠΈΠ³. Π€ΠΈΠ³ΡΡΠ° 5.10 ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΠΎΡΠΈΡΡ ΠΊΡΡΠ³ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ.
Π‘Π΅Π³Π°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΌΠ΅ ΡΠ°Π·Π±ΡΠ°Π»ΠΈ ΡΡΠ½ΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠΎΠ·ΠΈ Π²ΡΠΎΡΠΈ ΠΊΡΡΠ³ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π΅ΠΌ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ (ΡΠ΅ Π³ΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (ΡΠΏΠΈΡΡΠΊ 5.4).
Π’ΠΎΠ·ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠΌΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° fixedQueue. Π’ΠΎΠ²Π° Π΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π°Π΄Π°ΠΏΡΠ΅ΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ Π·Π° java.util.TreeSet, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΡΠ²ΠΈΡΠ΅ N ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π² Π½ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΡΠ΅Π΄ Π½Π° Π±ΡΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π°ΠΊΡΠΈΠΈ.
ΠΠ΅ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ groupBy ΠΈ mapValues, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΡΠΏΠΈΡΠ°ΠΌΠ΅ Π½Π° ΡΡΡ
(ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° KTable.toStream, Π·Π°ΡΠΎΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΡΡ KTable.print Π΅ ΠΎΡΡΠ°ΡΡΠ»). ΠΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ KTable Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° aggregate(), ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΠΈΠΌ ΠΌΠ°Π»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΉ.
ΠΠ°ΠΊΡΠΎ ΡΠΈ ΡΠΏΠΎΠΌΠ½ΡΡΠ΅, KTable Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΏΠΎ ΡΠΎΠ²Π°, ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡ ΡΡΡΠΈΡ ΠΊΠ»ΡΡ ΡΠ΅ ΡΡΠΈΡΠ°Ρ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. KTable Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡ Ρ Π½ΠΎΠ²ΠΈΡ. ΠΠ³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½: Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΊΠ»ΡΡ ΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Ρ. ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π·Π°ΠΏΠΈΡ, ΡΠΎΠΉ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΊΠ»Π°ΡΠ° FixedSizePriorityQueue Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅Π» (Π²ΡΠΎΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄), Π½ΠΎ Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄ΡΡΠ³ Π·Π°ΠΏΠΈΡ ΡΡΡ ΡΡΡΠΈΡ ΠΊΠ»ΡΡ, ΡΠΎΠ³Π°Π²Π° ΡΡΠ°ΡΠΈΡΡ Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° subtractor (ΡΡΠ΅ΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄).
ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½Π°ΡΠΈΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡ, FixedSizePriorityQueue, ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π°Π³ΡΠ΅Π³ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Ρ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡ, Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° ΡΡΠΌΠ° ΠΎΡ N ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡ Π½Π°ΠΉ-ΡΡΡΠ³ΡΠ²Π°Π½ΠΈΡΠ΅ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π°ΠΊΡΠΈΠΈ. ΠΡΠ΅ΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡ Π·Π°ΠΏΠΈΡ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠ±ΡΠΈΡ Π±ΡΠΎΠΉ ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°. KTable ΡΠ΅ Π²ΠΈ Π΄Π°Π΄Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠΎΠΈ Π°ΠΊΡΠΈΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π°Ρ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ°ΡΡΠΈΡ ΠΌΠ΅ ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ Π½Π΅ΡΠ°:
- Π³ΡΡΠΏΠΈΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π² KTable ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡ ΠΎΠ±Ρ ΠΊΠ»ΡΡ;
- ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ Ρ ΡΠ΅Π·ΠΈ Π³ΡΡΠΏΠΈΡΠ°Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½Π²ΠΎΠ»ΡΡΠΈΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
ΠΠ° Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, Π΄Π²ΠΈΠΆΠ΅ΡΠΈ ΡΠ΅ ΠΏΡΠ΅Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Kafka Streams ΠΈ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄Π°Π²Π°.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ±ΡΠ°Ρ ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π² ΡΠ°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π°. Π Π³Π»Π°Π²Π° 4 ΠΎΠ±ΡΡΠ΄ΠΈΡ ΠΌΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π° ΠΏΠΎΠΊΠ°Π·Π° Π·Π°ΡΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½ΠΎ - ΡΠΎ Π²ΠΈ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Π΅ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ. ΠΠΎΠΊΠ°Π»Π½ΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈΠ·Π±ΡΠ³Π²Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ-ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΎ ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ³ΡΠ²Π°Π½Π΅ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π²ΡΡΡΠ°Ρ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° KTable, Π° KTable ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, Π·Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Ρ Π½ΠΎΠ²ΠΈ. ΠΠ°ΠΊΡΠΎ Π²ΠΈΠ΄ΡΡ ΡΠ΅, Π½Π΅ Π²ΡΠΈΡΠΊΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΏΠΎ-Π½Π°Π΄ΠΎΠ»Ρ ΠΏΠΎ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° ΠΈ ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ ΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΊΠΎ Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, KTable ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ - ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (windowing operations).
5.3.2. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ ΠΌΠ΅ Ρ "ΠΏΠ»ΡΠ·Π³Π°ΡΠ°ΡΠ°" ΠΊΠΎΠ½Π²ΠΎΠ»ΡΡΠΈΡ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°Π½ΠΎ ΠΎΡ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠ΅ΡΡΠ΅ Π½Π°ΠΉ-ΠΏΡΠΎΠ΄Π°Π²Π°Π½ΠΈ Π°ΠΊΡΠΈΠΈ Π½Π° Π±ΠΎΡΡΠ°ΡΠ°.
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΎΠ²Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ ΠΈ Π½Π°Π²ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅. Π ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π±ΠΎΡΡΠΎΠ²ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ° ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ Ρ Π°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 10 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠ»ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ° ΠΊΠ»ΠΈΠΊΠ½Π°Π»ΠΈ Π²ΡΡΡ Ρ Π½ΠΎΠ² ΡΠ΅ΠΊΠ»Π°ΠΌΠ΅Π½ Π±Π°Π½Π΅Ρ ΠΏΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 15 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ, Π½ΠΎ Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ (Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ).
ΠΡΠ΅Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΎΡΡΠΎΠ²ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΊΡΠΏΡΠ²Π°Ρ
Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π° ΡΠΎΠ½Π΄ΠΎΠ²Π°ΡΠ° Π±ΠΎΡΡΠ° Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΠ³ΠΎΠ²ΡΠΈ - ΠΈΠ»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΡΠΌΠ½ΠΈ ΡΠ°ΠΌΠΎΡΠ½ΠΈ ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠΈ.
ΠΠΌΠ° Π΄Π²Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΡΠΎΠ²Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅. ΠΠ΄Π½Π° ΠΎΡ ΡΡΡ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠ°Π·Π°ΡΠ½ΠΈΡΠ΅ Π»ΠΈΠ΄Π΅ΡΠΈ ΠΊΡΠΏΡΠ²Π°Ρ/ΠΏΡΠΎΠ΄Π°Π²Π°Ρ. ΠΠΊΠΎ ΡΠ΅Π·ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ³ΡΠ°ΡΠΈ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΡΠΈ Π²ΠΈΠ΄ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ΅Π±Π΅ ΡΠΈ, ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΡΡ Π½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ. ΠΡΠΎΡΠ°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Ρ Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΠΈ Π½Π° Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΡΠΊΠΎΠΊΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ ΠΈ Π²Π°ΠΆΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΡΠ΅ΡΠ°ΡΠ°.
Π’ΠΎΠ²Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ:
- ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ ΡΠ΅ΠΌΠ°ΡΠ° Π±ΠΎΡΡΠΎΠ²ΠΈ ΡΠ΄Π΅Π»ΠΊΠΈ;
- Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ ID Π½Π° ΠΊΡΠΏΡΠ²Π°ΡΠ° ΠΈ Π±ΠΎΡΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ». ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° 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 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ΅ΠΎΠ±ΡΡΡΠ°Ρ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ. Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π½ΡΠΌΠ° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° until(), ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΡ Π·Π° Π·Π°ΠΏΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΎΡ 24 ΡΠ°ΡΠ°.
ΠΠ°ΠΉ-Π½Π°ΠΊΡΠ°Ρ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΎΡ ΠΎΠΏΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°, ΠΏΡΠ΅ΡΠΊΠ°ΡΠ°ΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
ΠΠ»ΡΠ·Π³Π°ΡΠΈ ΡΠ΅ ("ΡΠΊΠ°ΡΠ°ΡΠΈ") ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΠ»ΡΠ·Π³Π°ΡΠΈΡΠ΅ ΡΠ΅/ΡΠΊΠ°ΡΠ°ΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° ΠΏΠ°Π΄Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, Π½ΠΎ Ρ ΠΌΠ°Π»ΠΊΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°. ΠΠ»ΡΠ·Π³Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π΅ ΡΠ°ΠΊΠ°Ρ Π΄Π° ΠΈΠ·ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΎΡ Π²ΡΠ΅ΠΌΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ Π½ΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΊΠΎΡΠΎΡΠ½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ. Π’Π΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π½ΠΎΠ²ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅, ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°.
ΠΠ° Π΄Π° ΠΈΠ»ΡΡΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ βΠΏΡΠ΅ΠΎΠ±ΡΡΡΠ°ΡΠΈβ ΠΈ βΡΠΊΠ°ΡΠ°ΡΠΈβ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, Π½Π΅ΠΊΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΠΏΡΠ΅Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Ρ Π°ΠΊΡΠΈΠΈ. ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π» Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π΄Π° Π±ΡΠΎΠΈΠΌ Π±ΡΠΎΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅, Π½ΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ°ΠΊΠ°ΠΌΠ΅ ΠΏΡΠ΅Π· ΡΡΠ»ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΡΠ° Π½Π° ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΈΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ Π±ΡΠΎΠΈΠΌ Π±ΡΠΎΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Π²ΡΠ΅ΠΊΠΈ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½ΠΎ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ 5 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΠ³. 5.15. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Ρ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ ΡΠ΅ Π΄Π°Π½Π½ΠΈ.
ΠΠΈΡΡΠΈΠ½Π³ 5.7 ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ΄Π° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠ»ΡΠ·Π³Π°ΡΠΈ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ (Π½Π°ΠΌΠΈΡΠ° ΡΠ΅ Π² src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).
ΠΡΠ΅ΠΎΠ±ΡΡΡΠ°Ρ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π΅ Π² ΠΏΠΎΠ΄ΡΠΊΠ°ΡΠ°Ρ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° advanceBy(). Π ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΡ Π·Π° Π·Π°ΠΏΠΈΡ Π΅ 15 ΠΌΠΈΠ½ΡΡΠΈ.
ΠΠΈΠ΄ΡΡ ΡΠ΅ Π² ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» ΠΊΠ°ΠΊ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π΄ΠΎ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. ΠΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠΈ Π½Π΅ΡΠ° ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π»:
- ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π½Π΅ ΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅, Π° ΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ;
- ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ "Tumble" Π΄Π°Π²Π°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅;
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° "ΡΠΊΠ°ΡΠ°ΡΠΈΡΠ΅" ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π΅ ΡΠΈΠΊΡΠΈΡΠ°Π½Π°, Π½ΠΎ ΡΠ΅ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ΅ΡΡΠΎ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π½Π°ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ KTable ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² KStream Π·Π° Π²ΡΡΠ·ΠΊΠ°.
5.3.3. Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° KStream ΠΈ KTable ΠΎΠ±Π΅ΠΊΡΠΈ
Π Π³Π»Π°Π²Π° 4 ΠΎΠ±ΡΡΠ΄ΠΈΡ ΠΌΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π²Π° KStream ΠΎΠ±Π΅ΠΊΡΠ°. Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ KTable ΠΈ KStream. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΏΡΠΎΡΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°. KStream Π΅ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ, Π° KTable Π΅ ΠΏΠΎΡΠΎΠΊ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΡΠΌ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡ KTable.
ΠΠ΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΡΠΎΡ Π½Π° Π±ΠΎΡΡΠΎΠ²ΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Ρ Π±ΠΎΡΡΠΎΠ²ΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ Π·Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΡΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π·Π° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΡΠΎΠ²Π°, ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅.
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ KTable ΠΎΠ±Π΅ΠΊΡ Ρ Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² KStream ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΌΠ΅Π½Π΅ΡΠ΅ ΠΊΠ»ΡΡΠ° Ρ ΠΊΠ»ΡΡ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π²Π°Ρ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ°, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠ° Π½Π° Π΄Π°Π΄Π΅Π½ΠΈΡ Π±ΠΎΡΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ».
- Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠ±Π΅ΠΊΡ KTable, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π½ΠΎΠ²ΠΈΠ½Π°ΡΡΠΊΠ° ΡΠ΅ΠΌΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½. Π’Π°Π·ΠΈ Π½ΠΎΠ²Π° KTable ΡΠ΅ Π±ΡΠ΄Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΎΡΡΠ°ΡΠ»ΠΈ.
- Π‘Π²ΡΡΠΆΠ΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΠ½ΠΈΡΠ΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΎΡΡΠ°ΡΠ»ΠΈ.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΠ»Π°Π½ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° KTable Π² KStream
ΠΠ° Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ KTable Π² KStream, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ.
- ΠΠ·Π²ΠΈΠΊΠ°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° KTable.toStream().
- ΠΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° 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, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΠΈΠ·ΡΡ Serde ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΠΠ-Π ΠΠΠΠΠ’Π ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅, ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π° ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ.
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠΏΠΊΠ° - Π²ΡΡΠ·ΠΊΠ°ΡΠ°.
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π½ΠΎΠ²ΠΈΠ½ΠΈ Ρ Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΡΠΎΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠ·ΠΊΠ° Π½Π΅ Π΅ ΡΡΡΠ΄Π½ΠΎ. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π»ΡΠ²ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π² ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π½ΡΠΌΠ° Π±ΠΎΡΡΠΎΠ²ΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ Π·Π° ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ΄Π° Π² src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (ΡΠΏΠΈΡΡΠΊ 5.10-XNUMX).
Π’ΠΎΠ·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ leftJoin Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½ΠΈΡΡΠ° Π² ΠΠ»Π°Π²Π° 4, ΠΌΠ΅ΡΠΎΠ΄ΡΡ JoinWindow Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π°ΡΠΎΡΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° KStream-KTable, ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π·Π°ΠΏΠΈΡ Π² KTable Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΡΡ. Π’Π°ΠΊΠ°Π²Π° Π²ΡΡΠ·ΠΊΠ° Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ: Π·Π°ΠΏΠΈΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π² KTable, ΠΈΠ»ΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. ΠΠ»ΡΡΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ KTable ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ±ΠΎΠ³Π°ΡΠΈΡΠ΅ KStream Ρ ΠΏΠΎ-ΡΡΠ΄ΠΊΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ.
Π ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠ±ΠΎΠ³Π°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΎΡ KStream.
5.3.4. GlobalKTable ΠΎΠ±Π΅ΠΊΡΠΈ
ΠΠ°ΠΊΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅, ΠΈΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΎΠ±ΠΎΠ³Π°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΡΠΌ ΡΡΡ . Π ΠΠ»Π°Π²Π° 4 Π²ΠΈΠ΄ΡΡ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π²Π° KStream ΠΎΠ±Π΅ΠΊΡΠ°, Π° Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π» Π²ΠΈΠ΄ΡΡ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° KStream ΠΈ KTable. ΠΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΏΠΎΡΠΎΠΊΡΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΊΡΠΌ Π½ΠΎΠ² ΡΠΈΠΏ ΠΈΠ»ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ, Π° ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Kafka Streams Π³ΠΎ ΠΏΡΠ°Π²ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ. ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ°Ρ Π² Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ (ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΎ Π² ΠΠ»Π°Π²Π° 4, βΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈβ Π² Π Π°Π·Π΄Π΅Π» 4.2.4).
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ ΠΈΠΌΠ° ΡΠ΅Π½Π°
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ ΠΈΠΌΠ° ΡΠ΅Π½Π° - Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π·Π° ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΡΠ΅ΠΌΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΠ±Π»ΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² Π΄ΡΡΠ³Π° ΡΠ΅ΠΌΠ°; ΡΠΎΠ²Π° ΡΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Π·Π°Π±Π°Π²ΡΠ½Π΅ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΊΡΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ Π°ΡΠΏΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠΈΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅, Π΄Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Ρ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ.
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ
Π Π½ΡΠΊΠΎΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° Π²ΡΡΠ·ΠΊΠ°, Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΈΠΌ ΠΊΠΎΠΏΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠ±Π΅ΡΠ°Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅. ΠΠ° ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΠΈ Kafka Streams ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ»Π°ΡΠ° GlobalKTable.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈΡΠ΅ Π½Π° GlobalKTable ΡΠ° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ, Π·Π°ΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅. Π ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΈΠΌΠ° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΡΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ° Π·Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π΄ΡΠ»ΠΎΠ²Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ Π±Π΅Π· ΠΊΠ»ΡΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ GlobalKTable. ΠΠ΅ΠΊΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ, Π·Π° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ.
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° KStream ΠΎΠ±Π΅ΠΊΡΠΈ ΠΊΡΠΌ GlobalKTable ΠΎΠ±Π΅ΠΊΡΠΈ
Π ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π» 5.3.2 ΠΈΠ·Π²ΡΡΡΠΈΡ ΠΌΠ΅ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π½Π° Π±ΠΎΡΡΠΎΠ²ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΡ ΠΊΡΠΏΡΠ²Π°ΡΠΈ. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠΎΠ²Π° ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Π½Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
{customerId='074-09-3705', stockTicker='GUTM'}, 17
{customerId='037-34-5184', stockTicker='CORK'}, 16
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΏΠΎΡΠ»ΡΠΆΠΈΡ Π° Π½Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π°ΡΠ° ΡΠ΅Π», Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΡΡΡΠΎ Π±ΡΡ Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ. ΠΠ° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΠΈΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄Π²Π΅ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅. Π‘ GlobalKTable ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π°, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡΠ° countStream ΠΎΡ ΡΠΏΠΈΡΡΠΊ 5.11-5 (ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π² src/main/java/bbejeck/chapter_XNUMX/GlobalKTableExample.java) ΠΈ ΡΠ΅ Π³ΠΎ ΡΠ²ΡΡΠΆΠ΅ΠΌ Ρ Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡΠ° GlobalKTable.
ΠΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΠΌΠ΅ ΡΠΎΠ²Π° ΠΈ ΠΏΡΠ΅Π΄ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΠΌ. ΠΠΎ ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° toStream().map Π΅ Π°Π±ΡΡΡΠ°Ρ
ΠΈΡΠ°Π½ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΡΠ΅ΡΠΈΠΌΠΎΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ Π»Π°ΠΌΠ±Π΄Π° ΠΈΠ·ΡΠ°Π·.
Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° Π΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΠ΅ Π΄Π²Π° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π½Π° GlobalKTable (ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π² src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (ΡΠΏΠΈΡΡΠΊ 5.12-XNUMX).
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅.
Π‘Π΅Π³Π°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΡΠ°Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, Π΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π·Π° Π²ΡΡΠ·ΠΊΠ° (ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π² src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (ΡΠΏΠΈΡΡΠΊ 5.13-XNUMX).
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠΌΠ° Π΄Π²Π΅ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄, ΡΠ΅ ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π²Π΅ΡΠΈΠ³Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ Π³ΠΎΡΠ½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΊΠ°ΡΠΎ ΡΠ΅Π·ΠΈ:
{customer='Barney, Smith' company="Exxon", transactions= 17}
Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π΅ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»Π°, Π½ΠΎ ΡΠ΅Π·ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΏΠΎ-ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΈ.
ΠΠΊΠΎ Π±ΡΠΎΠΈΡΠ΅ ΠΠ»Π°Π²Π° 4, Π²Π΅ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΠΈΠ΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. Π’Π΅ ΡΠ° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Π² ΡΠ°Π±Π». 5.2. Π’Π°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΠΎΡΡΠ°Π·ΡΠ²Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡΡΠ° ΠΎΡ Π²Π΅ΡΡΠΈΡ 1.0.0 Π½Π° Kafka Streams; Π½Π΅ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π² Π±ΡΠ΄Π΅ΡΠΈ Π²Π΅ΡΡΠΈΠΈ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ ΠΌΠΈ Π΄Π° Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ: ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ (KStream) ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ (KTable), ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π΅ Π΅ ΡΠ²ΡΡΠ΄Π΅ Π³ΠΎΠ»ΡΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠ° GlobalKTable. GlobalKTable ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ Π΄ΡΠ»ΠΎΠ²Π΅ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Kafka Streams, ΠΊΠ°ΡΠΎ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π½Π° ΠΊΠΎΠΉ Π΄ΡΠ» ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° ΠΊΠ»ΡΡΡΡ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Kafka Streams, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ, Π±Π΅Π· Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ΅ΠΌΠ° Π½Π° Kafka.
5.3.5. ΠΠ·ΠΈΡΠΊΠ²Π°Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅
ΠΠ·Π²ΡΡΡΠ²Π°Π»ΠΈ ΡΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠΌΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π»ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° (Π·Π° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°) ΠΈΠ»ΠΈ ΡΠΌΠ΅ Π³ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π»ΠΈ Π² ΡΠ΅ΠΌΠ° (Π·Π° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ). ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π² ΡΠ΅ΠΌΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Kafka ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», Π·Π° Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅.
Π§Π΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠ΅ΠΌΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° Π²ΠΈΠ΄ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ. ΠΠ° Π½Π°ΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΠΎΡ Wikipedia: β... ΠΎΠ±Π΅ΠΊΡ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅, ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΡΡΠ΅Π· Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅β (https://en.wikipedia.org/wiki /Materialized_view).
Kafka Streams ΡΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΡΡΠ΅ΡΡ Π΄ΡΡΠΆΠ°Π²Π½ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π΄ΡΡΠΆΠ°Π²Π½ΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅. Π’ΠΎΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅, ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π΄Π°Π½Π½ΠΈ.
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π΅ Π²Π°ΠΆΠ½Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠ°Π±Π»ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° ΠΏΡΡΠ²ΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° Kafka. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π°Π½Π½ΠΈ:
- ΠΏΠΎΡΠ°Π΄ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π±ΡΡΠ·ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ;
- Π΄ΡΠ±Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π²ΡΠ² Π²ΡΠ½ΡΠ½Π° ΠΏΠ°ΠΌΠ΅Ρ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π΅, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΎΠ²Π° Π²ΠΈ Π΄Π°Π²Π°, Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°Π΄ΡΠ΅Π½Π΅Π½ΠΈ. ΠΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Kafka ΠΈ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠ° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΡΡ ΡΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΡΡΡΡΠ΅Π½Π΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΊΠΎΠ΄ (Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π») ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠΎΡΡΡΠ΅Ρ (Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ° Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅).
ΠΠΎΠΊΡΠΈΡ ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π·Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ ΡΠΏΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄ΡΡΠΆΠ°Π²Π½ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ. ΠΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΠΉΡΠ΅: Π² Π³Π»Π°Π²Π° 9 ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ°Π±Π»ΠΎ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π’ΠΎΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π² ΡΠ°Π·ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π³Π»Π°Π²ΠΈ, Π·Π° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Kafka Streams.
ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
- ΠΠ±Π΅ΠΊΡΠΈΡΠ΅ Π½Π° KStream ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΏΠΎΡΠΎΡΠΈ ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΡΡΠ°Π²Π½ΠΈΠΌΠΈ Ρ Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. KTable ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΏΠΎΡΠΎΡΠΈ ΠΎΡ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎ-ΡΠΊΠΎΡΠΎ ΠΊΠ°ΡΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° KTable Π½Π΅ Π½Π°ΡΠ°ΡΡΠ²Π°, ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ Ρ Π½ΠΎΠ²ΠΈ.
- ΠΠ±Π΅ΠΊΡΠΈΡΠ΅ KTable ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
- ΠΡΠΎΠ·ΠΎΡΠ΅ΡΡΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ°Π·Π±ΠΈΠ΅ΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ.
- ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ GlobalKTable, ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΡΠ° Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ KStream, KTable ΠΈ GlobalKTable ΠΎΠ±Π΅ΠΊΡΠΈ.
ΠΠΎΡΠ΅Π³Π° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°Ρ ΠΌΠ΅ Π²ΡΡΡ Ρ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Kafka Streams, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ DSL KStream ΠΎΡ Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠΏΡΠ΅ΡΠ½Π°ΡΠΈ ΠΈ ΡΡΠ΅Π³Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ DSL KStream ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎ-ΡΠ±ΠΈΡ Ρ ΡΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ». Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π³Π»Π°Π²Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ API Π½Π° Π²ΡΠ·Π΅Π»Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π½Π°Ρ ΠΏΠΎ-Π΄ΡΠ»Π³ΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΠ΅Π³Π°, Π½ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Ρ Π²ΡΠ·Π΅Π», ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ.
β ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π°
β ΠΠ° Khabrozhiteli 25% ΠΎΡΡΡΡΠΏΠΊΠ° ΠΎΡ ΠΊΡΠΏΠΎΠ½Π° - ΠΠΎΡΠΎΡΠΈ Π½Π° ΠΠ°ΡΠΊΠ°
β ΠΡΠΈ Π·Π°ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° Ρ
Π°ΡΡΠΈΠ΅Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ°, Π½Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΠΊΠ½ΠΈΠ³Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com