æ¬æ¥ã¯ãApache Kafkaã®ããã€ã¹ãšã¢ããªã±ãŒã·ã§ã³ã«é¢ããæ¯èŒçç°¡æœã§ãããªããè³¢æã§æçãªèšäºãæäŸããŸãã Nha Narkhede etã ã«ããæ¬ã翻蚳ããŠãªãªãŒã¹ããããšèããŠããŸãã å€ã®çµãããŸã§ã¢ã«ã

çŽ æµãªèªæžãïŒ
ã¯ããã«
ä»æ¥ã圌ãã¯ã«ãã«ã«ã€ããŠãããã話ããŸãã å€ãã®å€§æITäŒæ¥ããã§ã«ç©æ¥µçã«ãã®ããŒã«ã䜿çšããŠããŸãã ããããã«ãã«ãšã¯äœã§ããïŒ
Kafkaã¯2011幎ã«LinkedInã§éçºããããã®åŸå€§å¹ ã«æ¹åãããŸããã çŸåšãKafkaã¯ãèšå€§ãªéã®ããŒã¿ãä¿åããã®ã«ååãªåé·æ§ãæäŸãããã©ãããã©ãŒã å šäœã§ãã ããã¯éæ¹ããªã垯åå¹ ãæã€ã¡ãã»ãŒãžãã¹ãæäŸãããã®äžãééãããã¹ãŠã®ããŒã¿ããªã¢ã«ã¿ã€ã ã§çµ¶å¯Ÿã«åŠçã§ããŸãã
ããã¯ãã¹ãŠã¯ãŒã«ã§ãããKafkaã也ç¥ããæ®çç©ã«æžãããšã æ°Žå¹³æ¹åã«ã¹ã±ãŒã©ãã«ãªãã©ãŒã«ããã¬ã©ã³ããªã³ããããã°ãåæ£ãããŸã ã
è³¢ãèãããŸãã ãããã®åçšèªãèŠãŠããã®æå³ãèŠãŠã¿ãŸãããã ãããŠããããã©ã®ããã«æ©èœãããã詳现ã«èª¿ã¹ãŸãã
åæ£å
åæ£ã¯ãåäžã®ã¯ã©ã¹ã¿ãŒãæ§æããå€ãã®ãã·ã³ã§ããã«ã»ã°ã¡ã³ãåããã圢ã§åäœããã·ã¹ãã ã§ãã ãããã£ãŠããšã³ããŠãŒã¶ãŒã«ãšã£ãŠã¯ãåäžã®ããŒãã®ããã«èŠããŸãã Kafkaã®é ä¿¡ã¯ãKafkaããã®ã¡ãã»ãŒãžã®ä¿åãåä¿¡ãé ä¿¡ãç°ãªãããŒãïŒããããããããŒã«ãŒãïŒã§ç·šæãããŠãããšããäºå®ã«ãããŸãã
ãã®ã¢ãããŒãã®æãéèŠãªå©ç¹ã¯ãé«å¯çšæ§ãšãã©ãŒã«ããã¬ã©ã³ã¹ã§ãã
æ°Žå¹³æ¹åã«ã¹ã±ãŒã©ãã«
æåã«ãåçŽã¹ã±ãŒã©ããªãã£ãšã¯äœãã決ããŸãããã åŸæ¥ã®ããŒã¿ããŒã¹ãµãŒããŒããããå¢å ããè² è·ã«åŸã ã«å¯ŸåŠããªããªã£ããšããŸãã ãã®åé¡ã«å¯ŸåŠããã«ã¯ããµãŒããŒäžã®ãªãœãŒã¹ïŒCPUãRAMãSSDïŒãå¢ããã ãã§ãã ããã¯åçŽã¹ã±ãŒãªã³ã°ã§ããè¿œå ã®ãªãœãŒã¹ããã·ã³ã§ãã³ã°ããŸãã ãã®ãã¹ã±ãŒã«ã¢ãããã«ã¯ã2ã€ã®é倧ãªæ¬ ç¹ããããŸãã
- æ©åšã®æ©èœã«ã¯ç¹å®ã®å¶éããããŸãã ç¡éã«æé·ããããšã¯ã§ããŸããã
- ãã®ãããªäœæ¥ã¯éåžžãããŠã³ã¿ã€ã ã«é¢é£ä»ããããŠããã倧äŒæ¥ã¯ããŠã³ã¿ã€ã ãè²·ãäœè£ããããŸããã
æ°Žå¹³ã¹ã±ãŒã©ããªãã£ã¯ãŸã£ããåãåé¡ã解決ããããå€ãã®ãã·ã³ãããžãã¹ã«æ¥ç¶ããã ãã§ãã æ°ãããã·ã³ãè¿œå ããå ŽåãããŠã³ã¿ã€ã ã¯çºçããŸããããã¯ã©ã¹ã¿ãŒã«è¿œå ã§ãããã·ã³ã®æ°ã¯ç¡å¶éã§ãã åé¡ã¯ããã¹ãŠã®ã·ã¹ãã ãæ°Žå¹³ã¹ã±ãŒã©ããªãã£ããµããŒãããŠããããã§ã¯ãªããå€ãã®ã·ã¹ãã ãã¯ã©ã¹ã¿ãŒã§åäœããããã«èšèšãããŠããããèšèšãããã·ã¹ãã ã¯éåžžéåžžã«æäœãé£ããããšã§ãã

