ãã®èŠåºãã¯ããŸãå§ãŸã£ãâŠããšããå¥å šãªåå¿ãåŒãèµ·ããããšç¢ºä¿¡ããŠããŸãããããã5 ïœ 10 åé泚ç®ãéããããŠãã ãããæåŸ ãè£åããªãããã«åªããŸãã
èšäºã®æ§æã¯æ¬¡ã®ããã«ãªããŸããã¹ãã¬ãªã¿ã€ãã®çºèšãåãäžãããã®ã¹ãã¬ãªã¿ã€ãã®åºçŸã®ãæ§è³ªããæããã«ããŸãã ããã«ããããããžã§ã¯ãã«ãããããŒã¿äº€æãã©ãã€ã ã®éžæãæ°ããè§åºŠããèŠãããšãã§ããããã«ãªãã°å¹žãã§ãã
RPC ãšã¯äœããæ確ã«ããããã«ãæšæºã«ã€ããŠæ€èšããããšãææ¡ããŸãã
RPC ãªã¯ãšã¹ãã§ã¯ããããªã¯ãšã¹ããå®è¡ã§ãããããããé«éãã€å¹ççã§ãã
éèŠãªã®ã¯ãRPC ã§ã¯ XNUMX ã€ã®ãªã¯ãšã¹ãã§è€æ°ã®ããã·ãŒãžã£ãåæã«åŒã³åºãããšãã§ãããšããããšã§ãã ããšãã°ããŠãŒã¶ãŒãäœæãããã®ãŠãŒã¶ãŒã«ã¢ãã¿ãŒãè¿œå ããåããªã¯ãšã¹ãã§ããã€ãã®ãããã¯ã賌èªããŸãã ãã£ã XNUMX ã€ã®ãªã¯ãšã¹ãã§ãã©ãã»ã©ã®ã¡ãªãããããããšã§ãããã
å®éãããã¯ãšã³ã ããŒãã XNUMX ã€ãããªãå Žåã¯ãããã ãªã¯ãšã¹ãã䜿çšããã»ããé«éã§ããããã«èŠããŸãã XNUMX ã€ã® REST ãªã¯ãšã¹ãã§ã¯ãæ¥ç¶ã確ç«ããããã« XNUMX ã€ã®ããŒããã XNUMX åã®ãªãœãŒã¹ãå¿ èŠã«ãªãããã§ãã
REST ã®å ŽåãåŸç¶ã®ãªã¯ãšã¹ããè¡ãããã«ã¯ãæåã®ãªã¯ãšã¹ãã§ãŠãŒã¶ãŒ ID ãè¿ãå¿ èŠãããããšã«æ³šæããŠãã ããã ãããå šäœçãªçµæã«æªåœ±é¿ãåãŒããŸãã
ãããããã®ãããªã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ã瀟å ãœãªã¥ãŒã·ã§ã³ãšãšã³ã¿ãŒãã©ã€ãºã§ã®ã¿èŠã€ãããŸãã å°èŠæš¡ãª WEB ãããžã§ã¯ãã®å Žåã¯æåŸã®æ段ãšããŠã ããããæ¬æ Œç㪠WEB ãœãªã¥ãŒã·ã§ã³ã¯ãããšã HighLoad ãšåŒã°ãããã®ã§ãã£ãŠããæ§ç¯ãã䟡å€ã¯ãããŸããã ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãé«å¯çšæ§ãšè² è·ã®åºæºãæºãããŠããå¿ èŠããããŸãã ãããŠçµµãå€ãã£ãŠãããŸãã
åãã·ããªãªã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ã¢ã¯ãã£ãã㣠ãã£ãã«ã¯ç·è²ã§ããŒã¯ãããŸãã RPC ãã©ã®ããã«åäœãããã«æ³šç®ããŠãã ããã ãªã¯ãšã¹ãã¯ããã©ã³ãµãŒããããã¯ãšã³ããŸã§ã® XNUMX ã€ã®åºéã®ã¿ã§ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããŸãã REST ã¯æåã®ãªã¯ãšã¹ãã§äŸç¶ãšããŠæ倱ãè² ããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã䜿çšããŠå€±ãããæéãåãåãããŸãã
ã¹ã¯ãªããã«ã¯ããšã³ãªããã¡ã³ãã®ãªã¯ãšã¹ãã XNUMX ã€ã§ã¯ãªããããšãã° XNUMX ã€ãŸã㯠XNUMX ã€å ¥åããã ãã§ååã§ã...ãããŠãã誰ãä»åè ã§ãã?ããšãã質åã«å¯Ÿããçããå ¥åããã ãã§ååã§ãã ãäžæçã«ãªããŸãã
ç§ã¯ãã®åé¡ãããã«åºç¯å²ã«èŠãŠã¿ãããšãææ¡ããŸãã ãã®å³ã¯ã€ã³ãã©ã¹ãã©ã¯ã㣠ãã£ãã«ãã©ã®ããã«äœ¿çšããããã瀺ããŠããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã£ãã«ã«éå®ãããŸããã é«è² è·ã€ã³ãã©ã¹ãã©ã¯ãã£ã®éèŠãªã³ã³ããŒãã³ãã¯ãã£ãã·ã¥ã§ãã 次ã«ãããçš®ã®ãŠãŒã¶ãŒ ã¢ãŒãã£ãã¡ã¯ããååŸããŸãããã ç¹°ãè¿ãã 32åãšããŸãããã
é«è² è·ã®èŠæ±ãæºããããã« RPC ã€ã³ãã©ã¹ãã©ã¯ãã£ãã©ã®ããã«å€§å¹ ã«æ¹åãããããã芧ãã ããã éèŠãªã®ã¯ãRPC ãšã¯ç°ãªããREST 㯠HTTP ãããã³ã«ã®èœåãæ倧éã«æŽ»çšãããšããããšã§ãã äžã®å³ã§ã¯ããã®æ©èœã¯ãªã¯ãšã¹ã ã¡ãœãã GET ã«ãã£ãŠå®çŸãããŠããŸãã
HTTP ã¡ãœãããªã©ã«ã¯ããã£ãã·ã¥æŠç¥ããããŸãã ãããã¯æ¬¡ã®ããã¥ã¡ã³ãã§èŠã€ããããšãã§ããŸãã
ãã®çµæãRPC ã¯ã€ã³ãã©ã¹ãã©ã¯ã㣠ãã£ãã·ã¥ãå¹æçã«äœ¿çšã§ããªããªããŸãã ããã«ããããœãããŠã§ã¢ ãã£ãã·ã¥ããã€ã³ããŒããããå¿ èŠãçããŸãã ãã®å³ã¯ããã®åœ¹å²ã® Redis ã瀺ããŠããŸãã ãœãããŠã§ã¢ ãã£ãã·ã¥ã§ã¯ãéçºè ãã³ãŒãå±€ãè¿œå ããããã¢ãŒããã¯ãã£ã«é¡èãªå€æŽãå ãããããå¿ èŠããããŸãã
ããã§ãæ€èšäžã®ã€ã³ãã©ã¹ãã©ã¯ãã£å 㧠REST ããã³ RPC ããçã¿åºããããªã¯ãšã¹ãã®æ°ãæ°ããŠã¿ãŸãããã
ãªã¯ãšã¹ã
åä¿¡ãã¬ã€
ããã¯ãšã³ããž
DBMSãž
ãœãã ãã£ãã·ã¥ (Redis) ãž
åèš
REST
1 / 32 *
1
1
0
3 / 35
RPC
32
32
1
31
96
æåã®èšç»ãšæ¯èŒãããšããã®éãã¯é¡èã§ãã REST ã®å©ç¹ãæããã«ãªããŸããã ããããããã§ç«ã¡æ¢ãŸããªãããšããå§ãããŸãã éçºãããã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã¯ CDN ãå«ãŸããŠããŸãã å€ãã®å ŽåãDDoS ããã³ DoS æ»æãžã®å¯Ÿçã®åé¡ã解決ãããŸãã æã ãåŸãïŒ
ããããRPC ã«ãšã£ãŠäºæ ãéåžžã«æªããšããã§ãã RPC ã¯ã¯ãŒã¯ããŒãã CDN ã«å§ä»»ããããšãã§ããŸããã æ»æã«å¯Ÿæããã«ã¯ã·ã¹ãã ã«é ŒããããããŸããã
ããã§çµããããšã¯å¯èœã§ããããïŒ ãããŠãŸãããããã åè¿°ããããã«ãHTTP ã¡ãœããã«ã¯ç¬èªã®ãéæ³ãããããŸãã GET ã¡ãœãããã€ã³ã¿ãŒãããã§åºã䜿çšãããŠããã®ã«ã¯çç±ããªãããã§ã¯ãããŸããã ãã®ã¡ãœããã¯ãã³ã³ãã³ãã®äžéšã«ã¢ã¯ã»ã¹ããããå¶åŸ¡ãã³ãŒãã«ç§»ãããåã«ã€ã³ãã©ã¹ãã©ã¯ãã£èŠçŽ ã解éã§ããæ¡ä»¶ãèšå®ãããã§ããããšã«æ³šæããŠãã ããã ããããã¹ãŠã«ãããéåžžã«å€§ããªãªã¯ãšã¹ãã®ãããŒãåŠçã§ãããæè»ã§ç®¡çããããã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæã§ããŸãã ããããRPC ã§ã¯ãã®ã¡ãœããã¯ç¡èŠãããŸãã
ã§ã¯ããªãããã ãªã¯ãšã¹ã (RPC) ã®ã»ããé«éã§ãããšããé説ãæ ¹åŒ·ãæ®ã£ãŠããã®ã§ãããã? å人çã«ã¯ãã»ãšãã©ã®ãããžã§ã¯ã㯠REST ããã®åŒ·ã¿ãçºæ®ã§ããéçºã¬ãã«ã«å°éããŠããªãããã«æããŸãã ããã«ãå°èŠæš¡ãªãããžã§ã¯ãã§ã¯ãèªåã®åŒ±ç¹ããããããšã«ç©æ¥µçã§ãã
REST ãŸã㯠RPC ã®éžæã¯ããããžã§ã¯ãå ã®å人ã®èªçºçãªéžæã§ã¯ãããŸããã ãã®éžæã¯ãããžã§ã¯ãã®èŠä»¶ãæºããå¿ èŠããããŸãã ãããžã§ã¯ãã REST ããå®éã«ã§ããããšãã¹ãŠãçµãåºãããšãã§ãããããæ¬åœã«å¿ èŠãªå ŽåãREST ã¯åªããéžæè¢ã«ãªããŸãã
ããããREST ã®å©ç¹ãæ倧éã«æŽ»çšããã«ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãè¿ éã«æ¡åŒµãããããžã§ã¯ãã® DevOps ã¹ãã·ã£ãªã¹ããã€ã³ãã©ã¹ãã©ã¯ãã£ã管çãã管çè ãWEB ãµãŒãã¹ã®ãã¹ãŠã®ã¬ã€ã€ãŒãèšèšããã¢ãŒããã¯ããéãå¿ èŠãããå Žå...ãããŠãããžã§ã¯ãåæã«ãããŒã¬ãªã³ã XNUMX æ¥ã« XNUMX ããã¯è²©å£²ããŸããç§ãªã RPC ã䜿ãç¶ããã§ãããããªããªã... ãã®ãããã³ã«ã¯ããå®çšçã§ãã ãã£ãã·ã¥ãã€ã³ãã©ã¹ãã©ã¯ãã£ãã©ã®ããã«æ©èœãããã«ã€ããŠã®æ·±ãç¥èã¯å¿ èŠãããŸããããéçºè ã¯å¿ èŠãªããã·ãŒãžã£ãžã®ã·ã³ãã«ã§ããããããåŒã³åºãã«éäžã§ããŸãã ããžãã¹ã楜ãããªãã§ãããã
RPC ãªã¯ãšã¹ãã¯åäžãã©ã³ã¶ã¯ã·ã§ã³å ã§ããããªã¯ãšã¹ããå®è¡ã§ãããããä¿¡é Œæ§ãé«ããªããŸãã
RPC ã®ãã®ç¹æ§ã¯æãããªå©ç¹ã§ãã ããŒã¿ããŒã¹ã®äžè²«æ§ãä¿ã€ã®ã¯ç°¡åã§ãã ããããREST ã§ã¯ãããã¯ãŸããŸãè€éã«ãªããŸãã ãªã¯ãšã¹ãã¯ãç°ãªãããã¯ãšã³ã ããŒãã«äžè²«æ§ãªãå°çããå¯èœæ§ããããŸãã
REST ã®ãã®ãæ¬ ç¹ãã¯ãåè¿°ãã REST ã®å©ç¹ãã€ãŸããã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ãªãœãŒã¹ãå¹ççã«äœ¿çšã§ããæ©èœã®è£è¿ãã§ãã ã€ã³ãã©ã¹ãã©ã¯ãã£ã®èšèšãäžååãªå Žåãç¹ã«ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ãšããŒã¿ããŒã¹ã®èšèšãäžååãªå Žåãããã¯éåžžã«å€§ããªåé¡ãšãªããŸãã
ããããããããªã¯ãšã¹ãã¯èŠãç®ã»ã©ä¿¡é Œã§ããã®ã§ãããã? ã±ãŒã¹ãèŠãŠã¿ãŸãããããŠãŒã¶ãŒãäœæãããã®ãããã£ãŒã«ã«èª¬æãè¿œå ããŠãç»é²ãå®äºããããã®ç§å¯ãå«ã SMS ãéä¿¡ããŸãã ãããã®ã XNUMX ã€ã®ããã ãªã¯ãšã¹ã㧠XNUMX ã€ã®åŒã³åºããå®è¡ããŸãã
å³ãèŠãŠã¿ãŸãããã ããã¯ãé«å¯çšæ§èŠçŽ ãåããã€ã³ãã©ã¹ãã©ã¯ãã£ãæäŸããŸãã SMS ã²ãŒããŠã§ã€ã«ã¯ 503 ã€ã®ç¬ç«ããéä¿¡ãã£ãã«ããããŸãã ããã...äœãèŠããã§ããããïŒ SMS ã®éä¿¡æã«ãšã©ãŒ XNUMX ãçºçãããµãŒãã¹ãäžæçã«å©çšã§ããªããªããŸãã ãªããªãSMS éä¿¡ã¯ããã ãªã¯ãšã¹ãã«ããã±ãŒãžåãããŠããããããªã¯ãšã¹ãå šäœãããŒã«ããã¯ããå¿ èŠããããŸãã DBMS å ã®ã¢ã¯ã·ã§ã³ããã£ã³ã»ã«ãããŸãã ã¯ã©ã€ã¢ã³ãã¯ãšã©ãŒãåãåããŸãã
次ã®ææŠã¯å®ããã§ãã ãªã¯ãšã¹ããåãããŒãã«å床ãããããŠãšã©ãŒãè¿ãããããéãè¯ããã°ãªã¯ãšã¹ããå®è¡ããããã®ã©ã¡ããã§ãã ãããéèŠãªããšã¯ãå°ãªããšãäžåºŠã¯ç§ãã¡ã®ã€ã³ãã©ããã§ã«ç¡é§ã«æ©èœããŠãããšããããšã§ãã è² è·ã¯ãããŸããããå©çã¯ãããŸããã§ããã
ããŠããªã¯ãšã¹ããéšåçã«æ£åžžã«å®äºã§ããå Žåã®ãªãã·ã§ã³ããèªåèªèº«ã«ç·åŒµã㊠(!) èãæãããšæ³åããŠã¿ãŸãããã ãããŠãäžå®ã®ééã眮ããŠãããäžåºŠæ®ããå®äºããããšããŸãïŒã©ãã§ããïŒåã決å®ããŸããïŒïŒã ããããå®ããã¯ãã®ãŸãŸã§ããã SMS ã®éä¿¡ãªã¯ãšã¹ããå床倱æããå¯èœæ§ã¯ 50/50 ã§ãã
åæããŸããã¯ã©ã€ã¢ã³ãåŽããèŠããšããã®ãµãŒãã¹ã¯ç§ãã¡ãæåŸ ããã»ã©ä¿¡é Œã§ãããã®ã§ã¯ãªãããã§ã...REST ã«ã€ããŠã¯ã©ãã§ãã?
REST 㯠HTTP ã®éæ³ãåã³äœ¿çšããŸãããä»åºŠã¯å¿çã³ãŒãã䜿çšãããŸãã SMS ã²ãŒããŠã§ã€ã§ãšã©ãŒ 503 ãçºçãããšãããã¯ãšã³ãã¯ãã®ãšã©ãŒããã©ã³ãµãŒã«ãããŒããã£ã¹ãããŸãã ãã©ã³ãµãŒã¯ãã®ãšã©ãŒãåä¿¡ããã¯ã©ã€ã¢ã³ããšã®æ¥ç¶ãåæããã«å¥ã®ããŒãã«ãªã¯ãšã¹ããéä¿¡ãããã®ããŒãããªã¯ãšã¹ããæ£åžžã«åŠçããŸãã ãããã®ã ã¯ã©ã€ã¢ã³ãã¯æåŸ ã©ããã®çµæãåãåããã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã¢ã¯ã»ã¹æ§ãé«ãããšããé«ã称å·ãè£ä»ããŸãã ãŠãŒã¶ãŒã¯æºè¶³ããŠããŸãã
ãããŠãŸãããã ãã§ã¯ãããŸããã ãã©ã³ãµãŒã¯ãå¿çã³ãŒã 503 ãåä¿¡ããã ãã§ã¯ãããŸãããæšæºã«åŸã£ãŠãå¿çãããšãã¯ããã®ã³ãŒãã«ãRetry-AfterãããããŒãæå®ããããšããå§ãããŸãã ããããŒã¯ãæå®ãããæéã®éããã®ã«ãŒãäžã®ãã®ããŒãã劚害ãã䟡å€ããªãããšããã©ã³ãµãŒã«å¯ŸããŠæ確ã«ããŸãã ãããŠãSMS ãéä¿¡ããããã®æ¬¡ã®ãªã¯ãšã¹ãã¯ãSMS ã²ãŒããŠã§ã€ã«åé¡ããªãããŒãã«çŽæ¥éä¿¡ãããŸãã
ã芧ã®ãšãããJSON-RPC ã®ä¿¡é Œæ§ã¯é倧è©äŸ¡ãããŠããŸãã 確ãã«ãããŒã¿ããŒã¹å ã®äžè²«æ§ãæŽçããã®ã¯ç°¡åã§ãã ãã ãããã®å Žåãç ç²ã«ãªãã®ã¯ã·ã¹ãã å šäœãšããŠã®ä¿¡é Œæ§ã§ãã
çµè«ã¯ååãšã»ãŒåãã§ãã ã€ã³ãã©ã¹ãã©ã¯ãã£ãã·ã³ãã«ãªå ŽåãJSON-RPC ã®æçœãã¯ééããªããã©ã¹ã«ãªããŸãã ãããžã§ã¯ãã«é«è² è·ã®é«å¯çšæ§ãå«ãŸããå ŽåãREST ã¯ããè€éã§ã¯ãããŸãããããæ£ç¢ºãªãœãªã¥ãŒã·ã§ã³ã®ããã«èŠããŸãã
REST ãžã®åå ¥ãããå€ãäœããªããŸã
äžèšã®åæã¯ãRPC ã«é¢ãã確ç«ãããåºå®æŠå¿µãæŽããREST ãžã®åå ¥ã®æ·å± ã RPC ãããééããªãé«ãããšãæ確ã«ç€ºãããšæããŸãã ããã¯ãHTTP ãã©ã®ããã«æ©èœããããæ·±ãç解ããå¿ èŠãããããšãããã³ WEB ãããžã§ã¯ãã§äœ¿çšã§ããããŸãã¯äœ¿çšãã¹ãæ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£èŠçŽ ã«ã€ããŠååãªç¥èãæã£ãŠããå¿ èŠãããããã§ãã
ã§ã¯ããªãå€ãã®äººã REST ã®æ¹ãç°¡åã«ãªããšèããã®ã§ãããã? ç§ã®å人çãªæèŠã¯ããã®èŠããã®åçŽã㯠REST ãããã§ã¹ãèªäœããæ¥ãŠãããšããããšã§ãã ãããã®ã REST ã¯ãããã³ã«ã§ã¯ãªãæŠå¿µã§ã... REST ã«ã¯æšæºã¯ãªããããã€ãã®ã¬ã€ãã©ã€ã³ããããŸã... REST 㯠HTTP ã»ã©è€éã§ã¯ãããŸããã èŠããäžã®èªç±ãšã¢ããŒããŒããèªç±ãªã¢ãŒãã£ã¹ãããæ¹ãã€ããã
ãã¡ãããREST 㯠HTTP ã»ã©è€éã§ã¯ãããŸããã ããããHTTP èªäœã¯ãæ°å幎ã«ããã£ãŠãã®äŸ¡å€ã蚌æãããŠãããããèšèšããããããã³ã«ã§ãã HTTP èªäœãæ·±ãç解ããŠããªããã°ãREST ãå€æããããšã¯ã§ããŸããã
ãã ããRPC ã«ã€ããŠã¯å¯èœã§ãã ãã®ä»æ§ãååŸããã ãã§ååã§ãã ããã§å¿
èŠã§ãã
ããªãã®æéãç¡é§ã«ããªãããšãå¿ããé¡ã£ãŠããŸãã
åºæïŒ habr.com