á
á¬á¡á¯ááºáááºáá
áºá¡á¯ááºá áá¬áá¬ááŒááºáá»ááºááᯠáááºáááºáá±á¬áºááŒááŒááºáž-
Message ááœá²á
á¬ážáá»á¬ážááᯠáá¬ážáááºááŒááºážá
áá±ážáá¬ážáá°- Jakub Korabá áá¯ááºáá±áá°- O'Reilly Media, Inc.á áá¯ááºáá±ááá·áºáááºá
áœá²- ááœááºá 2017á ISBN: 9781492049296á
ááááºáá¬áá¬ááŒááºá¡ááá¯ááºáž-
á¡ááá»áž 3
Kafka
Kafka ááẠááá¬ážááá¯ážáá» áááºáá±á·áá»áºááœá²á á¬ážáá»á¬ážá ááá·áºáááºáá»ááºá¡áá»áá¯á·ááᯠááŸá±á¬ááºááŸá¬ážáááºááŸáá·áº á á¬áá»ááºááŸá¬ 28 ááŸá "á¡áááºááŸáá·áºá¡ááœááº" á¡á±á¬ááºááŸá á€á á¬á¡á¯ááºááœáẠáá±á¬áºááŒáá¬ážááá·áº ááá°áá®áá±á¬ point-to-point á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯áá»á¬ážá¡ááœáẠáááºáá±á·ááœá²á á¬ážá¡áá»á¬ážá¡ááŒá¬ážááᯠáááºááŸááºááẠááŸá±á¬ááºááŒááºááẠLinkedIn ááœáẠáá®ááœááºáá²á·áááºá .á¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á áá»á¬ážááœáẠLinkedIn ááẠá á¬áá»ááºááŸá¬ ááá áºáá»á¬ážááŸáá·áº áááºáá±á¬ááºááŒááºážááŸááºáááºážáá»á¬ážáá²á·ááá¯á· á¡ááœááºááŒá®ážáá¬ážáá±á¬ áá±áá¬ááá¬áááᯠáá áºáááºážááœá¬ážááá·áºááœááºážááŒááºážá¡áá±á«áº ááŸá®ááá¯áá±áááŒá®áž ááá¯áá±áá¬ááᯠáá¯ááºáá¯ááºáá° ááá¯á·ááá¯áẠá¡ááŒá¬ážá á¬ážáá¯á¶ážáá°áá»á¬ážá áá¯ááºáá¯ááºá áœááºážá¡á¬ážááᯠáááááá¯ááºá á±áá² á áá áºáá»á¬ážá áœá¬ááŒáá·áº á¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáá¬ážáááºá ááááºáá±á¬á· Kafka áááºááŸááááŒááºážá¡ááŒá±á¬ááºážáááºážááŸá¬ Universal Data Pipeline ááŸáá±á¬áºááŒáá±á¬ á á¬ááá¯áá±ážááá¯á·ááŒááºážááá¯ááºáᬠáááá¯áá¬áá¯á¶á á¶ááᯠááá°áááºááŒá áºáááºá
á€á¡áá¯á¶ážá áœááºáá±á¬áááºážááá¯ááºááá¯áá±ážá á¡ááŒá¬ážáá±á¬ááá¯á¡ááºáá»ááºáá»á¬ážááẠááá¬áá¡áá»á±á¬ááºáá±á«áºáá±á«ááºáá¬áááºá Kafka áááº-
- á¡ááœááºááŒááºáá«á á±á
- áááºáá±á·áá»áºáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá«ááœáẠááŸáá¯ááºážááŸá¯ááºážááá¯áá±ážáááºá
- Publisher-Subscriber ááŸáá·áº Point-to-Point áá±á¬áºáááºáá»á¬ážááᯠáá¶á·ááá¯ážáá«á
- á á¬ážáá¯á¶ážáá°áá»á¬ážááᯠáá±á«ááºážááá·áºááŒááºážááŒáá·áº á¡ááŸáááºááá»áŸá±á¬á·áá«ááŸáá·áºá á¥ááá¬á¡á¬ážááŒáá·áºá áŠážáááºáá¬áá±á«áºááŸá á á¬ážáá¯á¶ážáá°á¡áá±á¡ááœáẠááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ áááºážá á®ááŒááºážááŸáá·áº ActiveMQ ááŸá áá±á«ááºážá ááºááŸá áºáá¯áá¯á¶ážá á áœááºážáá±á¬ááºáááºááẠáá»áááºážááœá¬ážáá«áááºá
- á¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áᬠááŒá áºá¡á±á¬ááºá áááºáá±á·áá»áºáá»á¬áž áááºááŸááá±áá±á¬ ááœá²á á¬ážáá áºáŠážááẠá¡ááŒáá·áºáá¯á¶ážáá áºááºá¡ááŒááºááŸá¯ááºážááŒáá·áºáᬠáá¯ááºáá±á¬ááºááá¯ááºáá«áá á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáááºá¡ááœáẠááœá²á á¬ážáá áºáá¯á¡ááœáẠá á¶ááá°áá¬áá áºáá¯ááẠáá»á±á¬áºááœááºááœá¬ážááŒááºážááẠá¡áááá¹áá¬ááºááŸááá«áááºá
- áááºáá±á·áá»áºáá»á¬ážááᯠááááºážáááºážááŒááºážááŸáá·áº ááŒááºáááºááá°ááŒááºážááá¯á· áááºáá±á¬ááºááœáá·áºááᯠááá·áºáááºáá«á
á€á¡áá¬á¡á¬ážáá¯á¶ážááá¯á¡á±á¬ááºááŒááºááẠKafka ááẠáá±á¬ááºáááºáá»á¬ážááŸáá·áº á
á¬ááá¯áá±ážááá¯á·ááœá²á
á¬ážáá»á¬ážá á¡áááºážááá¹áááŸáá·áº áá¬áááºáá»á¬ážááᯠááŒááºáááºáááºááŸááºáá±ážááá·áº áááá¯áá¬ááá¬ááᯠáááºáá¶áá»áá·áºáá¯á¶ážáá²á·áááºá JMS áá±á¬áºáááºááẠááœá²á
á¬ážááᯠáŠážáááºáá¬ážáá±á¬ááŒá±á¬áá·áº ááœá²á
á¬ážááẠáááºáá±á·áá»áºáá»á¬áž ááŒáá·áºáá±ááẠáá¬áááºááŸáááŒá®áž áá±á¬ááºáááºáá»á¬ážá áááºáá±á·áá»áºááá¯á·ááŒááºážááŸáá·áº áááºáá¶ááŒááºážá¡ááœáẠá
áááºáá°áá¯á¶áá¬ááŸááá±á¬á·áááºá á¡ááŒá¬ážáá
áºáááºááœááºá Kafka ááẠáá¯á¶ážá
áœá²áá°áááá¯ááŒá¯ááŒá
áºááŒá®ážá áá¯á¶ážá
áœá²áá°ááẠá¡ááœááºáá»ááºááŒááºááŒá®áž á¡ááœááºá¡á
á¬ážááŒá®ážáá¬ážáá±á¬ ááœá²á
á¬ážáá
áºáŠážááŸáá·áº áá²ááŸááºááŒááºážáá²á·ááá¯á·áá±á¬ ááá¬ážááá¯ážáá»ááœá²á
á¬ážáá»á¬ážá á¡ááºá¹áá«áááºáá»á¬ážá
áœá¬ááᯠáá¯á¶ážá
áœá²áá°áá»á¬ážáᶠááá¬ážáá»áŸáá
áœá¬ ááŒáá·áºáá±ááŒááºážáá²á·ááá¯á·áá±á¬ ááá¯ážáá¬ááœá²á
á¬ážáá»á¬ážá á¡ááºá¹áá«áááºáá»á¬ážááᯠáá¶áá°áá¬ážáááºá ááá¬ážááá¯ážáá» á
á¬ááá¯áá±ážááá¯á·ááŸá¯á
áá
áºáá»á¬ážááŒáá·áº áá¯ááºááá¯ááºáá°ážáá°áá»á¬ážá¡ááœááºá Kafka ááŸáá·áº áá¯ááºáá±á¬ááºáá¬ááœáẠá¡ááŒá±áá¶áá»áá±á¬ ááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááá¯á¡ááºáá«áááºá
á€á¡ááºáá»ááºáá®áá¬áŠážáááºáá»ááºááẠááá¬ážááá¯ážáá» ááœá²á
á¬ážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á ááá¬ááá»á¬ážááŒá¬ážáá±á¬ á¡ááŸá¬á
á¬áá»á¬ážááŒáá·áº áá±ážááá¯á·ááá¯ááºááá·áº áááºáá±á·ááºá»á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºáá®ážááá¯ááºá
á±áá²á·áááºá áá»áœááºá¯ááºááá¯á·ááŒááºáá±áááá·áºá¡ááá¯ááºážá á€áá»ááºážáááºááŸá¯ááẠá¡áá±ážá¡áá°áá»á¬ážááŸáá·áº áá«áááºáá¬áááºá ááá¯ááá¯áááºááŸá¬ Kafka ááẠá¡áá»áá¯á·áá±á¬á¡áá¯ááºááá¬áááŸáá·áº ááá·áºááœááºážáá¬ážáá±á¬áá±á¬á·ááºáá²ááºáá»á¬ážá¡ááœáẠáááá·áºáá»á±á¬áºááŒá±á¬ááºáž ááá¯ááá¯áááºá
áá±á«ááºážá ááºážáá¬ážáá±á¬ áŠážáááºáá¬áá¯á¶á á¶
á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ááá¯á¡ááºáá»ááºáá»á¬ážááá¯ááŒáá·áºáááºážáááºá¡ááœáẠKafka ááẠáŠážáááºáá¬áá áºáá»áá¯ážá¡á±á¬ááºááœáẠáá¯ááºáá±-á á¬áááºážááœááºážááŒááºážááŸáá·áº point-to-point á á¬ááá¯áá±ážááá¯á·ááŒááºážááᯠáá±á«ááºážá ááºáá¬ážááẠ- á¡ááŒá±á¬ááºážá¡áá¬. "áá±á«ááºážá ááº" áá°áá±á¬ á áá¬ážáá¯á¶ážááẠ(á¡ááŒá±á¬ááºážá¡áá¬ááŸ) á á¬áááºááŒááºážá០áá¬ááŸááºáá¶ááá¯ááºáá±á¬ á¡áá¶ááœáŸáá·áºááá¹ááá¬ážá¡á¬áž áááºááœáŸááºážááá·áº áááºáá±á·áá»áºá áá áºááŒáá·áº á¡áá¯ááºáá¯ááºáá°ážáá°áá»á¬ážááŸáá·áº áááºážááẠááŸá¯ááºááœá±ážá á±áá«áááºá á€á á¬á¡á¯ááºá áááá«ááºážááœáẠáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž Kafka áá±á«ááºážá ááºáá»á¬ážááᯠáá±á«ááºážá ááºááœá¬ážááá·áº á¡áá»áá¯ážá¡á á¬ážá¡ááŒá ẠáááºááŸááºááá·áºáááºá
á€á¡áááºážááááºáá»ááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá¬ážáááºážááŒáá·áº ááá±á¬áºááŒáá«áá "á¡ááŒá±á¬ááºážá¡áá¬" áá°áá±á¬ áá±á«áá¬áááẠKafka áá±á«ááºážá ááºááᯠáááºááœáŸááºážáááºááŒá áºáá«áááºá
á¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž áááºááá¯á· ááŒá¯áá°áá¯á¶ááŸáá·áº áááºážááá¯á· áá±ážáá±á¬ááºáá±á¬ á¡á¬ááá¶áá»ááºáá»á¬ážááᯠá¡ááŒáá·áºá¡á áá¬ážáááºáááºá áááºážááá¯á·ááᯠKafka ááœáẠáááºááá¯á· á¡áá±á¬ááºá¡áááºáá±á¬áºáááºááᯠáŠážá
áœá¬ ááŒáá·áºááŸá¯ááẠááá¯á¡ááºáá«áááºá
Kafka ááŸá á¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯á
á®ááœáẠáááºážáááá¯ááºááá¯ááºááŸááºáááºážááŸááááºá
áá¯ááºáá¯ááºáá°áá»á¬ážááẠKafka ááá¯á· áááºáá±á·áá»áºáá»á¬áž áá±ážááá¯á·áá±á¬ á€ááŸááºáááºážááá¯á· áá±ážááŒááŒá®áž áá¯á¶ážá
áœá²áá°áá»á¬ážááẠááŸá±á·ááá¯á· á¡áááºáááŒááºááœá±á·áá±áá±á¬ ááœáŸááºááŒáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááŸááºáááºážá០áááºááŒáááºá á¡áá«á¡á¬ážáá»á±á¬áºá
áœá¬á Kafka ááẠááŸááºáááºážá ááŸá±ážá¡áá»áá¯á¶ážá¡ááá¯ááºážáá»á¬ážááᯠáá»ááºáááºá ááá¯á¡ááá¯ááºážáá»á¬ážááŸá á
á¬áá»á¬ážááᯠáááºáááºááŒá
áºá
á±á ááááºáááºááŒá
áºá
á± Kafka á áá®ááá¯ááºážá á¡ááá á¡á
áááºá¡ááá¯ááºážááŸá¬ ááœá²á
á¬ážááẠáááºáá±á·áá»áºáá»á¬ážááᯠáááºááŒááºáž ááŸáá áááŸá ááá¯áá
áá¯ááºááŒááºážááŒá
áºááẠ- áááºážááŸá¬ áá±á¬ááºáááºá áá¬áááºááŒá
áºáááºá
"áá±á¬á·ááº" ááŸáá·áº "ááœáŸááºááŒáá»ááº" áá°áá±á¬ áá±á«áá¬ááá»á¬áž ááá±á«áºáá«á
Kafka á á¬áááºážááŒá¯á á¯ááŒááºážá . á€áá±áá¬ááœáẠáá°áááá»á¬ážáá±á¬ á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠáá¬ážáááºá á±áááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
á€áá¯á¶á
á¶ááẠActiveMQ ááŸáá·áº áá¯á¶ážáááœá²ááŒá¬ážáááºá á
á®áááºážá¡á¬ážáá¯á¶ážá០áááºáá±á·áá»áºáá»á¬ážááᯠáá°áá®áá±á¬ááŸááºáááºážááœáẠááááºážáááºážáá¬ážááŒá®áž ááœá²á
á¬ážá០áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŒá®ážáááºááŸáá·áº áá»ááºááá¯ááºááŒá±á¬ááºáž á¡ááŸááºá¡áá¬ážááŒá¯áá«áááºá
á¡áᯠáááºážáááºážáá±áž áááºáááºáá²áá² áá°ážááŒá®áž áá±á«ááºážá
ááºáá²á· áá±á¬á·ááºááᯠááá¯á¡áá±ážá
áááºááŒáá·áºáá¡á±á¬ááºá
Kafka log ááœáẠpartition áá»á¬ážá
áœá¬áá«áááºááẠ(
áá¯á¶ á-áá Kafka Partitions
áá¯ááºáá¯ááºáá°áá áºáŠážá Kafka áá±á«ááºážá ááºáá áºáá¯áᶠáááºáá±á·áá»áºáá±ážááá¯á·ááá·áºá¡áá«á áááºážááẠáááºááá·áºá¡ááá¯ááºážááá¯á· áááºáá±á·áá»áºááá¯á·ááẠáá¯á¶ážááŒááºáááºá áá«ááᯠáá±á¬ááºá០á¡áá±ážá áááºááŒáá·áºáá«áááºá
áááºáá±á·ááºá»áááºááŒááºážá
áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŸá¯ááá¯áá±á¬ áááá¯ááºážááá·áºááẠá¡áááºáá±ážáá¬ážáá±á¬ ááœáŸááºááŒáá»ááºááᯠá á®áá¶ááá·áºááœá²áááºá á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯á ááŸáááºáááºá partition ááœááºáááºáá±á·ááºá»áá»á¬ážá á¡á±á¬á·ááºáááºááẠá¡áááºážááá·áºáá áºáá¯áá¡á ááœáẠ0 ááŸá áááºááá·áº ááá¯ážááŒáá·áºááá·áºá¡áá±á¡áá¬ážáá áºáá¯ááŒá áºáááºá á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ group_id ááŸáá áºááá·áº API ááœááºáááºááœáŸááºážáá¬ážáá±á¬ á€á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááẠáááºááá¯ááºáá«áááºá áá¯áá¹áááááºáá±á¬ á á¬ážáá¯á¶ážáá° ááá¯á·ááá¯áẠá áá áºáá áºáá¯.
á á¬ááá¯áá±ážááá¯á·áá±ážá áá áºá¡áá»á¬ážá á¯ááẠáááºáá±á·áá»áºáá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááẠá¡ááŒáááºáá»á¬ážá áœá¬ááŸáá·áº á á¬ááœá²áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áŠážáááºáá¬ááŸáá±áá¬áá»á¬ážááᯠáááºáááºá ááá¯á·ááŒá±á¬áá·áºá áá°áá®áá±á¬ á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááᯠáá»áŸáá±áá¯á¶ážá áœá²áá° áá¬áááá»á¬ážá áœá¬ ááŸááááºáááºá
á á¬áááºááŒááºážááŒá¿áá¬ááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááá¯ááºá á¬ážááŒá¯ááá¯ááºáá«áááºá
- Topic ááœáẠpartition áá»á¬ážá áœá¬ááŸááááºá
- á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯áá»á¬ážá áœá¬ááẠá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááᯠáá áºáá»áááºáááºážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯áá áºá á¯ááœáẠáá®ážááŒá¬ážá¥ááá¬áá»á¬ážá áœá¬ááŸáááá¯ááºáááºá
áá«á á¡áá±ážá¡ááœá²ááá¯ááºáá²á· áá»á¬ážááŒá¬ážáá²á· ááŒá¿áá¬áá áºáá¯áá«á Kafka ááẠá á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯áá»á¬ážá á á¬ážáá¯á¶ážáá° áá¬áááá»á¬ážááŸáá·áº á¡áááºážááá·áºáá»á¬ážááŒá¬ážááŸá áááºáá¶áá±ážáá»á¬ážááᯠááá¯ááºááœááºáá¯á¶ááᯠáá¬ážáááºáááºá áááŒááºážááŒááºáž ááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ á á¬áááºááŒááºážááá¯ááºáᬠáá¬ááºáááºážááá¯áá»á¬áž á á®ážáá®ážáá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
á á¬ážáá¯á¶ážáá°áá»á¬ážááŸáá·áº á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯áá»á¬áž
á¡ááá¯ááºážáá
áºáá¯áá«ááŸááá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯ááᯠá¡á
ááŸááºá¡ááŒá
Ạáá°ááŒáá«á
áá¯á· (
áá¯á¶ á-áá á¡áá¯á¶ážááŒá¯áá°ááẠpartition ááŸáááºáááºá
á
á¬ážáá¯á¶ážáá° instance áá
áºáá¯ááẠáááºážáááá¯ááºááá¯áẠgroup_id ááŸáá·áº á€á¡ááŒá±á¬ááºážá¡áá¬á¡ááœáẠáá»áááºáááºáá±á¬á¡áá«á áááºážááᯠread partition ááŸáá·áº ááᯠpartition ááœáẠoffset áá
áºáá¯áááºááŸááºáá±ážáááºá á€á¡á±á¬á·ááºáááºá á¡áá±á¡áá¬ážááᯠáááá¯ááºážááá·áºááœáẠáááºááá±á¬ á¡áá±á¡áá¬áž (á¡áá
áºáá¯á¶áž áááºáá±á·áá»áº) ááá¯á·ááá¯áẠá¡á
á±á¬áá¯á¶áž á¡áá±á¡áá¬áž (á¡áá±á¬ááºážáá¯á¶áž áááºáá±á·áá»áº) ááá¯á· ááœáŸááºááŒááá·áº ááœáŸááºááŒáá»ááºá¡ááŒá
ẠáááºááŸááºááá¯ááºáááºá á
á¬ážáá¯á¶ážáá°áá»á¬ážá áá±á«ááºážá
ááºá០áááºáá±á·áá»áºáá»á¬áž (á
á
áºáááºážáá»á¬áž) áá±á¬ááºážáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠááŸááºáááºážá០áááºááá¯ááºáááºá
á±áá«áááºá
á¡á±á¬á·ááºáááºá¡áá±á¡áá¬ážááᯠKafka ááá¯á· áá¯á¶ááŸááºááŒááºáááºáá¬ážááŒá®áž á¡ááœááºážááá¯ááºážá¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯ááœáẠáááºáá±á·áá»áºáá»á¬ážá¡ááŒá
Ạááááºážáááºážáá¬ážáááºá _consumer_offsets. áá¯á¶ááŸááºááœá²á
á¬ážááŸáá·áºááá°áá² áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŒá®ážáá«á ááá»ááºáá±ážáá²á áááá¯ááºážááá·áºááẠááŒáá·áºááŸá¯ááŒá®ážáá¬áž áááºáá±á·áá»áºáá»á¬ážááᯠááŒááºáááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡á±á¬á·ááºáááºááᯠááŒááºáá
áºááá¯ááºáááºá
áá¯ááááá¯áá¹áááá»áá±á¬á
á¬ážáá¯á¶ážáá°ááẠááá°áá®áá±á¬ group_id ááá¯á¡áá¯á¶ážááŒá¯á áá»áááºáááºáá±á¬á¡áá«á áááºážááẠáááááŸáá·áºáááá¯ááºáá±á¬ áá¯áááááœáŸááºááŒáá»ááºááᯠá
á®áá¶ááá·áºááœá²ááẠ(
áá¯á¶ á-áá ááá°áá®áá±á¬á
á¬ážáá¯á¶ážáá°á¡á¯ááºá
á¯áá»á¬ážááŸá á
á¬ážáá¯á¶ážáá°ááŸá
áºáŠážááẠáá°áá®áá±á¬á¡ááá·áºááŸáááºáááºá
á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááœáẠá á¬ážáá¯á¶ážáá°
á
á¬ážáá¯á¶ážáá°á¥ááá¬áá
áºáá¯ááẠpartition áá
áºáá¯ááŸáá±áá¬ááá¯áááºáá±á¬á¡áá«á áááºážááẠpointer áááááºážáá»á¯ááºááŸá¯á¡ááŒáá·áºááŸáááŒá®ážááááºá¡ááá¯ááºážááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážáááºáá±á·ááºá»áá»á¬ážááá¯áá¯ááºáá±á¬ááºáááºá
á¡áááºá áá¯á¶ážá
áœá²áá°á¡áá»á¬ážá¡ááŒá¬ážááẠáá°áá®áá±á¬ group_id ááŸáá·áº partition áá
áºáá¯áá«ááŸááá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯ááá¯á· áá»áááºáááºáá¬ážáá»áŸáẠáá±á¬ááºáá¯á¶ážáá»áááºáááºáá¬ážáá±á¬ á¥ááá¬ááẠpointer ááᯠááááºážáá»á¯ááºáá±ážáááºááŒá
áºááŒá®áž ááá¯á¡áá»áááºááŸá
á áááºážááẠáááºáá±á·ááºá»á¡á¬ážáá¯á¶ážááᯠáááºáá¶áááŸááááá·áºááẠ(
áá¯á¶ á-áá áá°áá®áá±á¬á
á¬ážáá¯á¶ážáá°á¡á¯ááºá
á¯ááŸá á
á¬ážáá¯á¶ážáá°ááŸá
áºáŠážááẠáá°áá®áá±á¬á¡áááºážááá·áºááŸáááºáááºá
á¡áá¯á¶ážááŒá¯áá°ááŒá áºáááºá¡áá±á¡ááœááºááẠá¡áááºážááá·áºá¡áá±á¡ááœááºáááºáá»á±á¬áºááœááºááá·áº á€áá¯ááºáá±á¬ááºááŸá¯áá¯á¶á á¶ááᯠáá®ážááá·áºá á¬ážáá¯á¶ážáá°áá áºáá»áá¯ážá¡ááŒá Ạáá°áááá¯ááºáááºá áá¯á¶ážá áœá²áá°á¡áá»á¬ážá¡ááŒá¬ážááᯠá¡ááŒáá¯áẠ("active-active" ááá¯á·ááá¯áẠ"hot-hot") ááẠáá¯á¶ááŸááºááẠáá»á¬ážá áœá¬ááá¯á áá¯á¶ááŸááºááẠáá»á¬ážá áœá¬áá¬ááœááºáá±á¬áºáááºáž áááºáá á¬ážáá¯á¶ážáá°ááŒá áºáááºáá»á¬ážááᯠá¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠ"active-passive" (ááá¯á·ááá¯áẠ"hot-warm") ááá¯á¡ááºáá«á áááºážááẠá¡áá¯á¶ážáááºááá¯ááºáá«ááẠá á¬ážáá¯á¶ážáá°á á¡ááá·áºá¡áá±á¡áá¬ážá
á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ á€áááºáá±á·áá»áºááŒáá·áºáá±ááŸá¯á¡ááŒá¯á¡áá°ááẠáá¯á¶ááŸáẠJMS áááºážá á®ááŸá¯ááŒá¯áá¯á¶ááŸáá·áº ááŸáá¯ááºážááŸááºáá»áŸáẠá¡á¶á·ááŒá áá¬ááŒá áºááá¯ááºáááºá á€áá¯á¶á á¶ááœááºá áááºážá á®ááẠáá±ážááá¯á·áá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠá á¬ážáá¯á¶ážáá°ááŸá áºáŠážááŒá¬áž á¡áá®á¡áá»áŸ ááŒáá·áºáá±áá±ážáá«áááºá
á¡áá»á¬ážá á¯ááŸá¬á áá»áœááºá¯ááºááá¯á·ááẠá á¬ážáá¯á¶ážáá°áá»á¬ážá áá¬áááá»á¬ážá áœá¬ááᯠáááºáá®ážáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á·áá»áºáá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááẠááá¯á·ááá¯áẠá á¬áááºááŸá¯ááºážááᯠááŒáŸáá·áºáááºááẠááá¯á·ááá¯áẠá á¬áááºááŒááºážáá¯ááºáááºážá ááºá áááºááŒáááºááŸá¯ááᯠááá¯ážááŒáá·áºááẠáááŒá¬áá áá¯ááºáá±á¬ááºáááºá áá áºáá»áááºáááºážááœáẠpartition áá áºáá¯ááŸáá±áá¬ááá¯á á¬ážáá¯á¶ážáá°á¥ááá¬áá áºáá¯áá¬áááºááá¯ááºáá±á¬ááŒá±á¬áá·áº Kafka ááœááºáááºážááá¯áááºááá¯á·á¡á±á¬ááºááŒááºááááºážá
áááºážááá¯ááŒá¯áá¯ááºáááºáááºážáááºážáá áºáá¯ááŸá¬ áááºáá±á·áá»áºá¡á¬ážáá¯á¶ážááá¯áááºááŒá®áž thread pool ááá¯á·áá±ážááá¯á·ááẠáá¯á¶ážá áœá²áá°áá áºáŠážáááºážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºá á€áá»ááºážáááºááŸá¯ááẠá á®áá¶áá±á¬ááºááœááºááá·áº ááá¬áááᯠááá¯ážááŒáá·áºá á±áá±á¬áºáááºážá áááºážááẠá á¬ážáá¯á¶ážáá° áá¯áá¹áááá±áá ááŸá¯ááºááœá±ážááŸá¯ááᯠááá¯ážááŒáá·áºá á±ááŒá®áž á á¬áááºááá·áºá áá áºá ááŒá¶á·ááá¯ááºááŸá¯ááᯠááá¯ážááŒáŸáá·áºááẠáááºááá·áºá¡áá¬áá»áŸ áá¯ááºáá±á¬ááºáááºááá¯ááºáá±á áá«áá«áá»áá¯á·ááœááºážááŸá¯ ááá¯á·ááá¯áẠá¡áá¬ážáá°ááŒá áºáááºááŒá±á¬áá·áº áá¯á¶ážá áœá²áá°ááááá¹áá°áá áºá¡á¯áẠáá»ááœá¬ážáá«áá áá¯ááºááŒááºážáááºááœá¬ážáá«áááºá
Kafka ááœááºá€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážááẠcanonical áááºážáááºážááŸá¬ b ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºáÐáá±á¬ááºááẠpartitions áá»á¬ážá
ááá¯ááºážááŒá¬ážááŒááºážá
Partitions áá»á¬ážááẠááœá²á
á¬ážá¥ááá¬áá
áºáá¯á bandwidth ááá¯áá»á±á¬áºááœááºá áá±á«ááºážá
ááºáá
áºáá¯á¡á¬áž á¡ááŒáá¯ááºáááºááŸá¯ááŒááºážááŸáá·áº á¡ááœááºá¡á
á¬ážáá»á²á·ááŒááºážá¡ááœáẠá¡áááááá¹ááá¬ážááŒá
áºáááºá áá«ááᯠááá¯áá¬ážáááºááá¯á·á á¡ááá¯ááºážááŸá
áºáá¯áá«ááŸááá²á· áá±á«ááºážá
ááºáá
áºáá¯áá²á· á
á¬ážáá¯á¶ážáá°áá
áºáá±á¬ááºá áá®áá±á«ááºážá
ááºááᯠá
á¬áááºážááœááºážáá²á· á¡ááŒá±á¡áá±áá
áºáá¯ááᯠá
ááºážá
á¬ážááŒáá·áºáá¡á±á¬áẠ(
áá¯á¶ á-á
á á
á¬ážáá¯á¶ážáá°áá
áºáŠážááẠá¡ááá¯ááºážáá»á¬ážá
áœá¬á០áááºáááºá
á€á¡ááŒá±á¡áá±ááœááºá áá¯á¶ážá
áœá²áá°ááẠáááºážá group_id ááŸáá·áº áááºááá¯ááºááá·áº á¡ááá¯ááºážááá¯ááºážááŸá
áºáá¯áá¯á¶ážááŸá ááœáŸááºááŒáá»ááºáá»á¬ážááᯠááááºážáá»á¯ááºáá±ážáá¬ážááŒá®áž á¡ááá¯ááºážááŸá
áºáá¯á
áá¯á¶ážá០á
á¬áá»á¬ážááᯠá
áááºáááºáááºá
áá°áá®áá±á¬ group_id á¡ááœáẠáá±á¬ááºáááºáá¯á¶ážá
áœá²áá°áá
áºáŠážááᯠá€á¡ááŒá±á¬ááºážá¡áá¬ááá¯á· áá±á«ááºážááá·áºáá±á¬á¡áá«á Kafka ááẠááááá
áºáŠážá០áá¯áááá
á¬ážáá¯á¶ážáá°áá¶ááá¯á· á¡ááá¯ááºážáá
áºáá¯á¡á¬áž áá±áá¬áá»áá¬ážáá±ážáááºá ááá¯á·áá±á¬ááºááœááºá á
á¬ážáá¯á¶ážáá°áá
áºáŠážá
á®ááẠáá±á«ááºážá
ááºá á¡ááá¯ááºážáá
áºáá¯á០áááºááẠ(
áááºáá±á·áá»áºáá»á¬ážááᯠá á¬ááœá² 20 ááœáẠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááŒá±á¬ááºáž áá±áá»á¬á á±áááºá á¡áááºážáá¯á¶áž á¡ááá¯ááºáž 20 ááá¯á¡ááºáá«áááºá á¡áááºážááá·áºáá»á¬áž áááºážáá«ážáá«áá áá®ážááá·áºá á¬ážáá¯á¶ážáá°áá»á¬ážá ááœá±ážááœá±ážááŸá¯ááœáẠá¡á á±á¬ááá¯ááºážááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž áá¯ááºáá±á¬ááºá áá¬áááŸááá±á¬ á á¬ážáá¯á¶ážáá°áá»á¬ážáá¶ááœáẠáá»ááºáá áºáááºááŒá áºáááºá
áá¯á¶ á-áá áá°áá®áá±á¬á
á¬ážáá¯á¶ážáá°á¡á¯ááºá
á¯ááŸá á
á¬ážáá¯á¶ážáá°ááŸá
áºáŠážááẠááá°áá®áá±á¬á¡ááá¯ááºážááœá²áá»á¬ážá០áááºáááºá
á€á¡á á®á¡á á¥áºááẠJMS áááºážá á®ááŒááºážááᯠááááºážááááºážááẠááá¯á¡ááºáá±á¬ áááºáá±á·áá»áºááŒáá·áºáá±ááŸá¯ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á Kafka ááœá²á á¬ážá ááŸá¯ááºááœá±ážááŸá¯ááᯠáá»á¬ážá áœá¬áá»áŸá±á¬á·áá»áá±ážáá«áááºá á€áá±áá¬ááœáẠá¡á±á¬ááºáá«á¡áá»ááºáá»á¬ážá¡ááœáẠá áááºáá°á áá¬áááá¯áá«á
- á¡ááœá¬ážá¡ááŒáẠááœá²áá±áá»áá¬ážááŸá¯á ááŒáá¯áááºááŸá¬áá°ááŸá¯ááŒá¬ážáá¶áá»á¬ážá áááºááŸáá áœááºážáá±á¬ááºááẠááá¯á·ááá¯áẠááááºáááºáá±á·áá»áºáá»á¬áž (JMS áááºáá±á·áá»áºá¡ááœá²á·áá»á¬ážá¡ááœááº) á¡áá±á«áº á¡ááŒá±áá¶á áááºááá·áºá á¬ážáá¯á¶ážáá°á០áááºáá¶ááá·áºáá«áááºá
- áá»áá¯á·ááœááºážáá»ááºááŸááá«á áááºááá·áºá á¬ááá¯ááᯠá á¬ážáá¯á¶ážáá°áᶠáá±ážááá¯á·ááááºáááºážá
Kafka ááœá²á á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááá¯á·ááᯠáá±á¬ááºážááá¯ááá·áºá¡áá« á á¬ážáá¯á¶ážáá°áᶠáááºáá±á·áá»áºáá»á¬áž áááºááá¯ááºáá±ážááá¯á·áááºááŒá áºáááºá
ááá¯á·áá¬ááœááºá áááºáá±ááŒááŒááºážááŸáá·áº áá¡á±á¬ááºááŒááºáá±á¬á á¬áá»á¬ážááᯠááŒááºáááºáá±ážááá¯á·ááŒááºážá¡ááœáẠááŒáá¯ááºáá°áá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá»ááºáá»á¬ážááẠáá»á±á¬ááºáááœá¬ážáá« - áááºážááá¯á·á¡ááœáẠáá¬áááºááŸá¬ ááœá²á á¬ážáá¶á០áá±á¬ááºáááºáá¶ááá¯á· áá±á¬ááºááœá¬ážáá«áááºá ááá¯ááá¯áááºááŸá¬ áááºážááá¯á·ááᯠááá·áºáá¯ááºááœáẠááá·áºááœááºážá ááºážá á¬ážááááºááŒá áºáááºá
áááºáá±á·ááºá»ááá¯á·ááŒááºážá
áááºááá·áºá¡ááá¯ááºážááá¯á· áááºáá±á·áá»áºáá±ážááá¯á·ááááºááᯠáá¯á¶ážááŒááºááẠááá¯áááºáá±á·áá»áºááᯠáá¯ááºáá¯ááºáá°á áá¬áááºááŒá áºáááºá áááºážáá¯ááºáá±á¬ááºááá·áº ááá¹ááá¬ážááᯠáá¬ážáááºáááºá áá»áœááºá¯ááºááá¯á· á¡ááŸááºáááẠáá±ážááá¯á·áá±ááá·áº á¡ááá¡áá»ááᯠáŠážá áœá¬ á ááºážá á¬ážááẠááá¯á¡ááºáá«áááºá
JMS ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºáá¬áá±áᬠ(áá±á«ááºážá á®ážáá»á¬ážááŸáá·áº áá¯ááºááá¹áááá»á¬áž) ááŸáá·áº áá±ážáá±á¬ááºááŸá¯ (payload) áá«ááŸááá±á¬ áááºáá±á·áá»áºááœá²á·á ááºážáá¯á¶ááᯠá¡áá¯á¶ážááŒá¯áá±á¬áºáááºáž Kafka ááœáẠáááºáá±á·áá»áºááẠ"áá±á¬á·áááºááá¯áž" á¡ááœá². áááºáá±á·áá»áºááᯠpayload ááẠáááºááá¯ážáá áºáá¯á¡ááŒá Ạáá±ážááá¯á·áááºá á¡ááŒá¬ážáá áºáááºááœááºáá° áá±á¬á·ááᯠááá¯ááºážááŒá¬ážááŒááºážá¡ááœáẠá¡áááá¡áá¯á¶ážááŒá¯ááŒá®áž áá«áááºááá«áááºá business logic áááá»áá²á·áá±á¬á·áááºá ááºáááºáá±á·áá»áºáá»á¬ážááᯠáá°áá®áá±á¬ partition ááœááºááá·áºáááºá
á¡áááºáž 2 ááœááºá á á¬ážáá¯á¶ážáá°áá áºáŠážáááºážá០áááºá ááºááŒá áºáááºáá»á¬ážááᯠá á®á á¥áºááẠááá¯á¡ááºááá·áº á¡áœááºááá¯ááºážáá±á¬ááºážáá á¬ážáá¬ááºáááºážááᯠáá»áœááºá¯ááºááá¯á· ááœá±ážááœá±ážáá¬ážáááº-
- á¡áá¯á¶ážááŒá¯áá°á¡áá±á¬áá·áºááᯠá á®á ááºáááºááŸááºáá¬ážáááºá
- ááœá±ááᯠá¡áá±á¬áá·áºáá²ááá¯á· ááá·áºáá«áááºá
- á¡áá±á¬áá·áºááŸááœá±áá¯ááºáá°áá±á¬ á¡áá±á¬ááºážá¡á á¬ážááŒá¯áá¯ááºáááºá
ááŒá
áºáááºáá
áºáá¯á
á®ááẠá¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯ááá¯á·áááºáá¬ážáá±á¬ áááºáá±á·áá»áºááŒá
áºáá«áá ááá¬ááá±á¬á·ááẠá¡áá±á¬áá·áº ID ááŒá
áºáááá·áºáááºá
Kafka Producer API ááᯠá¡áá¯á¶ážááŒá¯á áááºáá±á·áá»áºááᯠáá±ážááá¯á·áá±á¬á¡áá«á áááºážááᯠáááºáá±á·áá»áºááŸáá·áº Kafka á¡á
á¯á¡áá±ážá áááºááŸáá¡ááŒá±á¡áá±á¡á¬áž áá±ážáá±á¬ááºááŒá®áž áááºážááᯠáááºáá±á·áá»áºáá±ážááá¯á·ááá·áºááá·áº á¡áááºážááá·áºá ID ááᯠááŒááºáá±ážáááºá á€á¡ááºá¹áá«áááºááᯠPartitioner interface ááŸáááá·áº Java ááœááºá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá
á€á¡ááºáá¬áá±á·á áºááẠá€áá²á·ááá¯á·ááŒá áºáááº-
interface Partitioner {
int partition(String topic,
Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}
Partitioner á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠá¡áááºážááá·áºááᯠáá¯á¶ážááŒááºááẠáá±á¬á·áá±á«áºááœáẠáá¯á¶áá± áá±áá¯áá»áááºááœááºáá»áẠhashing algorithm ááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·ááá¯áẠáá±á¬á·ááááºááŸááºáá¬ážáá«á round-robin ááᯠá¡áá¯á¶ážááŒá¯áááºá á€áá°ááááºááá¯ážááẠááá á¹á á¡áá»á¬ážá á¯ááœáẠáá±á¬ááºážááœááºá áœá¬á¡áá¯ááºáá¯ááºáá«áááºá ááá¯á·áá±á¬áº áá±á¬ááºááœáẠáááºážááá¯ááºááá¯áẠáá±ážáá»ááºáá±áááá·áºáááºá
áááºáááá¯ááºááá¯áẠpartitioning áááºážáá»á°áá¬ááá¯áá±ážáá«á
áááºáá±á·áá»áºáá±ážáá±á¬ááºááŸá¯ááŸáá·áºá¡áá° áááºáá¬áá±áá¬áá±ážááá¯á·ááá¯ááá·áº á¥ááá¬áá
áºáá¯ááᯠááŒáá·áºááŒáá«á
áá¯á·á áá»áœááºá¯ááºááá¯á·áá¥ááá¬ááŸá payload ááẠááááºážá¡áá±á¬áá·áºááá¯á· ááœá±ááœááºážááẠááœáŸááºááŒá¬ážáá»ááºáá
áºáá¯ááŒá
áºáááºá ááœáŸááºááŒá¬ážáá»ááºáá
áºáá¯ááẠáá¯ááºááœáŸáá·áºááŸá¯ááœáẠááŒá¯ááŒááºááœááºážáá¶ááŒááºážáááŒá¯ááẠáá»áœááºá¯ááºááá¯á·á¡á¬ááá¶áá»ááºáá±ážááá¯ááá·áºá¡áá¬ááŒá
áºááŒá®áž áá¯á¶ááŒááºá
áááºáá»ááá±á¬ á¡áááºá
á®ážááŒá±á¬ááºážá
áá
áºááŸáᬠá¡ááá¯áá«ááœáŸááºááŒá¬ážáá»ááºááᯠá
áááºááá¯ááºáááºááᯠáá±áá»á¬á
á±ááá¯áá«áááºá á€ááá
á¹á
ááœááºá áá±ážááá¯á·ááŒááºážááŸáá·áº áááºáá¶ááŒááºážá
áá
áºáá»á¬ážááẠáááºáá±á·áá»áºááᯠá
á
áºááŸááºááŒá±á¬ááºážáááºáá±ááŒááẠáááºááŸááºáá
áºáá¯á¡áá¯á¶ážááŒá¯ááŒááºážááᯠááá±á¬áá°áá®ááŒáááºá
áá¯á¶ááŸáẠJMS ááœááºá áá»áœááºá¯ááºááá¯á·ááẠ"message signature" ááᯠááá¯ážááŸááºážá
áœá¬ áááºááŸááºááŒá®áž áááºážááᯠáááºáá±á·áá»áºááœáẠááá·áºáá«á ááá¯á·áá±á¬áºá Kafka ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áááºáá¬áá±áá¬áá±ážááá¯á·ááẠááá¹ááá¬ážáá
áºáá¯á áá±á¬á·áá
áºáá¯ááŸáá·áº áááºááá¯ážáá
áºáá¯áá¬ááŒá
áºáááºá
áááºááá¯ážááẠáá»áœááºá¯ááºááá¯á· ááááºážááááºážááá¯áá±á¬ ááá¯ááºáá¬ááŸá¯ááŸááá±á¬ áááºááœá±ááœáŸá²ááá¯á·ááá áºáá¯ááŒá áºáá±á¬ááŒá±á¬áá·áºá áá±á¬á·ááœááºá¡áá¯á¶ážááŒá¯ááẠáá±áá¬ááœá²á·á ááºážáá¯á¶ááᯠáááºááŸááºáááºááŸááá«áž ááœá±ážáá»ááºá áá¬áááŸááá«á á¡ááá¯ááºážááœá²ááŒááºážá¡ááœáẠá¡áá±á¬áá·áº ID áá áºáᯠááá¯á¡ááºáááºáᯠáá°ááá«áá á¡áá±á¬áá·áºáá áºáá¯ááŸáá·áº áááºááá¯ááºááá·áº áááºáá±á·áá»áºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡á á®á¡á ááºááá» áá¯ááºáá±á¬ááºááááºááŒá áºáá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá« JSON ááœá²á·á ááºážáá¯á¶ááᯠáááŸááá¬áááºááŒá áºáá«áááºá
{
"signature": "541661622185851c248b41bf0cea7ad0",
"accountId": "10007865234"
}
áááºááŸááºááááºááá¯ážááẠpayload áá±á«áºáá°áááºá ááœá²ááŒá¬ážáááºááŒá áºáá±á¬ááŒá±á¬áá·áº Partitioner á¡ááºáá¬áá±á·á áºá áá¯á¶áá± hashing áááºážáá»á°áá¬ááẠáááºá ááºáááºáá±á·áá»áºáá»á¬ážááᯠá¡á¯ááºá á¯ááœá²á·ááẠáá¯á¶ááŒááºá áááºáá»ááá¯ááºáááºááá¯ááºáá±á ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá€áá±á¬á·ááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž accountId áááºááá¯ážááᯠááá¯ááºážááŒá¬ážáá±ážááá·áº áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºáá»á°áá¬ááᯠáá±ážáá¬ážááẠááá¯á¡ááºáá«áááºá
Kafka ááœáẠá ááá¯ážááá¯ááºááŸá áááºáá±á·áá»áºáá»á¬ážá á¡áá»áá·áºáá»ááºááŒá á¬ážááŸá¯ááᯠááŸá¬ááœá±ááẠchecksum áá»á¬áž áá«áááºááŒá®áž áá¯á¶ááŒá¯á¶áá±ážá¡ááºá¹áá«ááẠá¡á á¯á¶á¡áááºáá«ááŸááááºá ááá¯á·ááá¯ááºá á¡áááºáá±á¬áºááŒáá«áá áºáá¯áá²á·ááá¯á·áá±á¬ áá¯ááºáááºážááá¯ááºáᬠáá®ážááŒá¬ážááá¯á¡ááºáá»ááºáá»á¬ážááẠáá áºáá«áá áºáᶠáá±á«áºáá¬áá«áááºá
á¡áá¯á¶ážááŒá¯áá°á á¡ááá¯ááºážááœá²ááŒááºážáá»á°áá¬ááẠáááºááá¯ááºáᬠáááºáá±á·áá»áºáá»á¬ážá¡á¬ážáá¯á¶áž áá°áá®áá±á¬ á¡áááºážááá·áºááœáẠá¡áá¯á¶ážáááºááŒá±á¬ááºáž áá±áá»á¬á á±ááááºá áááºážááẠááá¯ážááŸááºážáááºáᯠáááºááá±á¬áºáááºáž áááºááá¯ááºáᬠááá¯á·á áºáá»á¬ážááᯠááŸá¬áá°ááŒááºážá á¡áá±ážáá«ááŸá¯ááŸáá·áº áá±á«ááºážá ááºáá áºáá¯ááŸá á¡áááºážááá·áºá¡áá±á¡ááœááºááᯠáááºáá²á·ááá¯á· áá¯á¶áá±áááºááŸááºáá¬ážááŒááºážááŒá±á¬áá·áº ááá¯á¡ááºáá»ááºááẠááŸá¯ááºááœá±ážááá¯ááºáááºá
áááºážááŒá±á¬ááºážáá áºáá¯ááẠáááŠážáá»áŸá±á¬áºááŸááºážáá¬ážáááºáááºáá»á±á¬áºááœááºááœá¬ážáá«á áááºážááá¯á·ááᯠáááºááá·áºááá¯ááºáá±á¬ááŒá±á¬áá·áº áá±á«ááºážá ááºáá áºáá¯ááŸá á¡áááºážááá·áºá¡áá±á¡ááœááºááẠá¡áá»áááºááŸáá·áºá¡áá»áŸ ááŒá±á¬ááºážáá²ááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áºá áááºáá±á·áá»áºáá®ážáá»á¬ážááẠáááºážááá¯á·áá°ááá±ážááá¯á·áá²á·ááá·áº á¡ááá·áºááœá²ááŸáá·áº áááºá ááºááá¯ááºááŒá®áž áá¯ááºáá¯ááºáá°ááŒá áºáááºáá»á¬ážááŒá¬ážááœáẠáá»áŸáá±áááá·áº á¡ááŒá±á¡áá±áá áºáá¯á¡á¬áž ááá¯ááá¯áááºá
ááá·áºááœááºážá
ááºážá
á¬ážáááá·áº áá±á¬ááºáá
áºáá»ááºááŸá¬ partitions áá»á¬ážáá
áºáá»áŸá±á¬áẠáááºáá±á·áá»áºáá»á¬ážááẠááŒáá·áºáá±ááŒááºážááẠááŒá
áºáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá±á¬á·áá»á¬ážááẠáááºáá±á·áá»áºáá»á¬ážáá
áºáá»áŸá±á¬áẠá¡áá®á¡áá»áŸ ááŒáá·áºáá±áá±á·áááŸááá±á¬áºáááºáž hash áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠáá±á¬á·á¡áá±ážá¡ááœá²á·á¡ááœáẠáááºáá±á·áá»áºáá»á¬ážááᯠááá¬ážáá»áŸáá
áœá¬ ááŒáá·áºáá±ááŒááºážááᯠá¡á¬áááá¶ááá¯ááºáá«á
áááºáá±á·áá»áºáá»á¬ážááᯠááœá²ááẠáááºááœá±ážáá»ááºáá±á¬áºáááºážá ááœá²ááœááºááᯠááá¯ááºááá¯ááºááŒááºáá¯á¶ážááẠááá¯á¡ááºááá¯ááºáááºááᯠáááááŒá¯ááẠá¡áá±ážááŒá®ážáá«áááºá
ááá°áá®áá±á¬ áááá®áááºáááºáá±áá¬áá»á¬ážááœáẠKafka á¡á á¯á¡áá±ážáá»á¬ážááŒá¬áž áá±áá¬ááᯠáá¯á¶áá°ááœá¬ážááẠááá¯á¡ááºáá»ááºááᯠááá·áºááœááºážá ááºážá á¬ážáá«á á€áááºááœááºáá»ááºá¡ááœááºá Kafka ááẠá¡á á¯á¡ááœá²á·áá áºáá¯á០áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŒá®áž áááºážááá¯á·ááᯠá¡ááŒá¬ážáá áºáá¯ááá¯á· ááœáŸá²ááŒá±á¬ááºážááẠMirrorMaker áá¯áá±á«áºáá±á¬ á¡áááá·áºáá±ážááá·áºááá¯ááºážáááááá¬áá áºáá¯áá«ááŸááááºá
MirrorMaker ááẠá¡á á¯á¡á ááºážáá»á¬ážááŒá¬ážááœáẠáá¯á¶áá°ááœá¬ážáá±áá»áááºááœáẠáááºáá±á·áá»áºáá»á¬ážááŒá¬áž áááºá ááºá¡á á®á¡á á¥áºááᯠááááºážááááºážáá¬ážááá¯ááºá á±áááºá¡ááœááºá ááá¯á¡ááŒá±á¬ááºážá¡áá¬á¡ááœáẠá¡áááºážááá·áºá¡áá±á¡ááœááºááẠá¡á á¯á¡á ááºážááŸá áºáá¯ááœáẠáá°áá®ááá¯ááºáááºááá¯ááºáá±á¬ááŒá±á¬áá·áºá
áá¯á¶áá± hashing ááá¯á·ááá¯áẠround robin ááẠá¡ááŒá±á¡áá±á¡áá»á¬ážá á¯ááœáẠáá±á¬ááºážááœááºá áœá¬á¡áá¯ááºáá¯ááºáá±á¬ááŒá±á¬áá·áº á áááºááŒáá¯ááºááœá²ááŒááºážááŒááºážáá»á°áá¬áá»á¬ážááẠá¡áá±á¬áºáá±ážááŸá¬ážáá«áááºá ááá¯á·áá±á¬áºá áááºááẠááá¯ááºáá¬áá±á¬ á¡á±á¬áºáá«ááŸá¬ááẠá¡á¬ááá¶áá»áẠááá¯á¡ááºáá«á ááá¯á·ááá¯áẠpayloads áá»á¬ážá០metadata ááᯠáá¯ááºáá°ááẠááá¯á¡ááºáá«áá partitioning ááẠááẠá¡áá®ážááẠáá±á·áá¬ááá·áºááá·áº á¡áá¬áá áºáᯠááŒá áºáááºá
Kafka á á¡ááá¯ááºážá¡áá¬ááŸáá·áº á áœááºážáá±á¬ááºááẠá¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááẠááá¬ážááá¯ážáá» ááœá²á á¬ážáá»á¬ážá áá¬áááºá¡áá»áá¯á·ááᯠáá¯á¶ážá áœá²áá°áᶠááœáŸá²ááŒá±á¬ááºážááŒááºážá០áá¬áá«áááºá á€ááá á¹á ááœááºá á¡ááŒáá¯ááºá¡áá¯ááºáá¯ááºáá±áá±á¬ á á¬ážáá¯á¶ážáá°áá»á¬ážá áœá¬ááŒá¬ážááœáẠááŒá áºááá¯ááºáá»á±ááŸááá±á¬ áááºá ááºáááºáá±á·áá»áºáá»á¬ážááᯠááŒáá·áºáá±ááẠáá¯á¶ážááŒááºáá»ááºáá áºáá¯áá»áááºá
JMS ááœá²á á¬ážáá»á¬ážáááºáááºáž ááá¯áá²á·ááá¯á·áá±á¬ ááá¯á¡ááºáá»ááºáá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážááẠááá¯á¡ááºáá«áááºá á áááºáááºá á¬ážá áá¬áá±á¬ááºážáááºááŸá¬á JMS Message Groups (sticky load balancing (SLB) áááºážáá»á°áá¬ááœáẠááœá²ááœá²ááŸá¯áá áºáá¯) ááá¯á¡áá¯á¶ážááŒá¯ááá·áº áá°áá®áá±á¬á á¬ážáá¯á¶ážáá°áá¶ááá¯á· áááºá ááºáááºáá±á·áá»áºáá»á¬áž áá±ážááá¯á·ááŒááºážá¡ááœáẠááá¹ááá¬ážááẠáá±ážááá¯á·áá°á¡á¬áž áááºáá±á·áá»áºáá»á¬ážááŸáá·áº áááºá ááºááŒá±á¬ááºáž á¡ááŸááºá¡áá¬ážááŒá¯ááẠááá¯á¡ááºáá«áááºá JMS ááá á¹á ááœááºá á€á¡á¯ááºá á¯ááŸáá·áºáááºááá¯ááºáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠáá¯á¶ážá áœá²áá°áá áºáŠážáᶠáá±ážááá¯á·áááºááŸáá·áº á á¬ážáá¯á¶ážáá° ááŒá¯ááºáá»áá«á á¡á¯ááºá á¯á ááá¯ááºááá¯ááºááŸá¯ááᯠááœáŸá²ááŒá±á¬ááºážáá±ážááẠáá¬áááºááŸááááºá
áá¯ááºáá¯ááºáá°ááá±á¬áá°áá®áá»ááºáá»á¬áž
áááºáá±á·áá»áºááá¯á·ááá·áºá¡áá«ááœáẠá¡ááá¯ááºážááá¯ááºážááœá²ááŒááºážááẠááá·áºááœááºážá ááºážá á¬ážáááá·áº áá áºáá¯áááºážáá±á¬á¡áá¬ááá¯ááºáá«á Java API ááŸá áá¯ááºáá¯ááºáá° á¡áááºážá send() áááºážáááºážáá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);
áááºážáááºážááŸá áºáá¯á áá¯á¶ážááẠFuture ááŒááºáá¬ááŒá±á¬ááºáž áá»ááºááŒááºážáááááŒá¯ááá·áºáááºá áááºážááẠáá±ážááá¯á·ááŒááºážáá¯ááºáááºážááᯠáá»ááºáá»ááºážáá¯ááºáá±á¬ááºááŒááºážáááŸáááŒá±á¬ááºáž ááœáŸááºááŒáááºá ááááºááŸá¬ áááºááŒáœáá±á¬á¡ááá¯ááºážáá áºáá¯á á®á¡ááœáẠáá±ážááá¯á·ááŸá¯ááŒá¬ážáá¶ááá¯á· áááºáá±á·áá»áºáá áºáᯠ(ProducerRecord) ááá¯áá±ážááŒá®áž Kafka áááá¯ááºážááá·áºá á¬ááŒáá·áºááá¯ááºááŸá áá±á¬ááºáá¶á¡ááŒá±á¬ááºážá¡áá¬á¡ááŒá Ạááœá²á á¬ážáᶠáá±ážááá¯á·ááŒááºážááŒá áºáááºá áááºážááẠá¡áá¬áá»á¬ážááᯠááá¯á¶ááá¯ááºáá±á¬ááºá¡á±á¬áẠááŒááºáááºá á±áá±á¬áºáááºážá á¡ááœá±á·á¡ááŒá¯á¶áááŸááá±á¬ á¡ááá®áá±ážááŸááºážáá áºáá¯ááẠáááºážááá¯ááºáááºážá ááºááᯠáááºááá·áºáá«á áááºáá±á·áá»áºáá»á¬áž áá¯á¶ážááŸá¯á¶ážááá¯ááºáááºáᯠááá¯ááá¯áááºá
á¡ááŒá²ááá¯ááá¯á á áœááºážáá±á¬ááºáááºáá¯ááºáá»á ááááºááŒáá·áº áá±ážááá¯á·ááŒááºážáá¯ááºáááºážááᯠááá¯ááá¯áá¯á¶ááŒááºá áááºáá»áá á±ááẠáááºážáááºážáá áºáá¯ááŸááá«áááºá á€ááŒá¬ážáá¶á¡ááœááºá¡á á¬ážááᯠ0 áᯠáááºááŸááºááá¯ááºááŒá®ážá áá±ážááá¯á·ááá·áº á¡ááá®áá±ážááŸááºážáá¯ááºááẠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááœá²á á¬ážáá¶ááá¯á· áááºáá±á·áá»áºááœáŸá²ááŒá±á¬ááºážááŒááºáž áááŒá®ážááá»ááºáž á á±á¬áá·áºááá¯ááºážááááºááŒá áºáá«áááºá
RecordMetadata metadata = producer.send(record).get();
áááºáá±á·ááºá»áá»á¬ážáááºááŒááºážá¡ááŒá±á¬ááºážááá¯ááá¯
áááºáá±á·áá»áºáá»á¬ážáááºááŒááºážááẠááá·áºááŸááºážááẠááá¯á¡ááºáá±á¬ ááŸá¯ááºááœá±ážááŸá¯áá»á¬áž ááŸááá«áááºá áááºáá±á·áá»áºáá áºáá¯á¡á¬áž áá¯á¶á·ááŒááºáá¬ááœáẠáááºáá±á·áá»áº áá¬ážáá±á¬ááºáá°á¡á¬áž áá¯ááºáá±á¬ááºááá¯ááºááá·áº JMS API ááŸáá·áº ááá°áá²á á á¬ážáá¯á¶ážáá° Kafka ááẠááá¹ááá²áá»á¬ážáá¬ááŒá áºáááºá áááºážáááºážááᯠá¡áá®ážááẠáá±á·áá¬ááŒáá·áºáá¡á±á¬áẠá á áºáááºáž()á€áááºááœááºáá»ááºá¡ááœááºá¡áá¯á¶ážááŒá¯áááº-
ConsumerRecords < K, V > poll(long timeout);
method á return value ááẠobject á¡áá»á¬ážá¡ááŒá¬ážáá«áááºáá±á¬ container structure áá áºáá¯ááŒá áºáááºá á á¬ážáá¯á¶ážáá°ááŸááºáááºáž ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ partitions áá»á¬ážá áœá¬ááŸá á á¬ážáá¯á¶ážáá°ááŸááºáááºáž áááºážááẠáááºážááŸáááºážáááºáá¬áá±á¬ á¡áááºážááá·áºáá²á·ááá¯á·áá±á¬ áááºá ááºáááºáá¬áá±áá¬áá«áá±á¬ áá±á¬á·áááºááá¯ážá¡ááœá²á¡ááœáẠááá¯ááºáá±á¬ááºáá¬ážááá·áºá¡áá¬áá áºáá¯ááŒá áºáááºá
á¡áááºáž 2 ááœáẠááœá±ážááœá±ážáá¬ážááá·áºá¡ááá¯ááºážá áááºážááá¯á·ááᯠá¡á±á¬ááºááŒááºá
áœá¬áá¯ááºáá±á¬ááºááŒááºáž ááá¯á·ááá¯áẠáá¡á±á¬ááºááŒááºáá«á áááºáá±á·áá»áºáá»á¬áž áááºááá¯á·ááŒá
áºáááºááᯠáá»áœááºá¯ááºááá¯á· ááŸááºáá¬ážáá¬ážááááºááŒá
áºááŒá®ážá á¥ááá¬á áá±á¬ááºáááºááẠáááºáá±á·áá»áºááᯠááá±á¬ááºááœááºááá¯ááºáá«á ááá¯á·ááá¯áẠáá»ááºááœá¬ážáá«áá JMS ááœááºá áááºážááᯠá¡ááá¡ááŸááºááŒá¯áá¯ááºááŒáá·áº ááá¯ááºááœááºáá²á·áááºá ááœá²á
á¬ážááẠá¡á±á¬ááºááŒááºá
áœá¬ áá¯ááºáá±á¬ááºááŒá®ážáá±á¬ áááºáá±á·áá»áºááᯠáá»ááºáá
áºááẠááá¯á·ááá¯áẠá¡ááŒááºáž ááá¯á·ááá¯áẠáááºáá±á·ááºá»á¡áá¯ááᯠááŒááºáááºáá±ážááá¯á·ááẠ(ááœá±áá±ážááœá±áá°áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºáᯠáá°ááááº)á
Kafka ááẠá¡ááœááºááœá²ááŒá¬ážá
áœá¬ á¡áá¯ááºáá¯ááºáááºá áááºáá±á·áá»áºáá»á¬ážááᯠá
áá
á
áºáááºááŒá®ážáá±á¬áẠááœá²á
á¬ážááœáẠáá»ááºáááºááá¯ááºáá«á áá»ááºááœááºááŸá¯ááœáẠááŒá
áºáá»ááºááœá¬ážáá«á á
áá
á
áºáá±ážáá¯ááºááá¯ááºááá¯ááºá áá¬áááºááŒá
áºáááºá
áá»áœááºá¯ááºááá¯á·ááŒá±á¬áá²á·ááá·áºá¡ááá¯ááºážá á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááẠááŸááºáááºážááŸá á¡á±á¬á·ááºáááºááŸáá·áº áááºá ááºáá±áááºá á€á¡á±á¬á·ááºáááºááŸáá·áºáááºá ááºáá±á¬ ááŸááºáááºážá¡áá±á¡áá¬ážááẠáá¯á¶á·ááŒááºááŸá¯á¡ááœáẠáá¯ááºááŒááºááá·áºáá±á¬ááºáááºáááºáá±á·áá»áºááŸáá·áº ááá¯ááºáá®áá«áááºá á á áºáááºáž(). á€á¡á±á¬á·ááºáááºááá¯ážáá¬ááá·áºá¡áá»áááºá á á¬áááºááẠá¡áá¯á¶ážá¡ááŒááºáá±ážáááºá
á á±á¬á á±á¬á ááœá±ážááœá±ážáá²á·ááá·áº áááºááŸá¯ááŒááºážáá¯á¶á á¶ááá¯á· ááŒááºááœá¬ážááŒááºážá áááºáá±á·áá»áºáá¯ááºáá±á¬ááºááŒááºážááœáẠá¡ááá·áºáá¯á¶ážááá·áº áá«áááºáááº-
- áááºááŸá¯áááºá¡ááœáẠá á¬áá áºá á±á¬ááºááᯠááá°áá«á
- áááºáá±á·áá»áºááᯠáá¯ááºáá±á¬ááºáá«á
- áááºáá±á·áá»áºááᯠá¡áááºááŒá¯áá«á
Kafka á á¬ážáá¯á¶ážáá°ááẠááœá²á·á ááºážááŸá¯áá¯á¶á ᶠááœá±ážáá»ááºááŸá¯áá áºáá¯áá«ááŸááááºá enable.auto.commit. áááºážááẠ"á¡á±á¬áºááá¯" áá°áá±á¬ á áá¬ážáá¯á¶ážáá«ááŸááá±á¬ áááºáááºáá»á¬ážááœáẠáááŒá¬áá á¡áá¯á¶ážááŒá¯áá±á·ááŸáááá·áº áá¯á¶áá±áááºáááºáá áºáá¯ááŒá áºáááºá
Kafka 0.10 áááá¯ááºáá®á á€ááœá±ážáá»ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááá·áº client ááẠáá±á¬ááºáá¬ááá·áºáá±á«áºááá¯ááŸá¯ááœááºáááºáá²á·áá±á¬ áá±á¬ááºáá¯á¶ážáááºáá±á·áá»áºá offset ááᯠáá±ážááá¯á·áááºááŒá áºáááºá á á áºáááºáž() áá¯ááºáá±á¬ááºááŒá®ážáá±á¬ááºá ááá¯ááá¯áááºááŸá¬ áááá¯ááºážááá·áºá áááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááŒá®ážááŒá áºáá±á¬áºáááºáž ááá±á«áºááá¯áá® ááá»áŸá±á¬áºááá·áºáá² áá»ááºááœá¬ážáá«á áá¯ááºáá°ááŒá®ážáá±á¬ áááºááá·áºáááºáá±á·áá»áºáá»á¬ážááá¯áááᯠááŒááºáááºáá¯ááºáá±á¬ááºááá¯ááºáááºáᯠááá¯ááá¯áááºá á á áºáááºáž(). ááœá²á á¬ážááẠáááºáá±á·áá»áºááᯠá¡ááŒáááºáá±áááºáá»áŸáááºááŒá®ážááŒá±á¬ááºáž á¡ááŒá±á¡áá±ááᯠááááºážáááºážááá¬ážáá±á¬ááŒá±á¬áá·áºá ááá¯á á¬ááᯠááŒááºáááºááá°ááá·áº áá±á¬ááºá á¬ážáá¯á¶ážáá°ááẠááá¯ážááœá¬ážááá·áºá¡áá¬áá áºáá¯ááᯠááááŸááááºááá¯ááºáá«á á€á¡ááŒá¯á¡áá°ááẠááááºáááºááŸáá·áºááŒá¬ážááŸá¯ááŒá áºáááºá áááºáá±á·áá»áºááᯠá¡á±á¬ááºááŒááºá áœá¬ áá¯ááºáá±á¬ááºááŒá®ážááŸáᬠá¡á±á¬á·ááºáááºááᯠáááááááºááŒá¯áá¬ážáá±á¬áºáááºáž áá¯á¶ážá áœá²áá°á áá»ááºááá¯ááºáá»áŸáẠááœá²á á¬ážááẠáá°áá®áá±á¬áááºáá±á·áá»áºááᯠá¡ááŒá¬áž client ááá¯á· áááºáá¶áá±ážááá¯á·áááºááŒá áºáááºá á€á¡ááŒá¯á¡áá°ááẠááááºážá áá¬ážáá±ážááá¯á·ááŒááºážááŸáá·áº ááá¯ááºáá®áááºâá¡áááºážáá¯á¶ážááá«áá±á¬ááºáá±á¬á·"á
Kafka 0.10 ááœááºá configure áá¯ááºáá¬ážááá·áºá¡ááá¯ááºáž client library á០commit ááᯠá¡áá«á¡á¬ážáá»á±á¬áºá áœá¬ á¡á áá»áá¯ážááá¯ááºá á±ááẠáá¯ááºááᯠááŒá±á¬ááºážáá²áá¬ážáá«áááºá auto.commit.interval.ms. á€á¡ááŒá¯á¡áá°ááẠJMS AUTO_ACKNOWLEDGE ááŸáá·áº DUPS_OK_ACKNOWLEDGE áá¯ááºáá»á¬ážááŒá¬ážááœáẠááŸááá±áááºá á¡á±á¬áºááá¯ááœááºáá áºááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá«á áááºáá±á·áá»áºáá»á¬ážááᯠáááºážááá¯á· á¡ááŸááºáááẠáá¯ááºáá±á¬ááºááŒááºážááŸááááŸá áááœá²ááŒá¬ážáá² áááááŒá¯ááá¯ááºááẠ- ááŸá±ážááœá±ážáá±á¬ á á¬ážáá¯á¶ážáá°á¡ááœáẠááŒá áºáá±á«áºáá¬ááá¯ááºáááºá á á¬ážáá¯á¶ážáá°áá áºáŠážááᯠáá»ááºááááºážááá¯ááºáá«á áááºáá±á·áá»áºáá»á¬áž ááœá²áá»á±á¬áºááœá¬ážááá¯ááºááá·áº áááºáá±á·áá»áºááᯠáááááááºááŒá¯áá¬ážááá·áº á¡áá±á¡áá¬ážá០á áááºáᬠáá±á¬ááºá á¬ážáá¯á¶ážáá°á០áááºáá±á·áá»áºáá»á¬ážááᯠááá°ááœá¬ážáááºááŒá áºáááºá á€ááá á¹á ááœááºá Kafka ááẠáááºáá±á·áá»áºáá»á¬ážááᯠááá¯á¶ážááŸá¯á¶ážáá²á·áá«á áááºááŸá¯ááŒááºážáá¯ááºááẠáááºážááá¯á·ááᯠááá¯ááºáá±á¬ááºááá¯ááºáá«á
á€áá¯ááºááœáẠáá¬ážááŸááºáž 0.9 áá²á·ááá¯á·áá°áá®áá±á¬ ááááá»á¬áž áá«ááŸááááº- áááºáá±á·áá»áºáá»á¬ážááᯠá á®áá¶áá±á¬ááºááœááºááá¯ááºáááºá ááá¯á·áá±á¬áº áá»ááºááœááºáá«áá á¡á±á¬á·ááºáááºááᯠáá»á°ážááœááºáááºááá¯ááºáá«á áá±ážááá¯á·ááŸá¯ááᯠááŸá áºáááŒá áºá á±ááá¯ááºáááºá áá¯ááºáá±á¬ááºááá·áºá¡áá« áááºáá±á·áá»áºáá»á¬áž áá»á¬ážáá»á¬ážáá°áá±ááŒá áºáááºá á á áºáááºáž()áá®ááŒá¿áá¬á ááá¯áá»á¬ážáááºá
á á¬áá»ááºááŸá¬ 21 ááŸá âáááºážá á®á á¬á០áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŸá¯ááŒááºážâ ááœáẠááœá±ážááœá±ážáá¬ážááá·áºá¡ááá¯ááºážá áá»áá¯á·ááœááºážáá»ááºáá¯ááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážááá·áºá¡áá« á á¬ááá¯áá±ážááá¯á·ááŒááºážá áá áºááœáẠáá áºááŒáááºáᬠáááºáá±á·áá»áºáá±ážááá¯á·ááŒááºážáá²á·ááá¯á· á¡áá¬áááŸááá«á
Kafka ááœááºá á¡á±á¬á·ááºááẠ(offset) ááᯠáááááŒá¯ááŒááºáž (commit) áá¯ááºááẠáááºážáááºáž ááŸá áºáá¯ááŸááááºá ááá á¹á ááŸá áºáá¯áá¯á¶ážááœááºá áááºáá±á·áá»áºááᯠá á®áá¶áá±á¬ááºááœááºáá±á¬áºáááºáž áá¡á±á¬ááºááŒááºáá«á áááºáá±á·áá»áºáá»á¬ážááᯠá¡ááŒáááºáá±á«ááºážáá»á¬ážá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáááºá áá±á¬ááºáá¶ááœáẠcommit ááŒá áºááœá¬ážááŒá®áž áááºážááᯠááá¯ááºáá±á¬ááºáá® ááá·áºáá¯ááºááᯠá¡ááŒá®ážáááºáá²á·ááẠ(Kafka 0.9 ááŸáá·áº á¡á á±á¬ááá¯ááºážááœáẠááŒá áºááá¯ááºáááº) áááºáá±á·áá»áºááᯠááá¯ááºáá±á¬ááºáááºáááºáž áááºááœá±ážáá»ááºááá¯ááºáááºá
ááá·áºáááºáá±á¬ááºááᯠáááºááŸááºááŒááºážááŒáá·áº Kafka á á¬ážáá¯á¶ážáá° API ááœáẠmanual offset commit áá¯ááºáááºážá ááºááᯠáááºááááºážáá»á¯ááºááá¯ááºáááºá enable.auto.commit á¡áá¯á¡áá±á¬ááºááŸáá·áº á¡ááá¡áááºážáá±á«áºááá¯ááẠá¡á±á¬ááºáá«áááºážáááºážáá»á¬ážáá²ááŸáá áºáá¯
void commitSync();
void commitAsync();
"á¡áááºážáá¯á¶áž áá áºááŒáááº" áá°áá±á¬ áááºáá±á·áá»áºááᯠáá¯ááºáá±á¬ááºááá¯áá«á offset ááᯠááá¯ááºááá¯ááºááŒá¯áá¯ááºááá«áááºá commitSync()áááºáá±á·áá»áºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒá®ážáááºááŸáá·áº áá»ááºáá»ááºážááẠá€á¡áááá·áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŒáá·áºá
á€áááºážáááºážáá»á¬ážááẠáááºáá±á·áá»áºáá»á¬ážááᯠááá¯ááºáá±á¬ááºáá® á¡ááá¡ááŸááºááŒá¯ááŒááºážááᯠááœáá·áºáááŒá¯áá±á¬áºáááºáž á¡áá±á¬ááºážá¡áááºááŒá áºááŒááºážáá¡ááœááºá¡ááŒááºááᯠáá±ážáá±á¬ááºáá±áá»áááºááœáẠááŒá áºááá¯ááºáá»á±ááŸááá±á¬ áá¯ááºáá±á¬ááºááŸá¯ááŸá±á¬áá·áºááŸá±ážááŸá¯áá»á¬ážááᯠáááºááŸá¬ážááẠáááºážááá¯á·ááẠáááºááá·áºá¡áá¬ááá¯áá»áŸ ááá¯ááºáá«á Kafka ááœáẠá¡áá±á¬ááºážá¡áááºáá»á¬áž áááŸááá«á áá±á¬ááºáááºááẠá¡á±á¬ááºáá«ááá¯á·ááᯠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážáááŸááá«-
- á¡áá¯á¡áá±á¬áẠáááºáá±á·áá»áºááᯠá¡ááá¯á¡áá»á±á¬áẠááŒááºááŸáá·áºáá«á áááºáá±á·áá»áºáá»á¬áž ááŒááºáááºáá±ážááá¯á·ááẠááœá²á á¬ážááᯠá¡á¬ážááá¯ážááááá±á¬ááŒá±á¬áá·áº áá¯á¶ážá áœá²áá°áá»á¬ážááẠááŒá¿áá¬ááŸááá±á¬ payload áá»á¬ážááŸáá·áº backend ááŒááºáá±á¬ááºááŸá¯áá»á¬ážá០ááŒáœááºážáá»ááºáá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážááááºááŒá áºáááºá
- á¡ááºáááºáá¯ááºáá±á¬ááºááŸá¯áá áºáá¯ááœáẠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá áœá¬áᶠá á¬ááá¯áá±ážááá¯á·áá«á áááŒá¬áá® áá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááááºááŒá áºááŒá®ážá ááá°áá®áá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááŸáá·áº á¡áááºážááá·áºáá»á¬ážááᯠáá±ážááá¯á·ááá·áºá¡áá« ááœá±áá±ážááœá±áá°áá»á¬ážááᯠááŸáááŸáá¯ááºážááŒááºážáááŸááá±á¬ Kafka á¡á á¯á¡áá±ážááŸá ááá°áá®áá±á¬á ááºáá»á¬ážááœáẠáááºááŸáááá¯ááºáááºá á€á á¬áá±ážáá»áááºá KIP-98 ááŸáá·áº ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ á¡áá¯ááºá¡áá»áá¯á·ááᯠáá¯ááºáá±á¬ááºáá²á·áááºá
- á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯á០áááºáá±á·áá»áºáá áºáá¯ááᯠáááºááŸá¯ááŒááºážááŸáá·áºá¡áá° á¡ááŒá¬ážá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááá¯á· á¡ááŒá¬ážáááºáá±á·áá»áºáá áºáᯠáá±ážááá¯á·ááŒááºážááŸáá·áº áá»áááºáááºáá«á ááááºá Kafka áááá¯áá¬áááºáá¬ááẠáááºá áºáá¬ážáá áºá ááºážáááºážááŒáá·áº áááºáááºáá±ááá·áº ááœááºáááºáá±á¬ á ááºáá»á¬ážá áœá¬áá±á«áºááœáẠáá°áááºááŒá®áž áááºážááᯠáá¯á¶ážááœááºááẠááŒáá¯ážáááºážááŸá¯áá»áá¯áž ááá¯ááºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºá¡á¬áž ááá·áºááºáá»áááºááá¯ááºá á±ááá·áº API á¡á áááºá¡ááá¯ááºážáá»á¬áž áááŸááá«á á á¬ážáá¯á¶ážáᰠО áá¯ááºáá¯ááºáá° á¡áá±á¬ááºážá¡áááºáá áºáá¯ááœááºá JMS ááœááºá áááºážááᯠá¡áá¬ááá¹áá¯á០áá¶á·ááá¯ážáá±ážáá«áááºá sessionáááºáá®ážáá¬ážáá¬ááœá±áá«á MessageProducers áá»á¬áž О áááºáá±á·áá»áºá á¬ážáá¯á¶ážáá°áá»á¬áž.
á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠááœá±áá±ážááœá±áá°áá»á¬ážááᯠá¡á¬ážááá¯ážááááá«áá ááá¬ážááá¯ážáá» á á¬ááá¯áá±ážááá¯á·ááŒááºážá áá áºáá»á¬ážá០áá±ážáá±á¬ááºáá±á¬ áá±á«áá¬ááá»á¬ážááŸáá·áº ááá¯ááá¯áá®ážá ááºáá±á¬ áá±á«áá¬ááá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áááºááá¯á·áá±ážáá±á¬ááºááá¯ááºáááºáááºážá
áááºáá±á·áá»áºááᯠááá¯ááºáá±á¬ááºáá®ááœáẠáá¯á¶ážá áœá²áá°á á¡á±á¬á·ááºáááºááẠááá¯ážáá¬ááá¯ááºááá·áº ááŒá áºááá¯ááºááŒá±ááŸááá«áá á á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááẠáááºážááᯠá¡áááºážááá·áºáá áºáá¯áááºááŸááºáá±ážááá·áºá¡áá« áááºážáá á¬ážáá¯á¶ážáá°á¡á¯ááºá á¯ááẠáááºáá±á·áá»áºááœááºááœá¬ážááŒááºáž ááŸáá áááŸá ááááŸáááá¯ááºáááºááá¯ááºáá±á ááá¯á·ááŒá±á¬áá·áº áá»á°áá¬áá áºáá¯ááẠáá±ááááᯠááááºá¡áá±á¡áá¬ážááá¯á· ááŒááºááŒáá·áºáááºááŒá áºáááºá Kafka á á¬ážáá¯á¶ážáá° API ááẠá€á¡ááœáẠá¡á±á¬ááºáá«áááºážáááºážáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááº-
void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);
áááºážáááºáž ááŸá¬áááº() áááºážáááºážááŒáá·áº áá¯á¶ážááá¯ááºáááºá
offsetsForTimes(ááŒá±áá¯á¶ á¡áá»áááºáá¶ááááºááŸá¬ááœá±áááº) á¡ááááºá áááºááŸááºáá¬ážáá²á· áá±áá¬ááŸá¬ á¡ááŒá±á¡áá±ááᯠááŒááºááŒáá·áºááá¯á·á
ááœááºááá¯ááºáá±á¬á¡á¬ážááŒáá·áºá á€áá»ááºážáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááááºá áá¯ááºáá±á¬ááºáá²á·áá±á¬ á á¬ááá¯á¡áá»áá¯á·ááᯠááŒááºáááºáááºááŸá¯ááŒá®áž ááŒááºáááºáá¯ááºáá±á¬ááºááá¯ááºááœááºááŸááááºáᯠááá¯ááá¯áá«áááºá áááºážááá¯ááŸá±á¬ááºááŸá¬ážáááºá á¡áááºáž 4 ááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá ááááºááŒáá·áºááŸá¯áá¬ážááá·áºá á¬áá»á¬ážááá¯ááŒá±áá¬áá¶ááŒá®áž áááºáá±áá±á¬áá»á¬ážááá¯áááºááŸá¬ážáá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡á áœááºážáááºáá±á¬á á¬áááºááŒááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá áºáááºážá¡á¬ážááŒáá·áºá áááºáá±á·áá»áºáá¯á¶ážááŸá¯á¶ážááŸá¯ ááá¯á·ááá¯áẠááœá¬ážááŒááºážááᯠáááºáá¶ááá¯ááºáááœá±á· áááºáá á¬ážáá¯á¶ážáá°áá¯ááºááᯠááá¯ážááŸááºážá áœá¬ ááááºážááááºážáá¬ážááá¯ááºáááºá ááŸááºáááºážááŒá áºáááºáá»á¬ážá áááºááá áºáá»á¬ážááᯠááá¯ááºááœááºááŒááºážá ááá áºááŒá±áá¬áá¶ááŒááºážá áááºááŒáá·áº Kafka ááᯠá¡áá¯á¶ážáá»á¬ážáá±á¬ á¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á áá»á¬ážááᯠááŒáá·áºáá±á¬á¡áá«á áááºáá±á·áá»áºáá áºáá¯áá»ááºážá á®á áá¯á¶ážááŸá¯á¶ážááŸá¯ááẠá¡áá®ážáá¬ážááŸá á¡ááá®áá±ážááŸááºážáá»á¬ážá¡áá±á«áº áááááá¬áᬠáááºáá±á¬ááºááŸá¯ááŸááááºááá¯ááºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááá±á¬áá±á«ááºáá«áááºá ááá¯ááá¯á·áá±á¬ááá á¹á áá»á¬ážááœááºá áá¯á¶áá±áááºááá¯ážáá»á¬ážááá¯áá¯á¶ážááááºáá¶ááá¯ááºááœááºááŸááááºá á¡ááŒá¬ážáá áºáááºááœááºá áááºááá»áŸá±á¬ááºááœáŸá¬ááẠááœá±áá±ážáá»á±ááŸá¯áá»á¬ážááᯠáá±ážááá¯á·ááẠááá¯á¡ááºáá«áá áá áºáŠážáá»ááºážá á®á áááºáá±á·áá»áºáá áºá á±á¬ááºá á®ááᯠááá¯áá áá¯áẠááá¯á áá¯ááºááá«áááºá áá«ááœá±á¡á¬ážáá¯á¶ážá áááºá ááºááŸá¯áá±á«áº áá°áááºáá«áááºá
áááºáá±á·áá»áºáá»á¬ážá ááŒááºážáááºááŸá¯ ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ áááºáá±á·áá»áºáá áºáá¯á á®á áááºááá¯ážááẠáá»á±á¬á·áá»ááœá¬ážááŒá±á¬ááºáž ááá¯ááºáá±ážááá¯ááºáᬠáá±á·áá¬ááœá±á·ááŸááá»ááºáá»á¬ážá áá±á¬áºááŒáááºá áá±á«ááºážá ááºážáá¬ážáá±á¬áá¯á¶á á¶ááŒáá·áº ááŒáá·áºáá±á¬á¡áá« ááŒá®ážáá¬ážáá±á¬á á¬ááá¯áá»á¬ážááᯠáááºááá¯ážááŸááááºáááºá
ááŒáá·áºáá¬ážáá±á¬áááŸáááá¯ááºááŸá¯
ááŒáá·áºáá¬ážáá±á¬áááŸáááá¯ááºááŸá¯áá®ááá¯á· Kafka ááá»ááºážáááºááŸá¯ááẠActiveMQ ááá»ááºážáááºááŸá¯ááŸáá·áº á¡ááœááºááœá¬ááŒá¬ážáááºá Kafka ááẠááœá²á á¬ážááŒá áºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá áºáá»áááºáááºážááœáẠáááºáá¶áááŸááᬠáááºáá±á·áá»áºáá»á¬áž ááŒáá·áºáá±áá±ážááá·áº á áá±ážá¡ááœáẠá¡á á¯á¡áá±ážáá»á¬ážááᯠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá
Kafka á¡á á¯á¡áá±ážáá áºáá¯ááœáẠááá°áá®áá±á¬ áá¬áá¬áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá±ááá·áº ááœá²á á¬ážááŒá áºáááºáá»á¬ážá áœá¬ áá«áááºáááºá Kafka ááẠnode áá áºáá¯á á®ááœáẠááá¯ááºááá¯ááºáá®ážááá·áºááá¯ááŸá±á¬ááºááŸá¯áá«ááŸáááá·áº áá¬áá¬ááºáá®ážááá·áº áá¬á·ááºáá²áá±á«áºááœáẠá¡áá¯ááºáá¯ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá ááœááºáááºáá»áááºáááºáá¬ážáá±á¬ ááá¯ááŸá±á¬ááºááŸá¯ (SAN) ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááᯠááá±á¬ááºáá¶áá« á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº ááœááºááŒá°áᬠá¡áá»á¬ážá¡ááŒá¬ážááẠá¡áá»áááºááŸáá·áºá¡áá»áŸ ááŸááºááŒáá¯ááºááá¯ááºáá±á¬ááŒá±á¬áá·áº ááŒá áºáááºáЫe ááá¯ááŸá±á¬ááºááŸá¯ááŒá¬ážáá¬ááá»á¬ážááŸáá·áºáááááá¹ááá»á¬ážááá¯áááºáá®ážáá«á
Kafka ááẠá¡ááŒá²áááºážáá±á«áºáááºá á áá áºá Kafka á¡áá¯á¶ážááŒá¯áá° á¡áá»á¬ážá¡ááŒá¬ážááẠáááºážááá¯á·á á¡á á¯á¡áá±ážáá»á¬ážááᯠáááºáá±á¬á·á០áááááºáá² áá±á¬á·ááºáá²ááºááᯠá¡á ááºááá¯áẠááŒááºáááºá áááºááŒááºážááŒáá·áº á¡ááŒá²áááºáž update áá¯ááºáá«áááºá áááºáá±á·áá»áºáá»á¬ážááŸáá·áº ááœá²á á¬ážáá»á¬ážááŒá¬áž á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯áá»á¬ážá¡ááœáẠááááºáá¬ážááŸááºážááŸáá·áº ááá¯ááºáááºáá®ááŸá¯ááŸáá á±ááẠá¡á¬ááá¶ááŒááºážááŒáá·áº áááºážááᯠáááŸáá á±áá«áááºá
ááœá²á
á¬ážáá»á¬ážááẠáá¬áá¬á¡á
á¯á¡áá±ážááá¯á· áá»áááºáááºáá¬ážáááºá
á¡ááŒá±áá¶ááá á¹á ááœááºá áá±á«ááºážá ááºáá áºáá¯ááᯠá¡á±á¬ááºáá«áá¯ááºááá¹áááá»á¬ážááŒáá·áº Kafka á¡á á¯á¡áá±ážááœáẠáááºáá®ážáááº-
- partitions á¡áá±á¡ááœááºá á¡á á±á¬ááá¯ááºážááœáẠááœá±ážááœá±ážáá²á·ááá·áºá¡ááá¯ááºážá á€áá±áá¬ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áááá»áá±á¬áááºááá¯ážááẠááŒáá¯ááºáá°áááºááŒááºážá ááá¯áá»ááºáá±á¬á¡ááá·áºáá±á«áºááœáẠáá°áááºáá«áááºá
- áá¯á¶áá°ááœá¬ážááŒááºážá¡áá»áẠ(á¡áá»ááº) ááẠá€á¡ááá·áºá¡ááœáẠááŸááºáááºážáá»á¬áž á¡á á¯á¡áá±ážááŸá ááœá²á á¬ážááŒá áºáááºáá»á¬áž áááºáá»áŸáá«áááºááá·áºáááºááᯠáá¯á¶ážááŒááºáááºá
ááŸáááŸáá¯ááºážááŸá¯á¡ááœáẠZooKeepers ááᯠá¡áá¯á¶ážááŒá¯á Kafka ááẠá¡á á¯á¡áá±ážááŸá ááœá²á á¬ážáá»á¬ážá¡ááŒá¬áž á¡ááá¯ááºážá¡áá áºáá»á¬ážááᯠáá»áŸáá»áŸáá ááŒáá·áºáá±ááẠááŒáá¯ážáááºážáááºá áááºážááᯠController á¡ááŒá Ạáá¯ááºáá±á¬ááºááá·áº áá¬áááá áºáá¯á០áá¯ááºáá±á¬ááºáááºá
runtime ááŸá¬ áá±á«ááºážá ááºááœá²áá áºáá¯á á®á¡ááœáẠcontroller ááᯠááœá²á á¬ážáá áºáŠážáᶠá¡áááºážááá¹ááá»á¬áž áááºááŸááºáá±ážáááºá áá±á«ááºážáá±á¬áẠ(áá±á«ááºážáá±á¬ááºá ááááºá áááºáááºáá°) ááŸáá·áº áá±á¬ááºááá¯ááºáá»á¬áž (áá±á¬ááºááá¯ááºá áá»áœááºá áááºá¡á±á¬ááºáááºáá¬áž)á á€ááœá²áááºážá¡ááœáẠáŠážáá±á¬ááºáá°á¡ááŒá Ạáá±á¬ááºááœááºáá±á¬ ááœá²á á¬ážááẠáá¯ááºáá¯ááºáá°á០áá±ážááá¯á·áá±á¬ áááºáá±á·áá»áºá¡á¬ážáá¯á¶ážááᯠáááºáá¶áááŸááááºááŸáá·áº á á¬ážáá¯á¶ážáá°áá»á¬ážáᶠáááºáá±á·áá»áºáá»á¬áž ááŒáá·áºáá±áá±ážááẠáá¬áááºááŸááááºá áá±á«ááºážá ááºááœá²áááºážáá áºáá¯ááá¯á· áááºáá±á·áá»áºáá»á¬ážááᯠáá±ážááá¯á·áá±á¬á¡áá«á áááºážááá¯á·ááẠááá¯á¡ááá¯ááºážá¡ááœáẠáá±á¬ááºááá¯ááºáá»á¬ážá¡ááŒá Ạáá¯ááºáá±á¬ááºááá·áº ááœá²á á¬ážáá¯á¶ááŸááºáá»á¬ážá¡á¬ážáá¯á¶ážááá¯á· áá¯á¶áá°ááœá¬ážááœá¬ážáááºááŒá áºáááºá partition áá áºáá¯á¡ááœáẠlog áá»á¬ážáá«ááŸááá±á¬ node áá áºáá¯á á®ááᯠáá±á«áºáááºá áá¯á¶áá°. ááœá²á á¬ážáá áºáŠážááẠá¡áá»áá¯á·áá±á¬á¡ááá¯ááºážáá»á¬ážá¡ááœáẠáá±á«ááºážáá±á¬ááºá¡ááŒá áºáááºážáá±á¬ááºážá á¡ááŒá¬ážáá°áá»á¬ážá¡ááœáẠáá±á¬ááºááá¯ááºá¡ááŒá áºáááºážáá±á¬ááºáž áá±á¬ááºááœááºááá¯ááºáááºá
áá±á«ááºážáá±á¬ááºá ááá¯ááºáá±á¬ááºáá¬ážáá²á· áááºáá±á·ááºá»ááœá± á¡á¬ážáá¯á¶ážááᯠáá±á¬ááºááá¯ááºááᯠáá±á«áºáááºá áááºáá°ááŒá¯áá¬ážáá±á¬ áá¯á¶á á¶áá° (áááºáá°ááŒá¯áá¬ážááá·áº á¡ááŒá±á¡áá±ááœááºááŸááá±á¬ áá¯á¶á á¶áá°á ááŒáá¯ááºáá°áá°áá°)á á¡ááá¯ááºážáá áºáá¯á¡ááœáẠáá±á«ááºážáá±á¬ááºá¡ááŒá Ạáá±á¬ááºááœááºáá±ááá·áº ááœá²á á¬ážááẠáá»ááœá¬ážáá«áá ááá¯á¡ááá¯ááºážá¡ááœáẠáá±á¬ááºáá¯á¶ážáá±á«áº ááá¯á·ááá¯áẠáááºáá°ááŒá¯áá¬ážááá·áº áááºááá·áºááœá²á á¬ážáááᯠáá±á«ááºážáá±á¬ááºáá¬áá°ážááᯠááá°ááá¯ááºáááºá áááºážááẠááá¯á¶ááá¯ááºáá±á¬ááºá¡á±á¬áẠáá±ááŸááºáááºáá¶á·áá±á¬ áá®ááá¯ááºážáá áºáá¯ááŒá áºáááºá
áá¯ááºáá¯ááºáá° ááœá²á·á ááºážááŸá¯áá¯á¶á á¶á á¡á áááºá¡ááá¯ááºážááẠááá·áºáááºáá»ááºááŒá áºáááºá acksá¡ááá®áá±ážááŸááºážá០áááºááááá¯á·áá® áááºáá±á·áá»áºáá áºá á±á¬ááºá á¡ááá¡ááŸááºááŒá¯áááºáá¶ááŸá¯ (acnowledge) áááºáá¶áááŸáááŸá¯ áááºáá»áŸááŸáááááºááᯠáá¯á¶ážááŒááºáá±ážááá·áºá¡áá¬- 0á 1 ááá¯á·ááá¯áẠá¡á¬ážáá¯á¶ážá áááºááŸááºáá¬ážááẠá¡á¬ážáá¯á¶ážááá¯á·áá±á¬áẠáááºáá±á·áá»áºááᯠáááºáá¶áááŸáááá·áºá¡áá«á áá±á«ááºážáá±á¬ááºááẠáá±á«ááºážá ááºáááºáááºááŸáááºááŸááºáá¬ážáá±á¬ ááŸááºáá¬ážááœááºáá¬á¡áá»ááºáá»á¬ážá áœá¬ (ááá¯ááºááá¯ááºá¡áá«á¡áááº) áá¶á០á¡áááºááŒá¯áá»áẠ(á¡ááá¡ááŸááºááŒá¯áá»ááºáá»á¬áž) ááᯠáááºáá¶áááŸááááºááŸáá·áº áááŒáá¯ááºááẠáá±á«ááºážáá±á¬ááºá០á¡áááºááŒá¯áá»ááºáá áºáá¯á¡á¬áž áá¯ááºáá¯ááºáá°áᶠááŒááºáááºáá±ážááá¯á·áááºááŒá áºáááºá min.insync.replicas (áá°áááºáž á)á áááºáá±á·áá»áºááᯠá¡á±á¬ááºááŒááºá áœá¬ áá¯á¶áá°ááœá¬ážááŒááºážáááŒá¯ááá¯ááºáá«á áá¯ááºáá¯ááºáá°ááẠá¡ááºááá®áá±ážááŸááºážááŒáœááºážáá»ááºáá áºáá¯á¡á¬áž áá¯ááºáá áºááẠ(NotEnoughReplicas ááá¯á·ááá¯áẠNotEnoughReplicasAfterAppend).
áá¯á¶ááŸááºááœá²á·á ááºážááŸá¯áá áºáá¯ááẠáá¯á¶áá°ááœá¬ážááŸá¯á¡áá»áẠ3 (áá±á«ááºážáá±á¬áẠ1 áŠážá á¡ááá¯ááºážáá áºáá¯áá»áŸáẠáá±á¬ááºááá¯áẠ2 áŠáž) ááŸáá·áº ááá·áºáááºáá»ááºáá«áá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááᯠáááºáá®ážááẠmin.insync.replicas 2 áᯠáááºááŸááºáá¬ážáááºá á€ááá á¹á ááœááºá á¡á á¯á¡áá±ážááẠáá±á«ááºážá ááºááœá²áá±ááŸá¯ááᯠá á®áá¶ááá·áºááœá²ááá·áº ááœá²á á¬ážáá»á¬ážáá²á០áá áºáŠážááᯠáá¯á¶ážá áœá²áá° á¡ááá®áá±ážááŸááºážáá»á¬áž áááááá¯ááºá á±áá² áá»áááºážááœá¬ážá á±ááẠááœáá·áºááŒá¯áááºááŒá áºáááºá
áááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž á áœááºážáá±á¬ááºáááºááŸáá·áº áá¯á¶ááŒááºá áááºáá»áááŸá¯á¡ááŒá¬áž áááºážááŸá®ážááŒá®ážáá¬áž á¡áá±ážá¡áá°ááá¯á· ááŒááºááœá¬ážá á±áááºá áá±á¬ááºááá¯ááºáá»á¬ážáá¶á០á¡áááºááŒá¯áá»ááºáá»á¬áž (á¡ááá¡ááŸááºááŒá¯áá»ááºáá»á¬áž) á¡ááœáẠáááºáá±á¬ááºážá á±á¬áá·áºááá¯ááºážáááá·áºá¡áá»áááºááᯠáá¯ááºáá»á ááááºááŒáá·áº áá°ážáá°ááŒááºáž ááŒá áºáá±á«áºáá«áááºá áááºážááẠááŒáá¯ááºáá°áááºáááºáá±áá±á¬áºáááºážá á¡áááºážáá¯á¶áž node áá¯á¶ážáá¯ááá¯á· áá°ážáá°ááŒááºážááẠááŸá áºáá¯áá²á·ááá¯á· áá°áá®áá±á¬á áœááºážáá±á¬ááºáááºááŸáááẠ(ááœááºáááºáááºážáááºá¡áá¯á¶ážááŒá¯ááŸá¯ ááá¯ážáá¬ááŸá¯ááᯠáá»á áºáá»á°ááŸá¯ááŒááºáž)á
á€áá¯á¶áá°ááœá¬ážááŸá¯á¡á
á®á¡á
ááºááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº Kafka ááẠáááºáááºááŸá¯ááŸáá·áºá¡áá° áááºáá±á·áá»áºáá
áºáá¯á
á®ááᯠáá
áºááºááá¯á· ááá¯ááºáááááºáá±á¬ááºáá±ážáááºááá¯á¡ááºááŒá±á¬ááºáž áááá¹áá¬áá«ážáááºá
áœá¬ ááŸá±á¬ááºááŸá¬ážáááºá áááºáá°ááŒá¯ááŒááºáž(). áá¯ááºáá¯ááºáá°á០áá±ážááá¯á·áá±á¬ áááºáá±á·áá»áºáá
áºáá¯á
á®ááᯠpartition ááŸááºáááºážááœáẠáá±ážáá¬ážáá¬ážáááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áº á¡áááºáž 2 ááœáẠááœá±ážááœá±ážáá¬ážááá·áºá¡ááá¯ááºážá ááá¯ááºáá
áºáá¯ááá¯á· á
á¬áá±ážááŒááºážááẠá¡á
ááá¯ááºážááœáẠáá¯ááºáá±á¬ááºááŸá¯á
áá
áºá ááŒá¬ážáá¶ááœáẠáá¯ááºáá±á¬ááºáááºá á€áááºáá±á·áá»áºááᯠá¡ááŒá¬áž Kafka á
á¶ááá°áá¬ááœáẠáá¯á¶áá°áá°ážáá¬ážááŒá®áž áááºážáááŸááºáá¬ááºááœáẠááŸááá±áá«áá áá±á«ááºážáá±á¬ááºá áá»á±á¬ááºáá¯á¶ážááŸá¯ááẠáááºáá±á·áá»áºááá¯ááºááá¯áẠáá»á±á¬ááºáá¯á¶ážááœá¬ážáááºáᯠáááá¯ááá¯áá« - áááºážááᯠáááºáá°ááŒá¯áá±á¬ áá¯á¶á
á¶áá°ááŒáá·áº ááœáŸá²ááŒá±á¬ááºážáá°ááá¯ááºáááºá
á
á
áºáááºáá±ážáá±á¬ááºááœááºááẠááŒááºážááá¯ááŒááºážá áááºáá°ááŒá¯ááŒááºáž() Kafka ááẠáááºážááá¯á·ááᯠááŸááºáá¬ááºááœáẠáá±ážááá¯ááºáááºááŸáá·áºá¡áá»áŸ áááºáá±á·ááºá»áá»á¬ážááᯠááŒááºááŒááºáááºááẠáááºáá¶ááá¯ááºáááºáᯠááá¯ááá¯áááºá á¡ááŒááºá¡ááŸááºá¡á¬ážááŒáá·áº áááºááẠááŸááºáá¬ááºááᯠáá
áºááºááá¯á· ááŒá¬ááŒá¬ááœá²áá¯ááºááŒááºážááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºáá±áá±á ááá¯áá±á¬ááºážáá±ááŒá
áºáááºá á€á¡ááŒá±á¬ááºážááŒá±á¬áá·áºá Kafka ááœá²á
á¬ážáá»á¬ážá¡ááœáẠ64 GB ááá¯á·ááá¯áẠááá¯á·áááºááá¯áá±á¬ memory ááᯠááœá²áá±áá±ážááŒááºážááẠá¡áááºážááá¯ááºáá«á á€áááºááá¯áá®á¡áá¯á¶ážááŒá¯ááŸá¯ááᯠááá¯ááá¯áááºááŸá¬ Kafka instance áá
áºáá¯ááẠááá¬ážááá¯ážáá» áááºáá±á·áá»áºááœá²á
á¬ážáá»á¬ážááẠá¡ááá±á«ááºáž áá±á¬ááºáá±á«ááºážáá»á¬ážá
áœá¬ ááá¯ááá¯ááŒááºáááºáá±á¬ á¡ááŒááºááŸá¯ááºážááŒáá·áº ááœááºáá°á
áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáááºá
áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážáá»ááẠKafka ááá¯áááºáž á
á®á
ááºáááºááŸááºááá¯ááºáááºá áááºáá°ááŒá¯ááŒááºáž() áááºáá±á·ááºá»áááºáá±á·áá»áºáá»á¬ážááá¯á·á Kafka ááŸá á¡áá¬á¡á¬ážáá¯á¶ážááẠáááºáá±á·áá»áºááᯠáŠážáááºáá¬ážáá±á¬ááŒá±á¬áá·áºá áááºážááẠá¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážá
áœá¬á¡ááœáẠá¡ááŸááºáááẠáá±á¬ááºážááœááºááŒá®áž á¡ááœááºááá¯ááºáá¬áá±á¬ á¡á¬ááá¶áá»ááºááá¯á¡ááºáá±á¬ á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡ááœáẠá¡áá¯á¶ážáááºáá±á¬áááááá¬áá
áºáá¯ááŒá
áºáááºá Kafka á ááá·áºá
ááºáá±á¬á
áœááºážáá±á¬ááºááẠá¡áá»á¬ážá
á¯ááẠpackets á¡ááŒá
Ạááœá²á
á¬ážáᶠáá±ážááá¯á·ááá·áº áááºáá±á·áá»áºáá»á¬ážá០áá¬ááŒá®áž á€áááºáá±á·áá»áºáá»á¬ážááᯠááœá²á
á¬ážáá¶á០ááá·áºáá²áá¯ááºááœááºáá»á¬ážááŒáá·áº áááºááŒááŒááºáž ááŒá
áºáááºá
Kafka ááœá²á á¬ážáá áºáá¯áááºážááẠKafka á¡á á¯á¡áá±ážáá áºáá¯ááœáẠá áœááºážáá±á¬ááºáááºáá»á¬ážá áœá¬ ááá¯áá±á¬ááºážááá¯ááºáááºá á¡ááŒá±á¬ááºážááŸá¬ áá±á«ááºážá ááºááœá²áááºážáá»á¬ážááẠáá®ážááŒá¬ážá ááºáá»á¬ážá áœá¬ááœáẠá¡ááá¯ááºážá¡áá¬á¡áá áá»á²á·ááœááºááá¯ááºáá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá
ááááºáá»á¬ážááá¯
á€á¡áááºážááœááºá ááá¬ážááá¯ážáá» áááºáá±á·áá»áºááœá²á á¬ážááẠá¡ááá»á¬ážá áœá¬ ááá¯ááŒá®ážáá±á¬ áá±á¬ááºáááºáá»á¬ážááŸáá·áº ááœá²á á¬ážáá»á¬ážááŒá¬áž áááºáá¶áá±ážááᯠááŒááºáááºáá¯á¶áá±á¬áºáá¬ážáááºááᯠá€á¡áááºážááœáẠáá»áœááºá¯ááºááá¯á· ááŒáá·áºááŸá¯áá²á·áá«áááºá áááºážááá¯á¡á±á¬ááºááŒááºáááºá¡áá¯á¶ážááŒá¯ááá·áºáá¯ááºáá±á¬ááºáá»ááºááá¯áá»áœááºá¯ááºááá¯á·ááœá±ážááœá±ážáá²á·ááŒá®ážá€áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááá¯áá±ážáá±á¬ááºááá·áºá¡ááá®áá±ážááŸááºážáá»á¬ážááááá¯áá¬áááºáá¬ááá¯á¡áá»ááºážáá»á¯á¶ážááŒáá·áºááŸá¯áá²á·áááºá áá±á¬ááºá¡áááºážááœááºá áááºážááá¯á·ááŸáá·áº ááá¯ááºááœááºááŒá±ááŸááºážááẠááá¬áá»á°áá¬áá»á¬ážááᯠááŒá±ááŸááºážááẠááá¯á¡ááºááá·áº áááºáá±á·áá»áºá¡ááŒá±áá¶á¡ááºááºáá®áá±ážááŸááºážáá»á¬ážá áá¯á¶ááŒá¿áá¬áá»á¬ážááᯠááŒáá·áºááŸá¯áá«áááºá áá±áá¯áá»á¡á¬ážááŒáá·áº á á¬ááá¯áá±ážááá¯á·ááŒááºážáááºážááá¬áá»á¬ážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáááºážááᯠá¡ááŒááºážáá»ááºážáá±á¬áºááŒááŒááºážááŒáá·áº áááºáá¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á áááºáá»á¬ážá¡ááœáẠáááºážááá¯á·á ááá·áºáá»á±á¬áºááŸá¯ááᯠá¡áá²ááŒááºááá¯ááºáá«áááºá
ááááºáá¬áá¬ááŒááºá¡ááá¯ááºáž-
áá¬áá¬ááŒááºááá¯áá»ááºááŒá®ážáá«ááŒá®-
áááºáááºâŠ
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
Kafka ááᯠááá·áºá¡ááœá²á·á¡á ááºážááœáẠá¡áá¯á¶ážááŒá¯áá«ááá¬ážá
-
ááá¯
-
á¡áááºáá°áá»áŸá
-
á¡áááºá áá¯á¶ážáááºá á¡áᯠááá¯ááºáá°ážá
-
á¡áá¯á¶ážááŒá¯áááºá á®á ááºáá¬ážáááºá
á¡áá¯á¶ážááŒá¯áá° 38 áŠáž áá²áá±ážáá²á·áááºá á¡áá¯á¶ážááŒá¯áá° 8 ááŸá±á¬ááºáá±áá²á·áá«áááºá
source: www.habr.com