äžå®ã®ãããå€ãè¶ ãããšãæ°Žå¹³ã¹ã±ãŒãªã³ã°ã¯åçŽãããã¯ããã«å®ããªããŸã
èé害æ§
å²ãåœãŠãããŠããªãã·ã¹ãã ã®å Žåãããããåäžé害ç¹ãç¹åŸŽçã§ãã äœããã®çç±ã§ããŒã¿ããŒã¹å ã®å¯äžã®ãµãŒããŒã«é害ãçºçãããšããããããŸãã
åæ£ã·ã¹ãã ã¯ãé害ã«åãããŠæ§æã調æŽã§ããããã«èšèšãããŠããŸãã 5ããŒãã®Kafkaã¯ã©ã¹ã¿ãŒã¯ã2ã€ã®ããŒããèœã¡ãŠãåäœãç¶ããŸãã ãã©ãŒã«ããã¬ã©ã³ã¹ã確ä¿ããã«ã¯ãã·ã¹ãã ã®é害ã«å¯Ÿããèæ§ãé«ãã»ã©ããã©ãŒãã³ã¹ãäœäžãããããããã©ãŒãã³ã¹ãéšåçã«ç ç²ã«ããå¿ èŠãããããšã«æ³šæããŠãã ããã
ã³ããããã°
ã³ããããã°ïŒãå è¡æžã蟌ã¿ãã°ããããã©ã³ã¶ã¯ã·ã§ã³ãã°ããšãåŒã°ããŸãïŒã¯ãé·æçã«é åºä»ããããããŒã¿æ§é ã§ããããã«ãããŒã¿ã¯ãã®ãããªæ§é ã«ã®ã¿è¿œå ã§ããŸãã ãã®ãã°ã®ãšã³ããªã¯ãå€æŽãåé€ãã§ããŸããã æ å ±ã¯å·Šããå³ã«èªã¿åãããŸãã ãã®ããã«ããŠãèŠçŽ ã®æ£ããé åºãä¿èšŒãããŸãã

ã³ããããã°ã¹ããŒã
-Kafkaã®ããŒã¿æ§é ããšãŠãã·ã³ãã«ã ãšããããšã§ããïŒãããããªæå³ã§ãã¯ãã ãã®æ§é ã¯ãKafkaã®æ žå¿ã圢æãã秩åºæ§ãšç§©åºæ§ïŒæ±ºå®è«çåŠçïŒãæäŸããããã絶察ã«è²Žéã§ãã åæ£ã·ã¹ãã ã«ããããããã®åé¡ã®äž¡æ¹ã解決ããããšã¯å°é£ã§ãã
æ¬è³ªçã«ãKafkaã¯ãã¹ãŠã®ã¡ãã»ãŒãžããã£ã¹ã¯ã«ä¿åãïŒããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãïŒãäžèšã®æ§é ã®åœ¢åŒã§ã¡ãã»ãŒãžãæŽçããå Žåããã£ã¹ã¯ããã®é 次èªã¿åãã䜿çšã§ããŸãã
- èªã¿åãããã³æžã蟌ã¿æäœã¯äžå®ã®æéOïŒ1ïŒïŒã¬ã³ãŒãIDãããã£ãŠããå ŽåïŒå®è¡ãããŸããããã¯ãç°ãªãæ§é ã®ãã£ã¹ã¯ã§ã®OïŒlog NïŒæäœãšæ¯èŒããŠãåãããäžãæäœã«ã³ã¹ããããããããä¿¡ããããªãã»ã©æéãç¯çŽã§ããŸãã
- èªã¿åãæäœãšæžã蟌ã¿æäœã¯äºãã«åœ±é¿ããŸããïŒèªã¿åãæäœã¯æžã蟌ã¿æäœããããã¯ãããéãåæ§ã§ãããã©ã³ã¹ããªãŒã䜿çšããæäœã«ã€ããŠã¯èšããŸããïŒã
ãããã®2ã€ã®ãã€ã³ãã¯ãããŒã¿ã®ãµã€ãºã«å®å šã«äŸåããªããããçç£æ§ãåçã«åäžãããŸãã ãµãŒããŒã«100KBãŸãã¯100TBã®ããŒã¿ãããå Žåã§ããKafkaã¯åæ§ã«æ©èœããŸãã
ã©ã®ããã«æ©èœããŸããïŒ
ã¢ããªã±ãŒã·ã§ã³ïŒ ãžã§ãã¬ãŒã¿ãŒ ïŒã¯ã¡ãã»ãŒãžïŒ ã¬ã³ãŒã ïŒãKafkaããŒãïŒ ãããŒã«ãŒ ïŒã«éä¿¡ãããããã®ã¡ãã»ãŒãžã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ãããããã³ã³ã·ã¥ãŒããŒã«ãã£ãŠåŠçãããŸãã ãããã®ã¡ãã»ãŒãžã¯ãããã¯ã«ä¿åãããæ¶è²»è ã¯ãããã¯ã«ãµãã¹ã¯ã©ã€ãããŠæ°ããã¡ãã»ãŒãžãåä¿¡ããŸãã

