ãç¥ãã
ååã®çãããå€ã®åã°ã«ããã¥ãŒã€ã³ã° ã·ã¹ãã ã®èšèšã«é¢ããå¥ã®èšäºã·ãªãŒãºããVTrade Experimentããã€ãŸããã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ãã¬ãŒã ã¯ãŒã¯ãäœæããè©Šã¿ãå
¬éããäºå®ã§ãã ãã®ã·ãªãŒãºã§ã¯ãååŒæããªãŒã¯ã·ã§ã³ãã¹ãã¢ãæ§ç¯ããçè«ãšå®è·µãæ€èšããŸãã èšäºã®æåŸã§ãæãèå³ã®ãããããã¯ã«æ祚ããŠãã ããã
ããã¯ãErlang/Elixir ã®åæ£ãªã¢ã¯ãã£ã ã¢ããªã±ãŒã·ã§ã³ã«é¢ããã·ãªãŒãºã®æåŸã®èšäºã§ãã ã§
ä»æ¥ã¯ãã³ãŒãããŒã¹ã®éçºãšãããžã§ã¯ãå šè¬ã®åé¡ã«ã€ããŠåãäžããŸãã
ãµãŒãã¹ã®æ§æ
å®éã«ã¯ããµãŒãã¹ãéçºãããšããå€ãã®å ŽåãXNUMX ã€ã®ã³ã³ãããŒã©ãŒã§è€æ°ã®å¯Ÿè©±ãã¿ãŒã³ãçµã¿åãããå¿ èŠããããŸãã ããšãã°ããããžã§ã¯ã ãŠãŒã¶ãŒ ãããã¡ã€ã«ã®ç®¡çã®åé¡ã解決ãããŠãŒã¶ãŒ ãµãŒãã¹ã¯ãreq-resp ãªã¯ãšã¹ãã«å¿çããpub-sub çµç±ã§ãããã¡ã€ã«ã®æŽæ°ãå ±åããå¿ èŠããããŸãã ãã®ã±ãŒã¹ã¯éåžžã«åçŽã§ããã¡ãã»ãŒãžã³ã°ã®èåŸã«ã¯ããµãŒãã¹ ããžãã¯ãå®è£ ããæŽæ°ãå ¬éãã XNUMX ã€ã®ã³ã³ãããŒã©ãŒããããŸãã
ãã©ãŒã«ããã¬ã©ã³ããªåæ£ãµãŒãã¹ãå®è£ ããå¿ èŠãããå Žåãç¶æ³ã¯ããã«è€éã«ãªããŸãã ãŠãŒã¶ãŒã®èŠä»¶ãå€æŽããããšæ³åããŠã¿ãŸãããã
- ããã§ããµãŒãã¹ã¯ 5 ã€ã®ã¯ã©ã¹ã¿ãŒ ããŒãã§ãªã¯ãšã¹ããåŠçããå¿ èŠããããŸãã
- ããã¯ã°ã©ãŠã³ãåŠçã¿ã¹ã¯ãå®è¡ã§ããã
- ãŸãããããã¡ã€ã«æŽæ°ã®ããã®ãµãã¹ã¯ãªãã·ã§ã³ ãªã¹ããåçã«ç®¡çããããšãã§ããŸãã
æ³šïŒ äžè²«ããã¹ãã¬ãŒãžãšããŒã¿ã®ã¬ããªã±ãŒã·ã§ã³ã®åé¡ã¯èæ ®ããŠããŸããã ãããã®åé¡ã¯ä»¥åã«è§£æ±ºãããŠãããã·ã¹ãã ã«ã¯ä¿¡é Œæ§ãšã¹ã±ãŒã©ãã«ãªã¹ãã¬ãŒãžå±€ããã§ã«ããããã³ãã©ãŒã«ã¯ãããšå¯Ÿè©±ããã¡ã«ããºã ããããšä»®å®ããŸãããã
ãŠãŒã¶ãŒãµãŒãã¹ã®æ£åŒãªèª¬æã¯ããã«è€éã«ãªã£ãŠããŸãã ããã°ã©ãã®èŠ³ç¹ããèŠããšãã¡ãã»ãŒãžã³ã°ã䜿çšãããããå€æŽã¯æå°éã«æããããŸãã æåã®èŠä»¶ãæºããã«ã¯ãreq-resp 亀æãã€ã³ãã§ãã©ã³ã·ã³ã°ãæ§æããå¿ èŠããããŸãã
ããã¯ã°ã©ãŠã³ã ã¿ã¹ã¯ãåŠçããå¿ èŠæ§ãé »ç¹ã«çºçããŸãã ãŠãŒã¶ãŒã®å Žåãããã¯ãŠãŒã¶ãŒææžã®ãã§ãã¯ãããŠã³ããŒãããããã«ãã¡ãã£ã¢ã®åŠçããŸãã¯ãœãŒã·ã£ã« ã¡ãã£ã¢ãšã®ããŒã¿ã®åæãªã©ã§ãã ãããã¯ãŒã¯ã ãããã®ã¿ã¹ã¯ã¯ã¯ã©ã¹ã¿ãŒå ã§äœããã®æ¹æ³ã§åæ£ãããå®è¡ã®é²è¡ç¶æ³ãç£èŠãããå¿ èŠããããŸãã ãããã£ãŠã解決çã®ãªãã·ã§ã³ã¯ XNUMX ã€ãããŸããåã®èšäºã®ã¿ã¹ã¯åæ£ãã³ãã¬ãŒãã䜿çšãããããããé©ããªãå Žåã¯ãå¿ èŠãªæ¹æ³ã§ããã»ããµã®ããŒã«ã管çããã«ã¹ã¿ã ã¿ã¹ã¯ ã¹ã±ãžã¥ãŒã©ãäœæããŸãã
ãã€ã³ã 3 ã§ã¯ãpub-sub ãã³ãã¬ãŒãæ¡åŒµæ©èœãå¿ èŠã§ãã å®è£ ããã«ã¯ããããªãã·ã¥/ãµãã¹ã¯ã©ã€ã亀æãã€ã³ããäœæããåŸããµãŒãã¹å ã§ãã®ãã€ã³ãã®ã³ã³ãããŒã©ãŒãè¿œå ã§èµ·åããå¿ èŠããããŸãã ãããã£ãŠããµãã¹ã¯ãªãã·ã§ã³ãšãµãã¹ã¯ãªãã·ã§ã³è§£é€ãåŠçããããžãã¯ãã¡ãã»ãŒãžã³ã°å±€ãããŠãŒã¶ãŒã®å®è£ ã«ç§»åããŠãããã®ããã§ãã
ãã®çµæãåé¡ãå解ãããšãèŠä»¶ãæºããããã«ã¯ãç°ãªãããŒãã§ãµãŒãã¹ã® 5 ã€ã®ã€ã³ã¹ã¿ã³ã¹ãèµ·åãããµãã¹ã¯ãªãã·ã§ã³ãæ
åœããè¿œå ã®ãšã³ãã£ã㣠(ãããªãã·ã¥/ãµãã¹ã¯ã©ã€ã ã³ã³ãããŒã©ãŒ) ãäœæããå¿
èŠãããããšãããããŸããã
5 ã€ã®ãã³ãã©ãŒãå®è¡ããå ŽåããµãŒãã¹ ã³ãŒããå€æŽããå¿
èŠã¯ãããŸããã å¯äžã®è¿œå ã¢ã¯ã·ã§ã³ã¯ã亀æãã€ã³ãã§ãã©ã³ã·ã³ã° ã«ãŒã«ãèšå®ããããšã§ããããã«ã€ããŠã¯åŸã»ã©èª¬æããŸãã
ããã«è€éããå ãããŸããpub-sub ã³ã³ãããŒã©ãŒãšã«ã¹ã¿ã ã¿ã¹ã¯ ã¹ã±ãžã¥ãŒã©ãŒã¯åäžã®ã³ããŒã§åäœããå¿
èŠããããŸãã ç¹°ãè¿ãã«ãªããŸãããã¡ãã»ãŒãžã³ã° ãµãŒãã¹ã¯ãåºæ¬çãªãã®ãšããŠããªãŒããŒãéžæããããã®ã¡ã«ããºã ãæäŸããå¿
èŠããããŸãã
ãªãŒããŒã®éžæ
åæ£ã·ã¹ãã ã§ã¯ããªãŒããŒã®éžåºã¯ãäœããã®è² è·ã®åæ£åŠçã®ã¹ã±ãžã¥ãŒã«ãæ åœããåäžã®ããã»ã¹ãä»»åœããæé ã§ãã
éäžåãèµ·ããã«ããã·ã¹ãã ã§ã¯ãpaxos ã raft ãªã©ã®æ®éçãªã³ã³ã»ã³ãµã¹ããŒã¹ã®ã¢ã«ãŽãªãºã ã䜿çšãããŸãã
ã¡ãã»ãŒãžã³ã°ã¯ââãããŒã«ãŒã§ããäžå¿çãªèŠçŽ ã§ããããããã¹ãŠã®ãµãŒãã¹ ã³ã³ãããŒã©ãŒãã€ãŸããªãŒããŒåè£ã«ã€ããŠç¥ã£ãŠããŸãã ã¡ãã»ãŒãžã³ã°ã§ã¯æ祚ããã«ãªãŒããŒãä»»åœã§ããŸãã
éå§ããŠäº€æãã€ã³ãã«æ¥ç¶ãããšããã¹ãŠã®ãµãŒãã¹ãã·ã¹ãã ã¡ãã»ãŒãžãåä¿¡ããŸãã #'$leader'{exchange = ?EXCHANGE, pid = LeaderPid, servers = Servers}
ã ãã LeaderPid
ãšäžèŽãã pid
çŸåšã®ããã»ã¹ã§ã¯ããªãŒããŒã«ä»»åœããããªã¹ãã« Servers
ãã¹ãŠã®ããŒããšãã®ãã©ã¡ãŒã¿ãå«ãŸããŸãã
æ°ããããŒãã衚瀺ãããåäœäžã®ã¯ã©ã¹ã¿ãŒ ããŒããåæãããç¬éã«ããã¹ãŠã®ãµãŒãã¹ ã³ã³ãããŒã©ãŒã¯ #'$slave_up'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts}
О #'$slave_down'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts}
ããããã
ãã®ããã«ããŠããã¹ãŠã®ã³ã³ããŒãã³ãããã¹ãŠã®å€æŽãèªèããã¯ã©ã¹ã¿ãŒã«ã¯åžžã« XNUMX ã€ã®ãªãŒããŒãååšããããšãä¿èšŒãããŸãã
ã¡ãã£ãšãŒã¿
è€éãªåæ£åŠçããã»ã¹ãå®è£
ããã«ã¯ãæ¢åã®ã¢ãŒããã¯ãã£ã®æé©åã®åé¡ãšåæ§ã«ã仲ä»è
ã䜿çšãããšäŸ¿å©ã§ãã
ãµãŒãã¹ ã³ãŒããå€æŽããã«ãããšãã°è¿œå ã®åŠçãã¡ãã»ãŒãžã®ã«ãŒãã£ã³ã°ããŸãã¯ãã°èšé²ã®åé¡ã解決ããã«ã¯ããµãŒãã¹ã®åã«ãããã· ãã³ãã©ãŒãæå¹ã«ããŠããã¹ãŠã®è¿œå äœæ¥ãå®è¡ããŸãã
ãããªãã·ã¥/ãµãã¹ã¯ã©ã€ãæé©åã®å
žåçãªäŸã¯ãåžå Žã®äŸ¡æ Œå€åãªã©ã®æŽæ°ã€ãã³ããçæããããžãã¹ ã³ã¢ãšãWeb ã¯ã©ã€ã¢ã³ãã« WebSocket API ãæäŸããã¢ã¯ã»ã¹å±€ã§ãã N ãµãŒããŒãåããåæ£ã¢ããªã±ãŒã·ã§ã³ã§ãã
æ£é¢ããå€æããå Žåã顧客ãµãŒãã¹ã¯æ¬¡ã®ããã«ãªããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãã©ãããã©ãŒã ãšã®æ¥ç¶ã確ç«ããŸãã ãã©ãã£ãã¯ãçµäºãããµãŒããŒåŽã§ããã®æ¥ç¶ã«ãµãŒãã¹ãæäŸããããã»ã¹ãèµ·åãããŸãã
- ãµãŒãã¹ ããã»ã¹ã®ã³ã³ããã¹ãã§ãæŽæ°ã®æ¿èªãšãµãã¹ã¯ãªãã·ã§ã³ãçºçããŸãã ãã®ããã»ã¹ã§ã¯ããããã¯ã® submit ã¡ãœãããåŒã³åºããŸãã
- ã€ãã³ããã«ãŒãã«ã§çæããããšãæ¥ç¶ãåŠçããããã»ã¹ã«é ä¿¡ãããŸãã
ããã¥ãŒã¹ããããã¯ã« 50000 人ã®è³Œèªè
ããããšæ³åããŠã¿ãŸãããã ãµãã¹ã¯ã©ã€ããŒã¯ 5 ã€ã®ãµãŒããŒã«åçã«åæ£ãããŸãã ãã®çµæã亀æãã€ã³ãã«å°çããåæŽæ°ã¯ 50000 åè€è£œãããŸããã€ãŸãããµãã¹ã¯ã©ã€ããŒã®æ°ã«å¿ããŠãåãµãŒããŒäžã§ 10000 åè€è£œãããŸãã ããŸãå¹æçãªèšç»ã§ã¯ãããŸããã?
ãã®ç¶æ³ãæ¹åããã«ã¯ã亀æãã€ã³ããšåãååã®ãããã·ãå°å
¥ããŸãããã ã°ããŒãã« ããŒã ã¬ãžã¹ãã©ã¯ãååã§æãè¿ãããã»ã¹ãè¿ãããšãã§ããªããã°ãªããŸãããããã¯éèŠã§ãã
ãã®ãããã·ãã¢ã¯ã»ã¹å±€ãµãŒããŒäžã§èµ·åããŸããããWebSocket API ãæäŸãããã¹ãŠã®ããã»ã¹ã¯ãã«ãŒãã«å
ã®å
ã®ãããªãã·ã¥/ãµãã¹ã¯ãªãã·ã§ã³äº€æãã€ã³ãã§ã¯ãªãããã®ãããã·ããµãã¹ã¯ã©ã€ãããŸãã ãããã·ã¯ãäžæã®ãµãã¹ã¯ãªãã·ã§ã³ã®å Žåã«ã®ã¿ã³ã¢ããµãã¹ã¯ã©ã€ãããåä¿¡ã¡ãã»ãŒãžããã¹ãŠã®ãµãã¹ã¯ã©ã€ããŒã«è€è£œããŸãã
ãã®çµæãã«ãŒãã« ãµãŒããŒãšã¢ã¯ã»ã¹ ãµãŒããŒã®é㧠5 ã¡ãã»ãŒãžã§ã¯ãªã 50000 ã¡ãã»ãŒãžãéä¿¡ãããŸãã
ã«ãŒãã£ã³ã°ãšãã©ã³ã·ã³ã°
èŠæ±-å¿ç
çŸåšã®ã¡ãã»ãŒãžã³ã°å®è£ ã«ã¯ã次㮠7 ã€ã®ãªã¯ãšã¹ãåæ£æŠç¥ããããŸãã
default
ã ãªã¯ãšã¹ãã¯ãã¹ãŠã®ã³ã³ãããŒã©ãŒã«éä¿¡ãããŸããround-robin
ã ãªã¯ãšã¹ãã¯åæãããã³ã³ãããŒã©ãŒéã§åšæçã«åæ£ãããŸããconsensus
ã ãµãŒãã¹ãæäŸããã³ã³ãããŒã©ãŒã¯ããªãŒããŒãšã¹ã¬ãŒãã«åããããŸãã ãªã¯ãšã¹ãã¯ãªãŒããŒã«ã®ã¿éä¿¡ãããŸããconsensus & round-robin
ã ã°ã«ãŒãã«ã¯ãªãŒããŒãããŸããããªã¯ãšã¹ãã¯ã¡ã³ããŒå šå¡ã«åæ£ãããŸããsticky
ã ããã·ã¥é¢æ°ãèšç®ãããç¹å®ã®ãã³ãã©ãŒã«å²ãåœãŠãããŸãã ãã®çœ²åãæã€åŸç¶ã®ãªã¯ãšã¹ãã¯åããã³ãã©ãŒã«éãããŸããsticky-fun
ã 亀æãã€ã³ãã®åæåæã«ãããã·ã¥èšç®é¢æ°ãsticky
ãã©ã³ã¹ããšãããšãfun
ã Sticky-Fun ãšåæ§ã«ãè¿œå ã§ãªãã€ã¬ã¯ããæåŠããŸãã¯ååŠçã§ããã®ã¯ãŠãŒã¶ãŒã ãã§ãã
é åžæŠç¥ã¯ã亀æãã€ã³ããåæåããããšãã«èšå®ãããŸãã
ãã©ã³ã¹ããšãã ãã§ãªããã¡ãã»ãŒãžã³ã°ã䜿çšãããšãšã³ãã£ãã£ã«ã¿ã°ãä»ããããšãã§ããŸãã ã·ã¹ãã å ã®ã¿ã°ã®çš®é¡ãèŠãŠã¿ãŸãããã
- æ¥ç¶ã¿ã°ã ã€ãã³ããã©ã®ãããªæ¥ç¶ãéããŠçºçããããç解ã§ããŸãã ã³ã³ãããŒã©ãŒ ããã»ã¹ãåã亀æãã€ã³ãã«æ¥ç¶ããããç°ãªãã«ãŒãã£ã³ã° ããŒã䜿çšããå Žåã«äœ¿çšãããŸãã
- ãµãŒãã¹ã¿ã°ã ãã³ãã©ãŒã XNUMX ã€ã®ãµãŒãã¹ã®ã°ã«ãŒãã«çµåããã«ãŒãã£ã³ã°ããã³ãã©ã³ã·ã³ã°æ©èœãæ¡åŒµã§ããŸãã req-resp ãã¿ãŒã³ã®å Žåãã«ãŒãã£ã³ã°ã¯çŽç·çã§ãã ãªã¯ãšã¹ãã亀æãã€ã³ãã«éä¿¡ãã亀æãã€ã³ããããããµãŒãã¹ã«æž¡ããŸãã ãã ãããã³ãã©ãŒãè«çã°ã«ãŒãã«åå²ããå¿ èŠãããå Žåãåå²ã¯ã¿ã°ã䜿çšããŠè¡ãããŸãã ã¿ã°ãæå®ãããšããªã¯ãšã¹ãã¯ã³ã³ãããŒã©ãŒã®ç¹å®ã®ã°ã«ãŒãã«éä¿¡ãããŸãã
- ãªã¯ãšã¹ãã¿ã°ã åçãåºå¥ã§ããããã«ãªããŸãã ç§ãã¡ã®ã·ã¹ãã ã¯éåæã§ããããããµãŒãã¹å¿çãåŠçããã«ã¯ããªã¯ãšã¹ãã®éä¿¡æã« RequestTag ãæå®ã§ããå¿ èŠããããŸãã ãããããç§ãã¡ã«å¯ãããããªã¯ãšã¹ãã«å¯Ÿããçããç解ããããšãã§ããŸãã
ãããªãã·ã¥/ãµãã¹ã¯
ãããµãã®å Žåã¯ããã¹ãŠãå°ãåçŽã«ãªããŸãã ã¡ãã»ãŒãžãå ¬éããã亀æãã€ã³ãããããŸãã 亀æãã€ã³ãã¯ãå¿ èŠãªã«ãŒãã£ã³ã° ããŒã賌èªããŠãããµãã¹ã¯ã©ã€ããŒéã§ã¡ãã»ãŒãžãé åžããŸã (ããã¯ãããã¯ã«äŒŒãŠãããšèšããŸã)ã
ã¹ã±ãŒã©ããªãã£ãšèé害æ§
ã·ã¹ãã å šäœã®ã¹ã±ãŒã©ããªãã£ã¯ãã·ã¹ãã ã®ã¬ã€ã€ãŒãšã³ã³ããŒãã³ãã®ã¹ã±ãŒã©ããªãã£ã®çšåºŠã«ãã£ãŠç°ãªããŸãã
- ãµãŒãã¹ã¯ããã®ãµãŒãã¹ã®ãã³ãã©ãŒãåããã¯ã©ã¹ã¿ãŒã«è¿œå ã®ããŒããè¿œå ããããšã«ãã£ãŠæ¡åŒµãããŸãã è©Šçšæã«æé©ãªãã©ã³ã¹ããªã·ãŒãéžæã§ããŸãã
- å¥ã®ã¯ã©ã¹ã¿ãŒå ã®ã¡ãã»ãŒãžã³ã° ãµãŒãã¹èªäœã¯éåžžãç¹ã«è² è·ã®é«ã亀æãã€ã³ããå¥ã®ã¯ã©ã¹ã¿ãŒ ããŒãã«ç§»åããããã¯ã©ã¹ã¿ãŒã®ç¹ã«è² è·ã®é«ãé åã«ãããã· ããã»ã¹ãè¿œå ããããšã«ãã£ãŠæ¡åŒµãããŸãã
- ã·ã¹ãã å šäœã®ç¹æ§ãšããŠã®ã¹ã±ãŒã©ããªãã£ã¯ãã¢ãŒããã¯ãã£ã®æè»æ§ãšãåã ã®ã¯ã©ã¹ã¿ãŒãå ±éã®è«çãšã³ãã£ãã£ã«çµåããèœåã«äŸåããŸãã
ãããžã§ã¯ãã®æåã¯ãå€ãã®å Žåãã¹ã±ãŒãªã³ã°ã®ã·ã³ãã«ããšé床ã«äŸåããŸãã çŸåšã®ããŒãžã§ã³ã®ã¡ãã»ãŒãžã³ã°ã¯ââãã¢ããªã±ãŒã·ã§ã³ãšãšãã«æé·ããŸãã 50 ïœ 60 å°ã®ãã·ã³ã®ã¯ã©ã¹ã¿ãŒãäžè¶³ããŠããå Žåã§ãããã§ãã¬ãŒã·ã§ã³ã«é Œãããšãã§ããŸãã æ®å¿µãªããããã§ãã¬ãŒã·ã§ã³ã®ãããã¯ã¯ãã®èšäºã®ç¯å²ãè¶ ããŠããŸãã
äºçŽ
è² è·åæ£ãåæããéã«ããµãŒãã¹ ã³ã³ãããŒã©ãŒã®åé·æ§ã«ã€ããŠã¯ãã§ã«èª¬æããŸããã ãã ããã¡ãã»ãŒãžã³ã°ãäºçŽããå¿ èŠããããŸãã ããŒããŸãã¯ãã·ã³ãã¯ã©ãã·ã¥ããå Žåãã¡ãã»ãŒãžã³ã°ã¯ââå¯èœãªéãæçæéã§èªåçã«å埩ããå¿ èŠããããŸãã
ç§ã®ãããžã§ã¯ãã§ã¯ã転åæã«è·éãæŸãè¿œå ã®ããŒãã䜿çšããŠããŸãã Erlang ã«ã¯ãOTP ã¢ããªã±ãŒã·ã§ã³çšã®æšæºåæ£ã¢ãŒãå®è£
ããããŸãã åæ£ã¢ãŒãã§ã¯ãé害ãçºçããå Žåã«ã以åã«èµ·åããå¥ã®ããŒãã§é害ãçºçããã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšã«ãã£ãŠãªã«ããªãå®è¡ããŸãã ãã®ããã»ã¹ã¯ééçã§ãããé害ãçºçãããšãã¢ããªã±ãŒã·ã§ã³ã¯èªåçã«ãã§ã€ã«ãªãŒã㌠ããŒãã«ç§»åããŸãã ãã®æ©èœã®è©³çŽ°ã«ã€ããŠã¯ããã¡ããã芧ãã ãã
ÐÑПОзвПЎОÑелÑМПÑÑÑ
å°ãªããšããrabbitmq ãšã«ã¹ã¿ã ã¡ãã»ãŒãžã³ã°ã®ããã©ãŒãã³ã¹ã倧ãŸãã«æ¯èŒããŠã¿ãŸãããã
èŠã€ããŸãã
6.14.1.2.1.2.2é
ã å
ã®ããã¥ã¡ã³ãã«ã¯ãRPC CAST ã®çµæã瀺ãããŠããŸãã
äºåã« OS ã«ãŒãã«ãã¢ãŒã©ã³ VM ã«è¿œå ã®èšå®ãè¡ãããšã¯ãããŸããã ãã¹ãã®æ¡ä»¶:
- erl ãªãã·ã§ã³: +A1 +sbtuã
- åäžã® erlang ããŒãå ã®ãã¹ãã¯ãã¢ãã€ã« ããŒãžã§ã³ã®å€ã i7 ãæèŒããã©ãããããã§å®è¡ãããŸãã
- ã¯ã©ã¹ã¿ãŒ ãã¹ãã¯ã10G ãããã¯ãŒã¯ãåãããµãŒããŒã§å®è¡ãããŸãã
- ã³ãŒã㯠Docker ã³ã³ããå ã§å®è¡ãããŸãã NAT ã¢ãŒãã®ãããã¯ãŒã¯ã
ãã¹ãã³ãŒã:
req_resp_bench(_) ->
W = perftest:comprehensive(10000,
fun() ->
messaging:request(?EXCHANGE, default, ping, self()),
receive
#'$msg'{message = pong} -> ok
after 5000 ->
throw(timeout)
end
end
),
true = lists:any(fun(E) -> E >= 30000 end, W),
ok.
ã·ããªãª1ïŒ ãã¹ãã¯ãå€ã i7 ã¢ãã€ã« ããŒãžã§ã³ãæèŒããã©ãããããã§å®è¡ãããŸãã ãã¹ããã¡ãã»ãŒãžã³ã°ãããã³ãµãŒãã¹ã¯ãXNUMX ã€ã® Docker ã³ã³ãããŒå ã® XNUMX ã€ã®ããŒãã§å®è¡ãããŸãã
Sequential 10000 cycles in ~0 seconds (26987 cycles/s)
Sequential 20000 cycles in ~1 seconds (26915 cycles/s)
Sequential 100000 cycles in ~4 seconds (26957 cycles/s)
Parallel 2 100000 cycles in ~2 seconds (44240 cycles/s)
Parallel 4 100000 cycles in ~2 seconds (53459 cycles/s)
Parallel 10 100000 cycles in ~2 seconds (52283 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (49317 cycles/s)
2ã¹ã¯ãªãã: Docker (NAT) äžã®ç°ãªããã·ã³äžã§å®è¡ãããŠãã 3 ã€ã®ããŒãã
Sequential 10000 cycles in ~1 seconds (8684 cycles/s)
Sequential 20000 cycles in ~2 seconds (8424 cycles/s)
Sequential 100000 cycles in ~12 seconds (8655 cycles/s)
Parallel 2 100000 cycles in ~7 seconds (15160 cycles/s)
Parallel 4 100000 cycles in ~5 seconds (19133 cycles/s)
Parallel 10 100000 cycles in ~4 seconds (24399 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (34517 cycles/s)
ãã¹ãŠã®ã±ãŒã¹ã§ãCPU 䜿çšç㯠250% ãè¶ ããŸããã§ããã
çµæ
ãã®ãµã€ã¯ã«ããã€ã³ããã³ãã®ããã«èŠããªãããšãé¡ã£ãŠããŸããç§ã®çµéšããåæ£ã·ã¹ãã ã®ç 究è ãšãããžãã¹ ã·ã¹ãã çšã®åæ£ã¢ãŒããã¯ãã£ã®æ§ç¯ã®ãŸãã«åæ段éã«ãããErlang/Elixir ã«èå³ãæã£ãŠããå®è·µè ã®äž¡æ¹ã«ãšã£ãŠçã®å©çãšãªãããšãé¡ã£ãŠããŸãã ãããããããã ãã®äŸ¡å€ããããã©ããçåããããŸã...
ãã©ã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã
VTrade Experiment ã·ãªãŒãºã®äžç°ãšããŠãã©ã®ãããªãããã¯ãããã«è©³ããåãäžããã¹ãã§ãã?
-
çè«: åžå Žã泚æãããã³ãã®ã¿ã€ãã³ã°: DAYãGTDãGTCãIOCãFOKãMOOãMOCãLOOãLOC
-
泚ææžã ã°ã«ãŒãåã䜿çšããŠæžç±ãå®è£ ããçè«ãšå®è·µ
-
ååŒã®èŠèŠå: ãã£ãã¯ãããŒã解å床ã ä¿åæ¹æ³ãšè²Œãæ¹
-
ããã¯ãªãã£ã¹ã äŒç»ã»éçºã åŸæ¥å¡ã®ç£èŠãšã€ã³ã·ãã³ã調æ»
-
APIã ã©ã®ãããªã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠãªã®ãããããŠããããå®è£ ããæ¹æ³ãèããŠã¿ãŸããã
-
æ å ±ã¹ãã¬ãŒãž: ååŒã·ã¹ãã ã«ããã PostgreSQLãTimescaleãTarantool
-
ååŒã·ã¹ãã ã®åå¿æ§
-
ä»ã®ã ã³ã¡ã³ãã«æžããŸã
6 人ã®ãŠãŒã¶ãŒãæ祚ããŸããã 4åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com