ããã«ã»ãã£ãããïŒåœŒãããžãã£ããã¯ãããžãŒãºã§åããŠããããã©ãŒãã³ã¹äžïŒ
ãã®ã¬ããŒãã§ã¯ãRabbitMQãšPipelineã¢ãŒããã¯ãã£ã®å ±ééšåãšããããåœç€Ÿã®æ¥åã«ã©ã®ããã«é¢é£ããŠãããã«ã€ããŠã話ããããšæããŸãã
ãŸããããããŒã°ãšããŠå°ãã ããã¯çŽ æŽãããéšåã§ãã
ãªãã£ã¹ã§å¹³æ¥ã«å±éããã·ãŒã³ã¯ãéåžžã«æ¥œããåå°ã«ç§ãã¡ãå°ããŸãã ãŽãŒãžã£ã¹ãªã¿ã¹ã¯ãæ°ããã·ã¹ãã ã«çŽé¢ããŠããŸãã æ°ããã·ã¹ãã ãéçºããèŠæ±ãšããŠããšã³ãžãã¢ã®å¿ãããã»ã©è奮ãããŸããã å€ããã®ã修埩ããããå€ããã®ãé©å¿ããããããã®ã§ã¯ãªããããæå³ã§å®è³ªçã«ãŒãããäœããäœæããããšã
ãã®ã¿ã¹ã¯ã«ã¯ãäžé£ã®åé¡ã䌎ããŸãã
åé¡çªå·1ã ã¹ã±ãããç¶ããŸãã
ããã¯ããªãã«ããããããŸãïŒ
ãèŠä»¶ã¯ã©ãã«ãããŸããïŒããšå°ããŸãã
圌ãã¯ããªãã«æ¬¡ã®ããã«ç€ºããŸãïŒãããŠã圌ãã¯ããã«ããïŒãïŒã¹ã©ã€ããåç §ïŒã
ããã¯ãæ°ããã·ã¹ãã ã®èŠä»¶ã§ããå ŽåããããŸãã ã»ãšãã©ãã¹ãŠã®äººããã®ãããªåŠæ¹ã§äœæ¥ããªããã°ãªããŸããã§ãããããªãã¯ããã«é¢é£ããåé¡ãç解ããŠããŸãã ããããæã«ã¯ããªãã¯ããããå§ããªããã°ãªããŸããã å§ããŸãããã
èªç¶èšèªã®NLPåŠçã«é¢ããçŽ æŽãããã¬ããŒãããããŸãããããã§ã¯å€ãã®å©ãã«ãªããŸãããã®äžè²«ããããã¹ãããã·ãŒããéžæããå¿ èŠããããŸãã ç§ã¯ãã®ããã«ããããšããŸãïŒ
äœãéèŠãªãã®ãæ£ããéžæãããã®ã«åœ¹ç«ã€ãã®ã匷調ããæ±ããããŠããã·ã¹ãã ãæ£ããæ§ç¯ããŸãã
ç§ãç¹ã«æ³šç®ãããã®ã¯ããã€ãã³ãããšããèšèã§ãã ããæå³ã§ã¯ãéãã瀺ãããã«ãããªã¯ãšã¹ãããšããèšèãšãªã¯ãšã¹ãã察æ¯ããããšæããŸãã ãªã¯ãšã¹ãã«ã€ããŠè©±ããšããå察åŽã«ãã人ã¯åžžã«ãªã¯ãšã¹ãã«é¢é£ä»ããããŠããŸãããªã¯ãšã¹ããéä¿¡ãã人ãéåžžã«çæ°ãªäººãããããããã©ãŠã¶ãããã°ã©ã ã圌ã¯ç§ãã¡ããã®åçãåŸ ã£ãŠããŸãã 圌ã¯ããã«ç§ãã¡ããã®çããåŸ ã£ãŠããŸãã ããã圌ã®æ倧ã®æ¬²æ±ã§ããçããæã«å ¥ããã«ã¯ãããã«æã«å ¥ããŸãããã ããã¯ã¯ãšãªã«ã€ããŠè©±ããšãã§ãã
ã€ãã³ãåŠçã«ã€ããŠè©±ããšãã¯ãããã§å°ãç°ãªããã¿ãŒã³ãé©åã§ãã ãã®ãã£ãã¡ãªãããããã€ãŸããªã¯ãšã¹ããéä¿¡ãã人ã¯ããŸããã åã«ã€ãã³ãããã°ãã¡ããªãã¯ãçµ±èšãéä¿¡ããã·ã¹ãã ããããŸã-ããªã倧éã®ãããã¯ãŒã¯ãã©ãã£ãã¯...圌ãã¯ç§ãã¡ããã®è³ªåã«å³åº§ã«çããå¿ èŠã¯ãããŸããã 圌ãã¯ç§ãã¡ã«ãããããããããããããŠè¿ éã«åŠçããããããç°ãªãæ¹æ³ã§åŠçã§ããããã«é Œã¿ãŸãã ããã¯æãèŠçãªå Žæã§ã-äœãæ±ããããããäºåã«äºæž¬ã§ããªãå ŽåããããŸã-äœããéçŽãã匷床ãèšç®ããäœããèŠçŽããããããæçµçã«ã©ããã«ä¿åããŸãã ããããæãèå³æ·±ãã®ã¯ãå€ãã®äººãåé¡ã®è§£æ±ºã«çæããç©æ¥µçã«éçºããŠãããšããäºå®ã«çŽé¢ããŠããããšã§ãã
ãããçºçããããšãããã«èŠåããããããããèŠä»¶ãšããŠã·ã¹ãã ã®ã¢ãŒããã¯ãã£ã«å ¥ããããšããå§ãããŸããããããããšã§ãèŠæ±ãããããšãæè»ã«å€æŽããã³æŽæ°ã§ããŸãã
ãããŸããŸãªãœãŒã¹ãããã¯éåžžã«åŸ®åŠãªãããããŸããŸãªå ¥åãããã³ã«ããµããŒãã§ããå¿ èŠããããŸãã
ããããã¿ã€ããäœãã-圌ãã¯ããããšãŠãæ°ã«å ¥ã£ãŠããŸãã圌ãã¯ããããšãŠãæ°ã«å ¥ã£ãŠããã®ã§ãããã«äœããããŠãããã«äœããèŠããŸãã ãããã¿ã€ããç Žæ£ããããšã«åæãã人ã¯ããŸããïŒ ãããŠã誰ãçç£ã«ããããå ¥ããªããã°ãªããªãã£ãã®ã§ããïŒ ãããåé¡ã§ãããæºåããå¿ èŠããããŸãã ãããŠããã®ãããªæ©äŒãããã°ããã®åé¡ãããã«è§£æ±ºããããšããå§ãããŸãïŒãããã¿ã€ããäœæãããããæšãŠå§ããŸãããããã«ãããè¡ãããšã¯ã§ããŸãã-äœããåãããã¹ãŠãããå®å šãªãã®ã«ãã°ããæžãçŽãããšã¯éåžžã«å°é£ã§ãã ã»ãšãã©ã®å Žåãããã¯éšåçã«äº€æããå¿ èŠããããŸã-å°ãç¡çç©ã®ã·ã¹ãã ãããããã®äžéšãåŒãè£ããæ©èœçã«å®å šã«åçã§ãããããå®å šãªä»ã®ãã®ãšäº€æããŸã...
ãããã¯ã©ãã§ãããŸãæ©èœããã¯ãã§ãã-ç§ã¯ããã匷調ããããšããããŸãããããã¯ç解ã§ããŸãã ãã©ãã§ããã«ã€ããŠ-é£ããç¬éã ç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®éçºã«çŽé¢ããã®ã¯èª°ã§ããïŒ ããã¯å€§ããªåé¡ã§ãããææ決å®ã®ç¯å²ãå€§å¹ ã«å¶éããå¯èœæ§ããããŸãããŸããèšèšæã«ããã«èæ ®ããå¿ èŠããããŸãã
ç§ãã¡ã¯ç©ç©ãéé¢ããããšããŸããããä»ã§ã¯éåžžã«ç©æ¥µçã«äŸåããŠããŸãã 次ã®åé¡ãçºçããããã§ãã
圌ãã¯ãã°ãã°ç§ã«é§ãå¯ã£ãŠæ¥ãŠãå°ããŸãïŒãæããŠãã©ããã£ãŠãããæãã€ããã®ïŒã ç§ã¯è³ªåè ãèŠãŠã次ã®ããã«èšããŸããããåãã®ãšãããç§ã¯ããããããªããšãæãã€ããŸããå®éã«åœŒããç§ã«ããããã©ããªä»äºã§ããããã«ããããã®è§£æ±ºçããããŸãã ç§ã®äž»ãªåé¡ã¯ã解決çãèãåºãããšã§ã¯ãªãããã®ã¿ã¹ã¯ã«æé©ãªãã®ãéžæããããšã§ãã ç§ã¯éåžžãç§ãã¡ã®ããã«ãã¹ãŠããã§ã«çºæãããŠãããšãããžã§ãŒã¯ã§è¿ä¿¡ããŸãããšã³ãžãã¢ãšããŠãç§ã®æèŠã§ã¯ãçŸä»£ã®ãšã³ãžãã¢ã¯ãæ£ããæ å ±ã«åºã¥ããéžæãããå¿ èŠããããããã¯éåžžã«æåã®ã¹ãããã§ãééããŸãã
ã·ã¹ãã ãäœãããã 圌女ã¯å»ºç¯ãå¿ èŠã§ãã ããèšèã éåžžã¯åçã§è¡šçŸããããããããã§ã¯ãããŸããŸãªã·ã¹ãã ãæ§ç¯ãããæãæšæºçãªã¢ãŒããã¯ãã£ãã¿ãŒã³ã®ããã€ãã®åçãæ瀺ããããšããŸããã
çãããããããããã®ã¹ããŒã ã®äžéšã«èªåèªèº«ãéããšæããŸãã 誰ããèšãïŒç§ãã¡ã¯å·Šäžé ã«ãããç§ãã¡ã¯å³äžé ã§åããŠããã誰ããäžå€®ã§åããŠããã誰ããèªåèªèº«ã1ã€ãŸãã¯å¥ã®åçã«é¢é£ä»ããŠããŸãã
ç¹ã«ãã®ã¬ããŒãã§ã¯ãã€ãã³ãåŠçã®èå³æ·±ãæ¹æ³ããã³ã¢ãããŒããšããŠãã€ãã©ã€ã³ã¢ãŒããã¯ãã£ã«ã€ããŠèª¬æããŸãã ãªã¯ãšã¹ããžã®åçã«å¯Ÿããä»ã®æ¬²æ±ããªããã°ãéåžžã«æœè±¡çãªæå³ã§ãåãå¿ èŠãããã®ã¯ãäžé£ã®åŠçãéããŠããŒã¿ãå®è¡ããæçµçã«ã©ããã«ä¿åããããšã ãã§ãã ãããŠãã§ããã ãæ©ããããè¡ãããšããå§ãããŸãã ããã§ã¯ããã§ããã ãæ©ãã詳现ãªåæãå¿ èŠã§ãã
éåžžãã©ãã§æžéããŸããïŒ éåžžãããã«ããã¯ã¯ã©ãã«ãããŸããïŒ æãåºæ¬çãªåºæºã¯2ã€ãããŸã-CPUããŠã³ãããã»ããµãšI / OããŠã³ãåºåã§ãã ãããŠãé©ãã¹ãããšã«ãç§ãã¡ã¯ãã°ãã°ãããã¯ãŒã¯äžã§äŒãŸãªãããšããããŸããæã«ã¯ã®ã¬ããããæã«ã¯10ã®ã¬ãããã§ãããäŒã¿ãŸããã ããã¯ãããªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ãããŒã¹ã§æ§ç¯ãããã¢ãŒããã¯ãã£ã§ç¹ã«é¡èã§ãããªã¯ãšã¹ããéä¿¡ããçããåŸ ã£ãŠããŸãã æªãå Žå-è¯ãæ¹æ³ã§äŒãã§ããã ãã§ã-ã©ããããããå¥ã®ã¿ã¹ã¯ã«åãæ¿ããŠããããå®è¡ããŠãããæ»ãããšããŠããŸãã ä»ãããªããåŸ ã€å¿ èŠããªããã°ãããã¯çŽ æŽãããããšã§ã-ããªãã¯å¥ã®ã¿ã¹ã¯ã«åãæ¿ããå¿ èŠãããããŸãããããªãã¯ããªãã®ä»äºã®äžéšãããŠããããæž¡ããã ãã§ãã ããã«é¢é£ããæåŸ ãé 延ããããŸããããã§ã«ããã»ããµã«ã§ããã ãå€ãã®äŒæ¯ãè©Šã¿ãŠãã¹ã¯ã©ã³ãã«ãšãã°ã調çããããã®ãã©ã€ãã³ã«å€ããŠãã ããã
ãããã©ãããæ¥ãã®ããæãåºãã°...ããšãã°ãåãèããååšããèªåè»æ¥çããã§ãã åã»ã¯ã·ã§ã³ã¯ãã®åœ¹å²ãå®è¡ããçµæãæž¡ããŸãã ããªãããã®ãããªéžæããããšä»®å®ããŠãç§ãã¡ã¯åé¡ã解決ããã¢ãŒããã¯ãã£ãæ§ç¯ããããã«ããã®ãã³ãã¬ãŒããæãé©ããŠãããšèããŸããã
質å2ïŒãã®ã¢ãŒããã¯ãã£ãã©ã®ããã«å®è£ ããŸããïŒ ã©ãããæå³ã§ããïŒ ç°çš®ããã»ããµããã³ãã«ããã«ã¯ãã©ã®ããã«ãŠã§ã¢ãå¿ èŠã§ããã
ããã§éžæãããŒã«ãªãŒããŒããŸãã ããã ãã§ã¯ãããŸãããã¹ã©ã€ãã«åãŸãã®ã¯ããã ãã§ãã
ä»ããããã®ã·ã¹ãã ã®ããããã®é·æãšçæã«ã€ããŠè©±ããRabbitMQã®æ¹åã§å ·äœçã«éžæãããçç±ãå ·äœçã«æ£åœåããæéãããããã«ãããŸããã ããŸããŸãªãªãã·ã§ã³ãæãé¢çœããã®ãå·Šäžã®ãã®ãèæ ®ããŸãã-ãã¹ãŠãæåã§ååŸãããœã±ããã ãã§æžã-ãã®ãããªå®éšããããŸããã ããããæçµçã«ã¯ããã¹ãŠã®å®éšäžã«ããã®ã¡ãã»ãŒãžãããŒã«ãŒã«ç¹åããéžæãè¡ãããŸããã
ã¡ã¢ãªãŒå ããŒã¿ããŒã¹ãæ¯èŒããDmitryã®ã¬ããŒãããšãŠãæ°ã«å ¥ããŸããã 圌ã¯æ£ããå·¥åŠçã¢ãããŒãã«ã€ããŠè©±ãã-枬å®ãåºåãä¿¡ããªããããªãã¯ããã枬å®ããªããã°ãªããªãã 圌ã¯å¥ã®éèŠãªäºå®ã«èšåããŸããã枬å®ããåã«ããŸããããçµã蟌ã¿ãèªåã®äžãã枬å®ããããŒã¿ããŒã¹ãéžæããå¿ èŠããããŸããæåã«æ€çŽ¢ãçµã蟌ãå¿ èŠããããŸãã éåžžã圌ãã¯æ©èœã«åºã¥ããŠã誰ãäœãç¥ã£ãŠããããåçºããŸãã
ããã§å¥ã®åé¡ãæèµ·ãã泚æãæã䟡å€ããããšèšããããšæããŸã-ãã®æè¡ã¯ã©ããããã®æéåç¶ããŸããïŒ çŸä»£ã®ãã¯ãããžãŒåžå Žãã©ã®ããã«çºå±ããŠããã®ããèŠããšãã¡ãã£ãšæãæ°ãããŸããããæããã¥ãŒã¹ãã£ãŒããéãããä»é±åŠã¶ã¹ã7ã€ã®æ°ããSQLããŒã¿ããŒã¹ããšããèšäºãèŠãã®ãæãã§ãã 圌ãã¯éåžžã«éã衚瀺ãããå Žåã圌ãã¯ã»ãŒåãé床ã§æ»ã«å§ããŸãã ãããã£ãŠãéžæããéã«ãããçšåºŠã®ç¢ºçã§ãããçšåºŠã®èªä¿¡ãæã£ãŠãããå°ãé·çãããæè¡ã«äŸåããããšããèŠæããããŸãã ãã®èŠ³ç¹ãããRabbitMQã¯è£œåãšããŠã§ã¯ãªããAMQPãããã³ã«ã«äŸåãããã¯ãããžãŒãšããŠèå³æ·±ããã®ã§ããAMQPãããã³ã«ã¯ãæ¢ã«ååã«æŽ»çšãããŠããäžäœå±€ã§ãã
AMQPãããã³ã«ã®å ¬åŒWebãµã€ãã®å ¬åŒãŠãŒã¶ãŒã以äžã«ç€ºããŸãã ããã§Microsoft Azure Service BusãšGoogleãèŠãã®ã¯éåžžã«èå³æ·±ãã§ãã
äžè¬ã«ãGoogleã¯ãRabbitMQã«åºã¥ããŠSQSããŒã¿ããŒã¹ãµãŒãã¹ãåçŽââã«æ§ç¯ãããšããå ¬åŒçºè¡šããªãªãŒã¹ããŸãã
Microsoft Azureã¯AMQPãããã³ã«ãå®è£ ããã ãã§ãæããã«ç¬èªã®å®è£ ãããããã§ãã
VMwareã¯AMQPãããã³ã«ãšRabbitMQã·ã¹ãã ã®åµèšè ã®1人ã§ããããœãªã¥ãŒã·ã§ã³å ã§éåžžã«ç©æ¥µçã«äœ¿çšããŠããŸãã
ã€ãŸã ããã¯ãã®ãããªåºåã¹ã©ã€ãã§ãã 圌ããã€æäŒããç¥ã£ãŠããŸããïŒ ç§ãèå°ã«ç«ã£ãŠãããªãã¯å©å®³é¢ä¿è ã§ãããããªãã¯äŒç€Ÿã®ææè ã§ãããæè³å®¶ã§ãããããªãã¯ä»ããã®ããã«ãéãäžããããšããŠããããããŠããªãã¯ãéãäžãããšç¢ºä¿¡ããå¿ èŠããããšæ³åããŠãã ããã ãããã®ã¹ã©ã€ãã¯å€§ãã«åœ¹ç«ã¡ãããã«äœ¿ãæ £ããååã衚瀺ãããæ°ã«å ¥ã£ãŠããŸãã ãããã£ãŠãåºåç®çã§æ£ç¢ºã«äœ¿çšã§ããŸãã
åºæ¬çãªå®çŸ©ãšçšèªãšããŠã次ã«å¿ èŠã«ãªãããã€ãã®åçã
æåã®å³ã¯ãAMQPãããã³ã«å ããã³RabbitMQã·ã¹ãã å ã®åºæ¬çãªãšã³ãã£ãã£ãåããŠäœ¿çšãããŠãŒã¶ãŒåãã§ãã å·Š-ãããªãã·ã£ãŒ-ã©ã€ã¿ãŒ-ãã®ãã¥ãŒã«äœããæžã蟌ãã·ã¹ãã ã RabbitMQå ã§ã¯2ã€ã®å¥åã®ãšã³ãã£ãã£ãåºå¥ãããŸããæåã®-å-亀ææ©-亀æ-ãšã³ããªãã€ã³ããéåžžããã¹ãŠã®ã·ã¹ãã ã¡ãã»ãŒãžãããã«çºè¡ãããŸãã 2çªç®ã®éèŠãªèŠçŽ ã¯ããããã®ã¡ãã»ãŒãžãæ ŒçŽããããã¥ãŒã§ããããããã®éã®ãªã³ã¯ã¯ãã€ã³ãã£ã³ã°ã§ããããã«ãããããŸããŸãªãã¥ãŒéã§ã¡ãã»ãŒãžãããªãæè»ã§èå³æ·±ãæ¹æ³ã§ã«ãŒãã£ã³ã°ã§ããŸãã
å°æ¥çã«ã¯ãããã«ã©ã®ãããªã«ãŒãã£ã³ã°æ¹æ³ããããã©ã®æ¹æ³ãã©ã®ãããªå Žåã«äœ¿çšã§ãããã«ã€ããŠããå°ãã話ãããŸãã ãšããããããã®ãããªãªã³ã¯ãååšãããšããäºå®ã«ã®ã¿ç®ãåããŠãã ããã ãã®èŠ³ç¹ããããããªãã·ã£ãŒã¯èªåãã©ã®ãã¥ãŒã«æžã蟌ãããåžžã«ææ¡ããŠããããã§ã¯ãããŸãããã€ãã³ããæžã蟌ã¿ãçµ±èšãæžã蟌ã¿ãã¡ããªãã¯ãæžã蟌ã¿ããã°ã«å®éã«ååšãããã¥ãŒã®æ°ãæžã蟌ã¿ãŸãã圌ã¯æ¬åœã«ç¥ãå¿ èŠã¯ãããŸããã äœå®¶ã®èŠ³ç¹ãããããšãéåžžã«äŸ¿å©ã§ãã
äžæ¹ãèªè ã¯ãã©ãããå ·äœçã«èªãããç¥ãããã®ã§ãç¹å®ã®ã©ã€ã³ãããã«å·çããŸãã
ãããŠããããã®Qãã¥ãŒãç°ãªããã³ãã©ãŒãçžäºã«æ¥ç¶ãããããã¡ãŒãšããŠäœ¿çšãããšãã¹ã©ã€ãã®äžéšã«ç»åã衚瀺ãããŸãã ããã¯ããã€ãã©ã€ã³ã¢ãŒããã¯ãã£ããã€ãã©ã€ã³ã¿ã€ãã®ã¢ãŒããã¯ãã£ãè¡šãéåžžã«ç°¡åãªæ¹æ³ã§ããç°ãªãããã»ããµãééããçããŒã¿ã®ã¹ããªãŒã ããããåããã»ããµéã§å®éã«ãã®ãã¥ãŒããããåäœæ¥ãå®è¡ããŠãããŒã¿ãå®è¡ããŸãã ãããŒã¿ããŒã¹ã ãã®åçãšãã®è¡šèšã«ãç§ã¯å°æ¥æ»ããŸãã
ç°¡åã«æ©ããŠã¿ãŸãããã äœãåŸãããŸããïŒ
- éåæåŠç-äœãæåŸ ããå¿ èŠã¯ãããŸãã-ãžã§ããå®è¡ããçµæãããã«éä¿¡ããŸãã-éåžžã«çŽ æŽãããã
- ãã®å Žã§ãã³ãã©ãç°¡åã«è¿œå ã§ããŸãã ã¯ããå®éã«ã¯ããã®å Žã§ã ãã®å Žã§ã·ã¹ãã ãåæ§æããã®ã¯éåžžã«ç°¡åã§ãã æ¿å
¥ããå¿
èŠããããŸã
ãã€ãã©ã€ã³ã®éäžã«äœãæ°ãããã®ããããŸãã åèµ·åããã«ãããè¡ããŸã;ããã«ãæã ãã©ã€ã¿ãŒããªãŒããŒãããã«æ°ä»ããªãããšããããŸãã ã©ã€ã¿ãŒçŒ¶
圌ãå¥ã®å Žæã§æžãå§ããããšã«æ³šæããŠãã ããã - æè»ãªã«ãŒãã£ã³ã°ã å®éãäœå®¶ã¯èªåãã©ãã«æžããŠããã®ãå®éã«ã¯ããããªãã®ã§ã次ã®ããã«1ã¿ãŒã³ã§ãäžåºŠã«2ã€ãã€æžãããã«èšå®ã§ããŸãã
ãããã®ãã¥ãŒéã®ã·ã£ãŒãã£ã³ã°æŠç¥ã®ããçš®ã®ã¹ã±ãŒãªã³ã°ã®ããçš®ã®ã ç§ãã¡ã¯ééããªãããã€ãã®æŠç¥ã«ã€ããŠè©±ããŸãã - 䟿å©ãªãããã°ã¯éåžžã«éèŠãªèŠçŽ ã§ãã ããªãã建ç¯å®¶ã§ããå Žåãã³ãŒããæžããŠããéãã·ã¹ãã ãèšèšãããšããããªãã¯äœãèæ
®ããããšããŸã
ãŠãŒã¶ãŒã¯ãããããã°ã©ã ããå¿ èŠããããŸããã€ãŸãããããã°ããå¿ èŠãããããã䟿å©ã§æ¢è£œã®ããŒã«ãæäŸããå¿ èŠããããŸãã æã
䟿å©ãªããŒã«-ãã¥ãŒãããã¹ãŠã®ã¡ãã»ãŒãžãå³åº§ã«ååŸããŠã³ããŒã§ããŸããã³ããŒãååŸããã ãã§ãã ããã«ãããéåžžã«ç°¡åã«ãªããŸãã
䟿å©ãªãããã°ã®äŸãšããŠãã»ãšãã©ãã¹ãŠã®ç¶æ³ãåçŸããŸãã - ãªãŒããŒãšã©ã€ã¿ãŒã®ã¹ã±ãŒã©ããªãã£-ãã¥ãŒããè€æ°ãèªã¿åãããã¥ãŒã«è€æ°ãæžã蟌ãããšãã§ããã»ãšãã©åžžã«ãªã³ã¶ãã©ã€ã§è¿œå ã§ããŸãã
ç¹ã«ããŒããããã·ã¹ãã ã®å Žåãéåžžã«å¿«é©ã§éèŠãªäºå®ã§ãã - æçšãªäœæ¥ã«å ããŠãè¿œå ã®è² è·ããããããšãå¿ããªãã§ãã ãã-ç°ãªããã³ãã©ãŒéã§ããŒã¿ã転éããå¿
èŠããããŸã
ãã¥ãŒãããŒã«ãŒèªèº«ãè² è·ã«å¯ŸåŠãå§ãããšããäºå®ã«ééããå¯èœæ§ããããŸãã éèŠãªèŠå ã¯ã圌ãå°ãªããšãèªåã§
ãã®RabbitMQã¯éåžžã«ããŸãæ©èœããŸãã - å¥ã®è¯ãç¹ã¯ãåèµ·åãšé害ã«å¯Ÿããæµæã§ãã ç¹å®ã®æéã§ãã¥ãŒã®å
容å
šäœããã£ã¹ã¯ã«æžã蟌ãã¢ãŒããããããã
ããšãã°ãããŒãã誀ã£ãŠåèµ·åããããã·ã¹ãã ã«å€§éã®ããŒã¿ãããããããæ±ãããããªã©ã®äžå¿«ãªç¶æ³ãã身ãå®ãããšãã§ããŸãã
äœããã®çš®é¡ã®mantainesã®çç±ã§åèµ·åããŸãã åæã«ããŒã¿ã倱ããªããšããäºå®ã¯éåžžã«æ¥œããç¬éã§ãã
ããªããå©å®³é¢ä¿è ã§ããã°ããããããããç§ã®å ±åæžã®çµããã«ãªãã§ãããã ç§ã¯ãã¹ãŠã話ããç§ãã¡ãäœãããããèšã£ãã®ã§ãæ°äººå¹Žãç¡å¶éã®éã®ã³ãŒããŒãã¯ãããŒããé¡ãããããšæããŸããç§ãã¡ã¯ããªãã®ããã«ãããäœããŸãã ããããããã§ãçµå±ã®ãšããããããã«ç°ãªãã¿ã€ãã®äŒè°ã ãŸã第äžã«ããšã³ãžãã¢ãããã«éãŸããåã«èšã£ãèšèã泚ææ·±ãèããŠèããŸãã åé¡ã¯ã©ãã«ãããŸããïŒ åé¡ãªãããŠã¯ãããŸãããã
ãããããŠãŒã¶ãŒã«ãšã£ãŠæ¬åœã«æ©èœããè² è·ã®é«ãã·ã¹ãã ã§ããå Žåãåé¡ãããã¯ããªã®ã§ãã¬ããŒãã®2çªç®ã®éšåã«é²ãæºåãã§ããŠããŸãã
圌ããåé¡ãæã£ãŠããªãã®ãšããã«æ¥ããšããäœããã¹ããã æãã€ããã®ã¯ãã³ã»ã³ã¹ã§ãïŒã
ãŸãããããã¯ã«ãªããªãã§ãã ããã ããªããéžæããå Žåãããã¯æåã«èªèãããæåŸãŸã§ãããç¶æããŸãã ãæ°ã«å ¥ãã®ã³ãŒããŒã飲ã¿ãªããããšã³ãžãã¢ãèŠãŠãåé¡ã解決ãå§ããå¿ èŠããããŸãã
ãã¡ããããã¹ãŠã®åé¡ã§ã¯ãªãããã€ãã®åé¡ã«ã€ããŠãç§ãã¡ã調ã¹ãŠãã©ã®ç¹å®ã®ãœãªã¥ãŒã·ã§ã³ãéžæãããã説æããããšæããŸãã
æåã®åé¡ã¯åž¯åå¹ ã§ãã ã·ã¹ãã ã®ã¹ã«ãŒãããã¯ãã®æ§æã«äŸåããããšãããããŸããã ç°ãªãã«ãŒãã£ã³ã°ãæäŸãã亀æã¿ã€ãïŒ
ãµãã¹ã¯ã©ã€ãããããªãã·ã¥ããã ãã§ããã¹ãŠã®ãã¥ãŒã«åæ£ã§ãããã®ããããŸãã ãããã®ããã€ãã¯ãã«ãŒãã£ã³ã°ããŒã«å¿ããŠãåã«è¡ã§ããã ãããèµ€-ãã®ãã¥ãŒã«ãç·-ãã®ãã¥ãŒã«ããããã°ãã°-ãã®ãã¥ãŒã«ãèŠåãã°-ââãã®ãã¥ãŒã«ããªã©ãšèšãããšãã§ããŸãã ããã¯ãããšãã°Directã§ãã
ãããã¯-ããæè»ãªã«ãŒãã£ã³ã°ãããè€éãªããã¹ã¯ã«ããã«ãŒãã£ã³ã°ãå¯èœã«ããŸããããšãã°ãã¢ã¹ã¿ãªã¹ã¯ãã©ãã£ã¹ã䜿çšããŸãã æ©èœé¢ã§ã¯éåžžã«ããŸãæ©èœããŸãã 垯åå¹ ã®é¢ã§ã¯ããŸãè¯ããããŸããã å éšã«ã¯ãããè€éãªããŒã¿æ§é ãååšããŸãã
RabbitMQã®äœæè ã«ããèå³æ·±ãèšäºããããŸããããã¯ããã¬ãã£ã¯ã¹ããªãŒãŸãã¯é決å®çãªæéç¶æ ãã·ã³ãéžæããæéã§ãã 圌ãã¯æè¯ãšèãããã®ãéžæããŸãããããšã«ããããã®ãããªæè»ãªã«ãŒãã£ã³ã°ã«çŠç¹ãåœãŠããšãå¿ èŠãªç¹æ§ã«å°éã§ããªãããããããèæ ®ããå¿ èŠããããŸãã
4çªç®ã®äº€æã¯Consistent-Hashã§ãã 圌ã¯ä»ã®äººãããããã«è¯ãè¡åãããŸãã ãã£ãšè€éã«æããŸããã æããã«ãããçš®ã®ã»ã°ã¡ã³ããŒã·ã§ã³ãã·ã£ãŒãã£ã³ã°ããã¥ãŒãéžæããããã®è€éãªã¢ã«ãŽãªãºã ããããŸã...å©ç¹ã¯ããããæ°å€ã§æ©èœããããšã§ãã æåã®3ã€ã¯ã«ãŒãã£ã³ã°ããŒãšããŠæååã䜿çšããæåŸã®3ã€ã¯æ°åã䜿çšããŸãã ããã«ããã圌ã¯ããã€ãã®äœåãªããŒãç²åŸã§ããŸãã
ç§ã¯ãããã®æž¬å®å€ãååŸããŸãã...ããã¯å¹³åçãªãã·ã³ã§ãããšèããŸããè¿œå ã®èšå®ã¯ããŸããã§ãããapt-getãã€ã³ã¹ããŒã«ããåŸããã®ããã«åäœããŸãã äžè¬çã«èšãã°ãããŸãè¯ããããŸããã 1ç§ããã35,000ã¡ãã»ãŒãžïŒ1ç§ãããã®ã¡ãã»ãŒãžæ°ïŒããŸããã©ããããããå°ãéãããããšæããŸãã
ãã®ãããªäœãæ°åã«é¢é£ãããã®ã¯äœã§ããïŒ å®éãå€ãã®äººãç¥ã£ãŠãããã¯ããã¯ã䜿çšããŠããŸãããäœããã®çç±ã§é©çšãã人ã¯ã»ãšãã©ããŸããã ãããåŠçã
åãäœæ¥ãäœåºŠãè¡ãå¿ èŠãããããšãããã£ããã1ã€ã®ã€ãã³ãã ãã§ãªãããã±ããå šäœããããã¯å šäœãããã¯å šäœãåŠçããŠã¿ãŸãããïŒ ããšãã°ãKafkaãZeroMQããè¡ãããã«ã ãã®ããã«ã圌ãã¯ç¬ããŸãã 圌ãã¯çŽ æŽãããã§ãã圌ãã¯é¡§å®¢ã®ããã«ãã€ã®éã«ããããåŠçãããŸãã äžåºŠã«1ã€ãã€ã¡ãã»ãŒãžãå ¬éããããããããŒã¿ãã¹äžãã©ã®ããã«é£ãã§ããããèŠããšããã§ã«ãããã§é£ãã§ãããšæããŸãã ãããã£ãŠãããã«ã¹ã«ãŒãããã®ããªãè¯ãåºæºãåŸãããŸãã
ããã¯ç§ãã¡ã®éžæã§ã¯ãªããããå察æ¹åã®ã¹ãã€ãªãŒã ç§ãã¡ã¯åœŒãã«æºè¶³ããŠããŸãããããã¯äœãäžããŠãããŸããã
èªåã§ãã£ãŠã¿ãŸããã-ä»åã¯ããã»ã©é£ãããããŸããã 2ã€ç®ã¯ãããã±ãŒãžã®å®è£ ãç¬èªã«è¡ã£ããããããã±ãŒãžã®ç®¡çãéå§ããŸããããã±ãŒãžã«å«ããã¡ãã»ãŒãžã®æ°ãå ¥åããæéã§ãã ZeroMQã®Kafkaã®å Žåãããããã©ã€ããŒã®å¥¥æ·±ãã«ãããèªåã§å®è£ ããããšãåžžã«å¯èœã§ãããšã¯éããªãå Žåãç¬èªã®å®è£ ãè¡ãããšã§ãéåžžã«æè»ãã€é©åã«ç®¡çã§ããŸãã
ãããŠéåžžã«åŠå®çãªç¬é¡-ç§ãã¡ã¯ç§ãã¡ã®é 延ãå¢ãããŸãã , , , , .
, , - . request response critical, 10 , , , , .
, â , , â , .
â , . 35 , , . , . , 256 , 1 , . .
, 30 , - . : , 10- . loopback-, , - . , â . . ã€ãŸã 10 . - , , , . , , , .
. . . , , . ? , , . . , , , ? ? . â . , . , , . - . . , , - , , , , , .. â . , â .
, ⊠, , , .. , ? ã€ãŸã .
, :
- â . , , , .
- â . , , .
- â , ,
, , . - â . . ,
. , , . , . ,
, .
â ?
- : ? . , ?
, , - , ⊠, ,
. , . . - 第äºã®ç¬éã . , , ,
. , , ? -
2 , , , . - . RabbitMQ flow control. ,
. «, !».
, , Filter A. . , , 10000 .
, --. 10 â , - - . RabbitMQ flow control . . , , , , , - .
, . . , . , - , . - , , , . , , â . , . UDP, â . TCP, . , â .
. .
2 . â , Stateless filters. Filters â , - . , , , . , â . , , , . , , , . â .
, â Stateful filters, , .
. . , â . , . Round-robin' â â . - , , , , , , , â . - , . -, . , 1 â , 2 â . - â Router, . . , , . . exchange' RabbitMQ , , .
Statefull filters. .
-, , , . - . - - . , . , , - , - , . , , .
, , . â , . , . , . , â . â . , , , , , , .
, (), ?
, , , , .
â m, hash-, N â . , , . . ? N â . . , - . , , , â hash-, hash-. , - , , , .
, . RabbitMQ 2 Sharding plugin'. â , . , , , , .
, â consistent-hash-exchange â , , , , , . , , .
, . 2 , , , :
, , , , . . -, , , .
, . , . , .
â HighLoad++ . 2016 â HighLoad++ , 7 8 .
, , :
ãã¡ããããã¥ãŒã©ã«ãããã¯ãŒã¯ã¯ããããããã¯ã§ãããæç³»åãæ ŒçŽããããã®é©åãªDBMSã®æŠèŠã¯éåžžã«è²Žéã§ãã
ãŸãããããã®è³æã®äžéšã¯ãé«è² è·ã·ã¹ãã HighLoadã®éçºã«é¢ãããªã³ã©ã€ã³ãã¬ãŒãã³ã°ã³ãŒã¹ã§äœ¿çšãããŸãã¬ã€ãã¯ãç¹å¥ã«éžæãããæåãèšäºãè³æããããªã®ãã§ãŒã³ã§ããç§ãã¡ã®æç§æžã«ã¯ãã§ã«30以äžã®ãŠããŒã¯ãªè³æããããŸããæ¥ç¶ããŠãã ããïŒ