ããŒãã¯å€§ãããªãå¯èœæ§ããããããããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãåäžãããããã«ã倧ããªãããã¯ãå°ããªã»ã¯ã·ã§ã³ã«åå²ããŸã ã ïŒäŸïŒ ãŠãŒã¶ãŒã®ãã°ã€ã³èŠæ±ãä¿åãããšããŸã;ãã®å ŽåããŠãŒã¶ãŒåã®æåã®æåã§ããããé åžã§ããŸã ïŒ
Kafkaã¯ãã»ã¯ã·ã§ã³å ã®ãã¹ãŠã®ã¡ãã»ãŒãžãå°çããé åºã§æ£ç¢ºã«é åºä»ããããããšãä¿èšŒããŸãã ç¹å®ã®ã¡ãã»ãŒãžã¯ããã®ã»ã¯ã·ã§ã³ã®æ°ããã¡ãã»ãŒãžããšã«1ãã€å¢å ããã·ãŒã±ã³ã¹çªå·ã§ãããé åå ã®éåžžã®ã€ã³ããã¯ã¹ãšèŠãªãããšãã§ãããªãã»ããã«ãã£ãŠèŠã€ããããšãã§ããŸãã

ã«ãã«ã¯ããæããªãããŒã«ãŒ-ã¹ããŒãæ¶è²»è ãã®ååãé å®ããŠããŸãã ãããã£ãŠãKafkaã¯ãã©ã®ã¬ã³ãŒããæ¶è²»è ã«ãã£ãŠèªã¿åãããŠããåé€ããããã远跡ãããæå®ãããæéïŒããšãã°ã1æ¥ïŒãŸãã¯ç¹å®ã®ãããå€ã«éãããŸã§ããããåã«ä¿åããŸãã æ¶è²»è èªèº«ãKafkaã«ã€ã³ã¿ãã¥ãŒããŠæ°ããã¡ãã»ãŒãžãæ¢ããã©ã®ã¬ã³ãŒããèªãå¿ èŠããããã瀺ããŸãã ãããã£ãŠããªãã»ãããå¢æžããŠãç®çã®ã¬ã³ãŒãã«ç§»åã§ããŸãã ãã ããã€ãã³ãã¯åçãŸãã¯ååŠçã§ããŸãã
å®éã«ã¯ãããã¯åäžã®æ¶è²»è ã«é¢ãããã®ã§ã¯ãªããããããã1ã€ä»¥äžã®æ¶è²»è ããã»ã¹ãããã°ã«ãŒãã«é¢ãããã®ã§ããããšã«æ³šæããå¿ èŠããããŸãã 2ã€ã®ããã»ã¹ãåãã¡ãã»ãŒãžã2åèªã¿åããç¶æ³ãé²ãããã«ãåã»ã¯ã·ã§ã³ã¯ã°ã«ãŒãå ã®1ã€ã®ã³ã³ã·ã¥ãŒãããã»ã¹ã®ã¿ã«ãã€ã³ããããŸãã

