ã¬ããŒãã©ã€ãã©ãª
ããã¯åãªãèšäºã§ã¯ãªããããŸããŸãªå€§èŠæš¡ã§è² è·ã®é«ããããžã§ã¯ãã®å éšæ§é ã«é¢ããã¬ããŒãã®ã©ã€ãã©ãªå šäœã§ãã ãããã®ã¬ããŒãã¯ãã¹ãŠãéå»æ°å¹Žã«ããã£ãŠHighLoad ++ããã³RIT ++ã«ã³ãã¡ã¬ã³ã¹ã§èããŠããŸããã
ãããŠãŸãïŒ
ã»ã¯ã·ã§ã³ãã¢ãŒããã¯ãã£ã
ã¢ã¹ã¯ã¯ã§2é±éåŸã«éå¬ãããé«è² è·ã·ã¹ãã HighLoad ++ã®éçºè äŒè°ã®éèŠãªã»ã¯ã·ã§ã³ã¯ããã¡ãã建ç¯ã§ãã ãã®ã»ã¯ã·ã§ã³ã®ã¬ããŒãã¯å€æŽãããŠããŸãã3ã4幎åã«Facebookã«ãããµãŒããŒã®æ°ãšVKontakteã§ã®ãã¡ã€ã«ã®ä¿åå Žæã«é¢ããäžè¬çãªèšèãèããå Žåããã®ãããªã¬ããŒãã¯ããã°ã©ã ã«éãããŸããã ä»ããã詳现ããã€ã¯ããµãŒãã¹ã1ã€ãŸãã¯å¥ã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ã®è©³çŽ°ãªåæã®æã§ãã
ã ããã建ç¯ãã¿ãŒã³ã ä»åã®äŒè°ã§ã¯ããããã®ããã€ãã詳现ã«åæããŸããæåã®ãã®ã¯ããã¡ãããã€ã¯ããµãŒãã¹ã§ãã
åäžã®ã¢ããªã±ãŒã·ã§ã³ã¯ããããããç¬èªã®ããã»ã¹ã§åäœããäžé£ã®å°ããªãã€ã¯ããµãŒãã¹ãšããŠæ§ç¯ãããä»ã®ãã€ã¯ããµãŒãã¹ããå¯èœãªéãç¬ç«ããŠãããååãšããŠã1ã€ã®ããžãã¹æ©èœãå®è£ ããåãHTTPã®è»œéã¡ã«ããºã ã䜿çšããŠæ®ããšéä¿¡ããŸãã
Anton ReznikovãšVladimir Perepelitsa 㯠ãCloud.ruã®ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã ãã§ãªã ãTarantool NoSQLããŒã¿ããŒã¹ã§ã®ãã¿ãŒã³ã®å ·äœçãªå®è£ ã«ã€ããŠã説æããŸãã ã¯ããTarantoolã¯å¥ã®NoSQLããŒã¿ããŒã¹ã§ãããå®å šãªã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã§ããããŸãã ããŒã¿ã®é£ã«ããã¢ããªã±ãŒã·ã§ã³ïŒ
Denis IvanovïŒ2GisïŒã¯ã圌ã®è¬æŒãPHPã®ã¢ããªã¹ããScalaã®ãã€ã¯ããµãŒãã¹ãžã®éãã§ãããã¯ãç¶ããŸãã ãããã¹ãããªããããŠããããšããããªãããã©ãããŠïŒïŒã ãããŠãDenisã¯ãã®è³ªåã«åçŽã«çããŸãã18åã§ã¯ãªã6åã®ã¢ããªã±ãŒã·ã§ã³ãæã€ããŒãã§ããçãã¯ãŸãšãã§ããäŒè°ã§è©³çŽ°ãèãããšãæãã§ããŸãã
è² è·ã®é«ããããžã§ã¯ãã§ãã䜿çšãããå¥ã®ãã¿ãŒã³ã¯ãã¥ãŒã§ãã ãã®ãããã¯ã¯ãPavel FilonovïŒPositive TechnologiesïŒã®ã¬ããŒããRabbitMQãæºåãã101ã®æ¹æ³ãšãã€ãã©ã€ã³ã¢ãŒããã¯ãã£ã«ã€ããŠå°ããã§é瀺ãããŠããŸã ã
ãã®ã¬ããŒãã§ã¯ããã€ãã©ã€ã³ã¢ãŒããã¯ãã£ãæ§ç¯ããããã®ããã«ãŠã§ã¢ãšããŠRabbitMQã¡ãã»ãŒãžã³ã°ã·ã¹ãã ã䜿çšããããã®ãªãã·ã§ã³ã«ã€ããŠèª¬æããŸãã ã¹ããŒãã¬ã¹ãã£ã«ã¿ãŒãšã¹ããŒããã«ãã£ã«ã¿ãŒã®äž¡æ¹ã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒãªã³ã°ã®åé¡ãèæ ®ãããŸãã
ã¬ããŒãã¯ãã¬ãŒãã³ã°ã¬ããŒãã«äŒŒãŠããŸããããããã¯ã¯ããŸãã«ãåªããŠããŸãïŒ
Badooã®Yuri Nasretdinovããã®æ¬¡ã®ãã©ã³ã¹ã¬ããŒãã¯ãåã€ããã®é倧ãªå ¥æã§ãã ãã®æ©äŒãå©çšããŠãäŒè°ã§äºæ³ãããæãåºæ¿çãªã¬ããŒãã®1ã€ã«å ãåœãŠãããã«ããŠãŒãªã«ããã€ãã®è³ªåãããããšããŸããã
-ç±è¯ã1ç§ããã70kãªã¯ãšã¹ãã®è² è·ã¬ãã«ã«ã©ã®ããã«ã¢ãããŒãããŸãããïŒ
ãã®ã¬ãã«ã®è² è·ã«ã»ãŒ10幎éã»ãŒé 調ã«è¿ã¥ããŸããã è¿å¹Žãã¢ãã€ã«ããã€ã¹ã®ãŠãŒã¶ãŒæ°ãæ¥éã«å¢å ãå§ãã1ç§ãããã®ãªã¯ãšã¹ãæ°ãå¢å ããŸãããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã¯ãWebãµã€ããããå°ããªãªã¯ãšã¹ãããµãŒããŒã«éä¿¡ããŸãã 1ç§ããã70kã®ãªã¯ãšã¹ããPHP-FPMã«è©²åœããããšã«æ³šæããŠãã ããããµã€ããžã®HTTPãªã¯ãšã¹ãã®ç·æ°ã¯1ç§ããã250kãŸã§ã§ãã
-ãã®ãããªè·ç©ãä¿æããã«ã¯ãåµä»¥å€ã«äœãå¿ èŠã§ããïŒ
äžè¬ã«ã1ç§ããã250,000ã®HTTPèŠæ±ãåŠçããã®ã«åé¡ã¯ãããŸããã ãã®ãããªè² è·ã¯ãéåžžã®nginxãšã©ãŠã³ãããã³DNSã§æäŸã§ããŸãã çä¿¡ãã©ãã£ãã¯ãåŠçããããã«ãããŒããŠã§ã¢ããœãªã¥ãŒã·ã§ã³ã䜿çšããŸã-GT5ããã³F5ããã®LTMã ããã«ããããã¹ãŠã®ãªã¯ãšã¹ããåãIPã¢ãã¬ã¹ã§ãã€ãŸãã©ãŠã³ãããã³DNSã䜿çšããã«åŠçã§ããŸãã å ¥åã«ãŒã¿ãŒã§ã¯ãã©ã®ãªã¯ãšã¹ãã1ã€ãŸãã¯å¥ã®ã¯ã©ã¹ã¿ãŒã«å°éãããã«åŸã£ãŠã«ãŒã«ãèšå®ãããå¿ èŠã«å¿ããŠãã·ã³ã®éã¿ãèšå®ãããæ®ãã¯ãã®éçïŒãŸãã¯ã¢ãã€ã«ã¯ã©ã¹ã¿ãŒãžã®ãªã¯ãšã¹ãããããã·ããããã«äœ¿çšããnginxïŒã«ãã£ãŠè¡ãããŸãã
倧ãŸãã«èšã£ãŠããµãŒããŒéã§èŠæ±ãåæ£ããããšã¯å°é£ãªäœæ¥ã§ã¯ãªããPHPã®ã¹ã±ãŒãªã³ã°ã¯åã«é©åãªéã¿ã§ãµãŒããŒãããã¯ãšã³ãã«è¿œå ããããšã§ãã
ãã®ãããªè² è·ãç¶æããã ãã§ãªããæ°çŸãã©ãã€ããããã«ã¯ãã¿ãã€ãã®åçãããã¹ãããŒã¿ãä¿åããã³æäŸã§ãããŠãŒã¶ãŒããŒã¿ãä¿åããã¢ãŒããã¯ãã£ãäœæããããšã¯ã¯ããã«å°é£ã§ãã 2012幎ã«DevConfã§éå¬ãããAlexei Rybakã®ãã¹ã¿ãŒã¯ã©ã¹ãã 2015幎ã«åçãä¿åããããã®ã¢ãŒããã¯ãã£ã«é¢ããç§ã®ã¬ããŒããªã©ãã¢ãŒããã¯ãã£ã«é¢ããå€ãã®ã¬ããŒãããããŸããã æ®å¿µãªãããã€ã³ã¿ãã¥ãŒã§ã¢ãŒããã¯ãã£ã«ã€ããŠç°¡åã«è©±ãããšã¯ã§ããªãããããã¬ãŒã³ããŒã·ã§ã³ã§è©³çŽ°ã確èªããããšããå§ãããŸãã
-ã¢ãŒããã¯ãã£ã®ãã®ãããªã¹ã«ãŒãããã¯ã©ã®ããã«éæãããŸãããããã€ãã®èå³æ·±ãå Žæã¯äœã§ããïŒ
ç¹°ãè¿ããŸããããã®ãããªåž¯åå¹ ã¯ç®ç«ã£ããã®ã§ã¯ãªããåãLTMã¯è¿œå ã®ãããã¯ã¢ãããããªããŠãè² è·ã«å¯ŸåŠã§ããŸãã
ãŠãŒã¶ãŒããŒã¿ãæ ŒçŽããã¢ãŒããã¯ãã£ã«ã€ããŠèª¬æãããšããã¹ãŠãå°ãèå³æ·±ããã®ã«ãªããŸãã åãŠãŒã¶ãŒã®ããŒã¿ã1ã€ã®ãµãŒããŒã«ä¿åããŸããã€ãŸããIDããã®ä»ã®åæå€ã§ã¯ãªãããŠãŒã¶ãŒããšã«ããŒã¿ãåå²ããŸãã ããã«ããããŠãŒã¶ãŒããŒã¿ãæäœãããšãã«ããªãè€éãªéžæãè¡ããJOINãšè€éãªäžŠã¹æ¿ãã䜿çšã§ããŸãã åæã«ããŠãŒã¶ãŒã¯ãµãŒããŒãããã€ã«ãããŸããããå¿ èŠã«å¿ããŠã¯ã©ã¹ã¿ãŒå ã移åã§ããŸãã ããã¯ããŠãŒã¶ãŒã® "spot_id"ããã³ "place_id"ïŒãµãŒããŒäžã®ãµãŒããŒåãšããŒãã«åã決å®ã§ããèå¥åïŒã "authorizer"ãšåŒã°ããäžå€®ãµãŒãã¹ã«ä¿åãããšããäºå®ã«ããéæãããŸãã ãŠãŒã¶ãŒããŒã¿ããŒã¹ãžã®æ¥ç¶ã確ç«ããå¿ èŠããããã³ã«ããã®ãµãŒãã¹ã«å¯ŸããŠèŠæ±ãè¡ãããŸãã ãµãŒãã¹ã¯1ç§ãããçŽ40kã®èªã¿åãèŠæ±ãå ããåäžã®MySQLã€ã³ã¹ã¿ã³ã¹ã§HandlerSocketãããã³ã«ã䜿çšããŠåŠçãããŸãã ãã®ãµãŒãã¹ã¯ããããã1ã€ã®ãµãŒããŒã«ãµãŒãã¹ãæäŸããæãè² è·ã®é«ãå éšãµãŒãã¹ã§ãããçŸæç¹ã§ã¯å°ãªããšã2åã®ããã©ãŒãã³ã¹ã®ããŒãžã³ããããŸãã MySQL + handlersocketã®ã¹ã±ãŒã©ããªãã£ã«ééããå Žåã§ããããšãã°ããã®ã¿ã¹ã¯ã«Tarantoolããã€ã§ãè©Šãããšãã§ããŸã-ãã®ããŒã¢ã³ã¯ã_kernel_ã«100,000ãªã¯ãšã¹ã/ç§ãçºè¡ã§ããŸãïŒMySQL + handlersocketã®å Žåã_server_ãžã®10äžãªã¯ãšã¹ããšæ¯èŒã§ããŸãïŒã
-ãããŠãHighLoad ++ã®ã¬ããŒãã«é¢ããããã€ãã®èšè
ã¬ããŒãã§ã¯ããã©ã³ãµãŒã®ãµãŒããŒã®éã¿ãèšå®ããã·ã¹ãã ã«ã€ããŠèª¬æããŸãïŒWebè² è·ã®å Žåã¯LTMãã¢ãã€ã«ã¯ã©ã¹ã¿ãŒã®å Žåã¯nginxïŒã ã¯ã©ã¹ã¿ã¯ãæäœæ¥ã§è¡ããããã¯ããã«åäžãªè² è·åæ£ãå®çŸããããã«ã·ã¹ãã ãå¿ èŠã§ãã è² è·ãšãªã¯ãšã¹ãã®æ°ãå¢ããã«ã€ããŠãå¿ èŠãªãµãŒããŒã®æ°ãå¢ãå§ããæ°ãããµãŒããŒãè¿œå ããããšã«å ããŠãæ¢åã®ãµãŒããŒãããåçã«ããŒãã§ããããã«åªåããããšã«ããŸããã åŠçãéå§ããåã¯ãæãè² è·ã®é«ããµãŒããŒãšæãè² è·ã®äœããµãŒããŒã®CPU䜿çšçã®å·®ã¯çŽ20ã30ïŒ ã§ãããããã®åŸã¯ããã2.5ïŒ ã§ããã ç§ãã¡ã®ããªã¥ãŒã ã§ã¯ãããã«ããäœçŸå°ãã®ãµãŒããŒãä¿åããããšãã§ãã確ãã«äŸ¡å€ããããŸããã
æ©æ¢°ã®ã¹ã±ãŒã«ã®èªåé åžã«å¯Ÿããæ¢åã®ã¢ãããŒããã©ã®ã¢ãããŒããè©Šã¿ãã®ãããããŠãã®çµæãšããŠç¢ºç«ããããã®ã«ã€ããŠã話ããŸãã å¿ èŠã«å¿ããŠãããžã§ã¯ãã§äœ¿çšã§ããããã«ãç§ãã¡ãæžãããœãªã¥ãŒã·ã§ã³ã¯ãªãŒãã³ãœãŒã¹ã§å ¬éãããŸãã
ãããŠæåŸã«ãRuNet-Avito.ruã®åºåã®éåžžã«å€§èŠæš¡ã§æ倧ã®ãµãŒãã¹ã«ã€ããŠã§ãããäž»èŠãªãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ã«é¢ããå€å žçãªã¬ããŒãã Avitoã®ããŒãã·ã¹ãã ã¢ãŒããã¯ãã§ããMikhail Tyurinã¯ã ãåºåã¯ã©ãã«æ²èŒãããŠããŸããããšèªã£ãŠããŸãã
åäžã®é«è² è·ãããžã§ã¯ãã¯ååšãããç¹å®ã®æ©èœã®äœæ¥ã®åŸ®åŠãªéããç¹å®ã®ããŒã¿ãããã¯ã®ä¿åãšäœ¿çšã«æªéãããŸãã MIPTã®é«è² è·ã·ã¹ãã ã«é¢ããè¬çŸ©ã³ãŒã¹ããé«è² è·ãããžã§ã¯ãã§ã®äœæ¥ã®åæéšåã®éèŠæ§ã«ã€ããŠã®ã¹ããŒãªãŒãšãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããå§ããçç±ã§ãã ãããŠããããç§ããã€ã±ã«ã®ã¬ããŒãã«è¡ãããšããå§ãããçç±ã§ã-ãã€ã±ã«-ãšãŒãããã§æ倧ã®åé¡ã6ååºå-ããã¯ãã¹ãŠã©ã®ããã«æ©èœããŸããïŒäŒè°ã§äŒããŸãããïŒ
PSãã¥ãŒããªã¢ã«
ãšããã§ãããæ°é±éãè² è·ã®é«ãã·ã¹ãã ã®èšèšã«é¢ããæ°ããæç§æžãäœæããŠããŸãã ããã¯ãã·ã¢ã®æé«ã®å°é家ã®è¬çŸ©ã«åºã¥ããŠäœæãããäžé£ã®æçŽã§ãã ã©ããã§è¬çŸ©ããã³ãŒãããã©ããã§ãããªãæäŸããŸããã次ã®ããšãéèŠã§ããåè³æã¯ç§ãã¡ã«ãã£ãŠäºéã«ãã§ãã¯ãããHighLoad ++äŒè°å質ã®å°ãä»ããŠããŸãã
èå³ãããã°ããµã€ã³ã¢ããããŠãç¡æã§ãïŒ http : //highload.guide/
æåŸã« ãHabrahabrãŠãŒã¶ãŒã®å Žåãã«ã³ãã¡ã¬ã³ã¹ã§ã¯15ïŒ ã®ç¹å¥å²åŒãæäŸãããŸãããã±ããã®äºçŽæã«IAmHabrã³ãŒãã䜿çšããã ãã§ãã