ãããããŒã¿ãããŒã§ã
ãã£ã¹ã¯äžã®é·æä¿å
åè¿°ã®ããã«ãKafkaã¯å®éã«ã¬ã³ãŒãããã£ã¹ã¯ã«ä¿åããRAMã«ã¯äœãä¿æããŸããã ã¯ãã質åã¯å¯èœã§ããããã«æèŠã®äœäžãããããŸããïŒ ããããKafkaã«ã¯ãããå¯èœã«ããå€ãã®æé©åããããŸãã
- Kafkaã«ã¯ãã¡ãã»ãŒãžãã°ã«ãŒãåãããããã³ã«ããããŸãã ãããã£ãŠããããã¯ãŒã¯èŠæ±ã®å Žåãã¡ãã»ãŒãžã¯ã°ã«ãŒãåããããããã¯ãŒã¯ã³ã¹ããåæžããããµãŒããŒã¯ã¡ãã»ãŒãžã®ããããäžåºŠã«ä¿åããŸãããã®åŸãæ¶è²»è ã¯ãã®ãããªã¡ãã»ãŒãžã®å€§ããªç·åœ¢ã·ãŒã±ã³ã¹ãããã«éžæã§ããŸãã
- ãã£ã¹ã¯ãžã®ç·åœ¢èªã¿åãããã³æžã蟌ã¿æäœã¯é«éã§ãã æ¢ç¥ã®åé¡ããããŸããããããã£ãŒããå¿ èŠãªãããææ°ã®ãã©ã€ãã®åäœã¯æ¯èŒçé ããªããŸããã倧ããªç·åœ¢æäœã§ã¯ãã®åé¡ã¯ãªããªããŸãã
- ãããã®ç·åœ¢æäœã¯ãã¹ã±ãžã¥ãŒã«ãããå ã«èªã¿èŸŒã ïŒãããã¯ã®å€§ããªã°ã«ãŒããäºåã«éžæããïŒãšèšé²ãé ããã ïŒå°ããªè«çæžã蟌ã¿æäœã倧ããªç©çæžã蟌ã¿æäœã«çµã¿åãããïŒããšã«ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠå€§å¹ ã«æé©åãããŸãã
- ææ°ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ããã£ã¹ã¯ã空ãRAMã«ãã£ãã·ã¥ããŸãã ãã®ææ³ã¯ã ããŒãžãã£ãã·ã¥ãšåŒã°ããŸã ã
- Kafkaã¯ããã§ãŒã³å šäœïŒãžã§ãã¬ãŒã¿ãŒ->ãããŒã«ãŒ->ã³ã³ã·ã¥ãŒããŒïŒã§å€åããªãæšæºåããããã€ããªåœ¢åŒã§ã¡ãã»ãŒãžãä¿åãããããããã§ã¯ãŒãã³ããŒæé©åãé©åã§ãã ãã®å ŽåãOSã¯ããŒãžãã£ãã·ã¥ãããœã±ããã«ããŒã¿ãçŽæ¥ã³ããŒããå®è³ªçã«Kafkaã«é¢é£ãããããŒã«ãŒã¢ããªã±ãŒã·ã§ã³ããã€ãã¹ããŸãã
ããããã¹ãŠã®æé©åã«ãããKafkaã¯ãããã¯ãŒã¯èªäœãšã»ãŒåãéãã§ã¡ãã»ãŒãžãé ä¿¡ããŸãã
ããŒã¿ã®é åžãšè€è£œ
次ã«ãKafkaããã©ãŒã«ããã¬ã©ã³ã¹ãå®çŸããæ¹æ³ãšãããŒãéã§ããŒã¿ãåæ£ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ããŒã¿è€è£œ
ã»ã°ã¡ã³ãããŒã¿ã¯è€æ°ã®ãããŒã«ãŒã«è€è£œãããããããããŒã«ãŒã®1ã€ã倱æããŠãããŒã¿ã¯ä¿åãããŸãã
ãããã®å Žåã§ãããããŒã«ãŒã®1ã€ã¯åžžã«ã»ã¯ã·ã§ã³ããææãããŸãããã®ãããŒã«ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ãã»ã¯ã·ã§ã³ã«å¯ŸããŠèªã¿åãããã³æžã蟌ã¿æäœãå®è¡ãããããŒã«ãŒã§ãã ãã®ãããŒã«ãŒã¯ã ã»ã¯ã·ã§ã³ãªãŒã㌠ããšåŒã°ããŸãã åä¿¡ããããŒã¿ãä»ã®Nåã®ãããŒã«ãŒããããããã©ãã¯ãŒã«è€è£œããŸãã ã¹ã¬ãŒããããŒã¿ãä¿åããçŸåšã®ãã¹ã¿ãŒã«é害ãçºçããå Žåããããã®ããããããã¹ã¿ãŒãšããŠéžæã§ããŸãã
ãã®ããã«ããŠãæ£åžžã«å ¬éãããã¡ãã»ãŒãžã倱ãããªãããšãä¿èšŒããããã«ä¿èšŒãæ§æã§ããŸãã ã¬ããªã±ãŒã·ã§ã³ã¬ãŒããå€æŽã§ããå Žåãããã©ãŒãã³ã¹ãéšåçã«ç ç²ã«ããŠãä¿è·ãšããŒã¿ã®èä¹ æ§ãåäžãããããšãã§ããŸãïŒéèŠåºŠã«ãã£ãŠç°ãªããŸãïŒã

ãããã£ãŠãæå°è ã®äžäººããããæåŠããå Žåã奎é·ã代ãããåããããšãã§ããŸãã
ãã ãã次ã®è³ªåãããã®ã¯è«ççã§ãã
-ãžã§ãã¬ãŒã¿ãŒ/ã³ã³ã·ã¥ãŒããŒã¯ããã®ã»ã¯ã·ã§ã³ã®ãªãŒããŒã§ãããããŒã«ãŒãã©ã®ããã«ããŠèŠã€ããã®ã§ããïŒãžã§ãã¬ãŒã¿ãŒ/ã³ã³ã·ã¥ãŒããŒããã®ã»ã¯ã·ã§ã³ã®æ å ±ãèªã¿æžãã§ããããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ãããã§ãªãŒããŒã§ãããããŒã«ãŒãç¥ãå¿ èŠããããŸããïŒ ãã®æ å ±ã¯ã©ããã§ååŸããå¿ èŠããããŸãã
Kafkaã¯ã ZookeeperãšãããµãŒãã¹ã䜿çšããŠãã®ãããªã¡ã¿ããŒã¿ãä¿åããŸãã
ãºãŒããŒããŒãšã¯äœã§ããïŒ
Zookeeperã¯ãããŒãšå€ã®åæ£ãªããžããªã§ãã èªã¿åãçšã«é«åºŠã«æé©åãããŠããŸãããæžã蟌ã¿ãé ããªããŸãã ã»ãšãã©ã®å ŽåãZookeeperã¯ã¡ã¿ããŒã¿ãä¿åããã¯ã©ã¹ã¿ãªã³ã°ã¡ã«ããºã ïŒå¿ææ°ãåæ£æŽæ°/æ§ææäœãªã©ïŒãåŠçããããã«äœ¿çšãããŸãã
ãããã£ãŠããã®ãµãŒãã¹ã®é¡§å®¢ïŒKafkaãããŒã«ãŒïŒã¯ããã«ãµãã¹ã¯ã©ã€ãã§ããçºçããå¯èœæ§ã®ããå€æŽã«é¢ããæ å ±ãåãåããŸãã ããã¯ãã»ã¯ã·ã§ã³ã®ãªãŒããŒãå€æŽããããšãã«ãããŒã«ãŒãèŠã€ããæ¹æ³ã§ãã Zookeeperã¯ãKafkaãéåžžã«äŸåããŠãããããéåžžã«ãã©ãŒã«ããã¬ã©ã³ãã§ãïŒããããã¹ãã§ãïŒã
ç¹ã«ããã¹ãŠã®çš®é¡ã®ã¡ã¿ããŒã¿ãä¿åããããã«äœ¿çšãããŸãã
- ã»ã¯ã·ã§ã³å ã®æ¶è²»è ã°ã«ãŒãã®ãã€ã¢ã¹ïŒçŸä»£ã®é¡§å®¢ã¯ãã€ã¢ã¹ãå¥ã®Kafkaãããã¯ã«æ ŒçŽããŸããïŒ
- ACLïŒã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ãïŒ-ã¢ã¯ã»ã¹/èš±å¯ãå¶éããããã«äœ¿çš
- ãžã§ãã¬ãŒã¿ãŒãšã³ã³ã·ã¥ãŒããŒã®ã¯ã©ãŒã¿-1ç§ãããã®æ倧ã¡ãã»ãŒãžå¶é
- äž»èŠãªã»ã¯ã·ã§ã³ãšãã®ããã©ãŒãã³ã¹ã¬ãã«
ãžã§ãã¬ãŒã¿ãŒ/ã³ã³ã·ã¥ãŒããŒã¯ããã®ã»ã¯ã·ã§ã³ã§ã©ã®ããã«ãªãŒããããŒã«ãŒã決å®ããŸããïŒ
以åã¯ããžã§ãã¬ãŒã¿ãŒãšã³ã³ã·ã¥ãŒããŒã¯Zookeeperã«çŽæ¥æ¥ç¶ãããã®ïŒããã³ãã®ä»ã®ïŒæ å ±ãZookeeperããåŠã³ãŸããã çŸåšãKafkaã¯ãã®ãããªãã³ãã«ããé ããããããããããŒãžã§ã³0.8ãš0.9ããéå§ãã顧客ã¯ãŸããKafkaãããŒã«ãŒããçŽæ¥ã¡ã¿ããŒã¿ãéžæãããããŒã«ãŒã¯Zookeeperã«é ŒããŸãã

ã¡ã¿ããŒã¿ã¹ããªãŒã
ã¹ããªãŒã
Kafkaã®ã¹ããªãŒã ããã»ããµã¯ã次ã®ãã¹ãŠã®äœæ¥ãæ åœããŸããå ¥åããé£ç¶ããããŒã¿ã¹ããªãŒã ãåãåããäœããã®æ¹æ³ã§ãã®å ¥åãåŠçããããŒã¿ã¹ããªãŒã ãåºåãããã¯ïŒãŸãã¯å€éšãµãŒãã¹ãããŒã¿ããŒã¹ããŽãç®±ãã¯ããã©ãã§ã...ïŒã«ãã£ãŒãããŸã
ãžã§ãã¬ãŒã¿ãŒ/ã³ã³ã·ã¥ãŒããŒAPIã§åçŽãªåŠçãçŽæ¥å®è¡ã§ããŸãããããè€éãªå€æ-ããšãã°ãKafkaã§ã®ã¹ããªãŒã ã®çµåã¯ãçµ±åãããStreams APIã©ã€ãã©ãªã䜿çšããŠå®è¡ãããŸã ã
ãã®APIã¯ãç¬èªã®ã³ãŒãããŒã¹å ã§äœ¿çšããããã®ãã®ã§ããããããŒã«ãŒã§ã¯æ©èœããŸããã æ©èœçã«ã¯ãã³ã³ã·ã¥ãŒãAPIã«äŒŒãŠãããã¹ã¬ããåŠçã®æ°Žå¹³æ¹åã®ã¹ã±ãŒãªã³ã°ãšãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³éã§ã®ãã®é åžã容æã«ããŸãïŒã³ã³ã·ã¥ãŒãã°ã«ãŒããšåæ§ïŒã
ã¹ããŒãã¬ã¹åŠç
ã¹ããŒãã¬ã¹åŠçã¯ãå€éšèŠå ã«äŸåããªã決å®è«çåŠçã®æµãã§ãã äŸãšããŠã次ã®ç°¡åãªããŒã¿å€æãèããŸããæ å ±ãæååã«æ·»ä»ããŸã
"Hello" -> "Hello, World!"

ã¹ããªãŒãã³ã°ããŒãã«ã®äºéå
ã¹ã¬ãããšããŒãã«ã¯æ¬è³ªçã«åããã®ã§ããããšãç解ããããšãéèŠã§ãã ã¹ããªãŒã ã¯ããŒãã«ãšããŠãããŒãã«ã¯ã¹ããªãŒã ãšããŠè§£éã§ããŸãã
ããŒãã«ãšããŠã¹ããªãŒã
åæããŒã¿ããŒã¹ã¬ããªã±ãŒã·ã§ã³ã®å®è¡æ¹æ³ã«æ³šæãæãã°ãããŒãã«ã®å€æŽãã³ããŒãµãŒããŒïŒã¬ããªã«ïŒã«éä¿¡ãããã¹ããªãŒãã³ã°ã¬ããªã±ãŒã·ã§ã³ã«ã€ããŠè©±ããŠããããšã¯æããã§ãã Kafkaã¹ããªãŒã ã¯ãããŒã¿ã®æŽæ°ã¹ããªãŒã ãšãŸã£ããåãæ¹æ³ã§è§£éã§ããŸããããŒã¿ã®æŽæ°ã¹ããªãŒã ã¯éèšãããæçµçµæãè¡šã«è¡šç€ºãããŸãã ãã®ãããªã¹ããªãŒã ã¯ãããŒã«ã«ã®RocksDBïŒããã©ã«ãïŒã«ä¿åãããKTableãšåŒã°ããŸã ã

ã¹ããªãŒã ãšããŠã®ããŒãã«
ããŒãã«ã¯ãã¹ããªãŒã å ã®åããŒã®æåŸã®å€ãåæ ããã¹ãããã·ã§ãããšèŠãªãããšãã§ããŸãã åæ§ã«ãã¹ããªãŒã ããŒãã«ã䜿çšããŠããŒãã«ãäœæããããŒãã«ã®æŽæ°ã䜿çšããŠå€æŽãã°ãå«ãã¹ããªãŒã ãäœæã§ããŸãã

æŽæ°ããšã«ãã¹ããªãŒã ã®ã¹ãããã·ã§ãããäœæã§ããŸãïŒèšé²ïŒ
ã¹ããŒããã«åŠç
map()
ã
filter()
ãªã©ã®ããã€ãã®ç°¡åãªæäœã¯ãç¶æ ãä¿åããã«å®è¡ãããåŠçã«é¢ããããŒã¿ãä¿åããå¿ èŠã¯ãããŸããã ãã ããå®éã«ã¯ãã»ãšãã©ã®æäœã¯ç¶æ ä¿åïŒäŸïŒ
count()
ïŒã§å®è¡ããããããåœç¶ãªããçŸåšã®ç¶æ ãä¿åããå¿ èŠããããŸãã
ã¹ããªãŒãã³ã°ããã»ããµã§ç¶æ ãç¶æããéã®åé¡ã¯ããããã®ããã»ããµãæã æ éããããšã§ãïŒ ãã©ãŒã«ããã¬ã©ã³ã¹ã確ä¿ããããã«ãã®ç¶æ ãä¿åããå Žæ
åçŽåãããã¢ãããŒãã¯ããã¹ãŠã®ç¶æ ããªã¢ãŒãããŒã¿ããŒã¹ã«ä¿åãããããã¯ãŒã¯çµç±ã§ãã®ãªããžããªã«æ¥ç¶ããããšã§ãã åé¡ã¯ãããŒã¿ã®å±ææ§ã倱ãããããŒã¿èªäœããããã¯ãŒã¯çµç±ã§ç¹°ãè¿ããªãã€ã¬ã¯ããããããšã§ããã©ã¡ãã®èŠå ãã¢ããªã±ãŒã·ã§ã³ã®é床ãå€§å¹ ã«äœäžãããŸãã ãã埮åŠã§ããéèŠãªåé¡ã¯ãã¹ããªãŒãã³ã°åŠçãžã§ãã®ã¢ã¯ãã£ããã£ããªã¢ãŒãããŒã¿ããŒã¹ã«å€§ããäŸåããããšã§ããã€ãŸãããã®ã¿ã¹ã¯ã¯èªçµŠèªè¶³ã§ãïŒå¥ã®ã³ãã³ããããŒã¿ããŒã¹ã«å€æŽãå ãããšããã¹ãŠã®åŠçã倱æããå¯èœæ§ããããŸãïŒ ã
ã§ã¯ãã©ã¡ãã®ã¢ãããŒãã®æ¹ãè¯ãã§ããããïŒ
ç¹°ãè¿ããŸãããããŒãã«ãšã¹ã¬ããã®äºéæ§ãèŠããŠãããŠãã ããã ãã®ããããã£ã®ãããã§ãã¹ããªãŒã ã¯åŠçãè¡ãããæ£ç¢ºãªå Žæã«ããããŒãã«ã«å€æã§ããŸãã åæã«ããã©ãŒã«ããã¬ã©ã³ã¹ãä¿èšŒããã¡ã«ããºã ãååŸããŸããã¹ããªãŒã ãKafkaãããŒã«ãŒã«ä¿åããŸãã
ã¹ããªãŒã ããã»ããµã¯ããã®ç¶æ ãããŒã«ã«ããŒãã«ïŒããšãã°ãRocksDBïŒã«ä¿åã§ããŸãããã®ããŒãã«ã¯ãå ¥åã¹ããªãŒã ã«ãã£ãŠæŽæ°ãããå¯èœæ§ããããŸãïŒä»»æã®å€æåŸïŒã ãã®ããã»ã¹ã倱æããå Žåãã¹ããªãŒã ãç¹°ãè¿ãåçããããšã§å¯Ÿå¿ããããŒã¿ã埩å ã§ããŸãã
ãªã¢ãŒãããŒã¿ããŒã¹ãã¹ããªãŒã ãçæããå®éã«å€æŽãã°ããããŒããã£ã¹ãããããšã確èªããããšãã§ããŸããããã«åºã¥ããŠãããŒã«ã«ãã·ã³ã§ããŒãã«ãåæ§ç¯ããŸãã

ã¹ããŒããã«åŠçãKStreamãKTableã«æ¥ç¶
KSQL
ååãšããŠãã¹ããªãŒã ãåŠçããã³ãŒãã¯ãJVMã®èšèªã®1ã€ã§äœæããå¿ èŠããããŸããããã¯ãJVMãKafka Streams APIã§åäœããå¯äžã®å ¬åŒã¯ã©ã€ã¢ã³ãã§ããããã§ãã

KSQLã€ã³ã¹ããŒã«ãµã³ãã«
KSQLã¯ãSQLã«äŒŒã䜿ãæ £ããèšèªã§ç°¡åãªã¹ããªãŒã ãžã§ããäœæã§ããæ°ããæ©èœã§ãã
KSQLãµãŒããŒãæ§æããCLIãä»ããŠå¯Ÿè©±çã«ç §äŒããŠåŠçãå¶åŸ¡ããŸãã åãæœè±¡åïŒKStreamãšKTableïŒã§æ£ç¢ºã«æ©èœããStreams APIãšåãå©ç¹ïŒã¹ã±ãŒã©ããªãã£ããã©ãŒã«ããã¬ã©ã³ã¹ïŒãä¿èšŒããã¹ããªãŒã ã®åŠçãå€§å¹ ã«ç°¡çŽ åããŸãã
ãããããããã¯ãã¹ãŠåºæ¿çã§ã¯ãªããããããŸããããå®éã«ã¯çŽ æã®ãã¹ãã«éåžžã«åœ¹ç«ã¡ãŸãã ããã«ããã®ã¢ãã«ã䜿çšãããšãéçºã«é¢äžããŠããªã人ïŒè£œåææè ãªã©ïŒã§ãã¹ããªãŒã åŠçã«åå ã§ããŸãã çã玹ä»ãããªãã芧ã«ãªãããšããå§ãããŸã-ãããããã«ç°¡åãããèªèº«ã§ç¢ºãããŠãã ããã
ã¹ããªãŒãã³ã°ã®ä»£æ¿
Kafka Streamsã¯ã匷床ãšã·ã³ãã«ãã®å®ç§ãªçµã¿åããã§ãã ãããããKafkaã¯åžå Žã§å©çšå¯èœãªã¹ããªãŒãã³ã°ã¿ã¹ã¯ãå®è¡ããã®ã«æé©ãªããŒã«ã§ãããKafkaãšã®çµ±åã¯ã代æ¿ã®ã¹ããªãŒãã³ã°åŠçããŒã«ïŒ Storm ã Samza ã Spark ã Wallaroo ïŒãããã¯ããã«ç°¡åã§ãã
ä»ã®ã»ãšãã©ã®ã¹ããªãŒãã³ã°ããŒã«ã®åé¡ã¯ããããã®å±éãå°é£ã§ããïŒåŠçãé£ããïŒããšã§ãã Sparkãªã©ã®ãããåŠçãã¬ãŒã ã¯ãŒã¯ã«ã¯ä»¥äžãå¿ èŠã§ãã
- ãã·ã³ã®ããŒã«ã§å€æ°ã®ã¿ã¹ã¯ã管çããããããã¯ã©ã¹ã¿ãŒã«å¹ççã«åæ£ããŸãã
- ããã«ã¯ãã³ãŒããåçã«ããã±ãŒãžåãããããå®è¡ãããããŒãã«ç©ççã«å±éããå¿ èŠããããŸãïŒããã«ãæ§æãã©ã€ãã©ãªãªã©ïŒã
æ®å¿µãªããã1ã€ã®ãã¬ãŒã ã¯ãŒã¯ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãããã®åé¡ããã¹ãŠè§£æ±ºããããšãããšããã®ãã¬ãŒã ã¯ãŒã¯ã¯ããŸãã«ã䟵襲çã§ãã ãã¬ãŒã ã¯ãŒã¯ã¯ãã³ãŒãã®å±éãæ§æãç£èŠãããã³ããã±ãŒãžåã®ããããåŽé¢ãå¶åŸ¡ããããšããŸãã
Kafka Streamsã䜿çšãããšãå¿ èŠãªãšãã«ç¬èªã®å±éæŠç¥ãçå®ãã Kubernetes ã Mesos ã Nomad ã Docker Swarmãªã©ã®å¥œã¿ã®ããŒã«ã§äœæ¥ã§ããŸãã
Kafka Streamsã¯ãäž»ã«ã¢ããªã±ãŒã·ã§ã³ã§ã¹ããªãŒãã³ã°åŠçãæŽçã§ããããã«èšèšãããŠããŸããã次ã®ã¯ã©ã¹ã¿ãŒã®ãµããŒãã«é¢é£ããéçšäžã®åé¡ã¯ãããŸããã ãã®ãããªããŒã«ã®å¯äžã®æœåšçãªæ¬ ç¹ã¯ãKafkaãšã®å¯æ¥ãªé¢ä¿ã§ãããçŸåšã®çŸå®ã§ã¯ãã¹ããªãŒã åŠçãäž»ã«Kafkaã䜿çšããŠå®è¡ãããå Žåããã®å°ããªæ¬ ç¹ã¯ããã»ã©ã²ã©ãã¯ãããŸããã
Kafkaã䜿çšããå Žå
åè¿°ã®ããã«ãKafkaã䜿çšãããšãéäžç°å¢ãä»ããŠå€§éã®ã¡ãã»ãŒãžãéä¿¡ããããã©ãŒãã³ã¹ãå¿é ããããããŒã¿ã倱ãããããšãæãããããã«ã¡ãã»ãŒãžãä¿åã§ããŸãã
ãããã£ãŠãKafkaã¯ã·ã¹ãã ã®äžå¿ã«å®å šã«åãŸãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®çžäºäœçšãä¿èšŒããæ¥ç¶ãªã³ã¯ãšããŠæ©èœããŸãã Kafkaã¯ã€ãã³ãé§ååã¢ãŒããã¯ãã£ã®äžå¿çãªèŠçŽ ãšãªããã¢ããªã±ãŒã·ã§ã³ãçžäºã«é©åã«ã¢ã³ããã¯ã§ããŸãã

Kafkaã䜿çšãããšãç°ãªãïŒãã€ã¯ãïŒãµãŒãã¹éã®éä¿¡ãç°¡åã«åºå¥ã§ããŸãã Streams APIã䜿çšããããšã«ããããµãŒãã¹ãæ¶è²»ãéå§ããåã«KafkaããŒãã®ããŒã¿ã匷åããããžãã¹ããžãã¯ãèšè¿°ããããšããããŸã§ä»¥äžã«ç°¡åã«ãªããŸããã éåžžã«å€ãã®æ©äŒãæäŸããŠããã®ã§ãããŸããŸãªäŒæ¥ã§Kafkaãã©ã®ããã«äœ¿çšãããŠãããã調ã¹ãããšã匷ããå§ãããŸãã
ãŸãšã
Apache Kafkaã¯ã1æ¥ã«æ°å ã®ã€ãã³ããåŠçã§ããåæ£ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ã§ãã Kafkaã¯ãæå°ã¬ã€ãã³ã·ãé«ã¹ã«ãŒããããä¿èšŒãããå ¬é/ãµãã¹ã¯ãªãã·ã§ã³ãã®ååã«åºã¥ããŠåäœãããã©ãŒã«ããã¬ã©ã³ããã€ãã©ã€ã³ãæäŸããã€ãã³ãã¹ããªãŒã ãåŠçã§ããããã«ããŸãã
ãã®èšäºã§ã¯ãKafkaã®åºæ¬çãªã»ãã³ãã£ã¯ã¹ïŒãžã§ãã¬ãŒã¿ãŒããããŒã«ãŒãã³ã³ã·ã¥ãŒããŒããããã¯ãšã¯äœãïŒãæé©åãªãã·ã§ã³ïŒããŒãžãã£ãã·ã¥ïŒã«ã€ããŠåŠã³ãKafkaãããŒã¿ãè€è£œããéã«ä¿èšŒãããã©ãŒã«ããã¬ã©ã³ã¹ã«ã€ããŠåŠã³ããã®åŒ·åãªã¹ããªãŒãã³ã°æ©èœã«ã€ããŠç°¡åã«èª¬æããŸããã