èè
ïŒãªã¬ã°ã»ã²ã«ããæšç§ãSwiftStackããŒã ã¯ãè€æ°å°åã®OpenStack Object Storageã¯ã©ã¹ã¿ãŒïŒãããžã§ã¯ãã³ãŒãåã¯SwiftïŒãäœæããã¢ãããŒãã®èå³æ·±ã
æŠèŠãæçš¿ããŸããã ãã®ã¢ãããŒãã¯ãå°ççã«åæ£ããSwiftã¯ã©ã¹ã¿ãŒã¬ã€ã¢ãŠãã«é©ããŠããŸããã¬ããªã«ã®æ°ãæžããïŒããšãã°ã3 + 3ã§ã¯ãªã3 + 1ïŒãWebexãšã»ãŒåæã«äœæ¥ããŸããã ç§ãã¡ã®ã¢ãããŒããç°¡åã«èª¬æããå®è£
èšç»ãšSwiftã³ãŒãã®å€æŽæ¡ã«çŠç¹ãåœãŠãããšæããŸãã
OpenStack Swiftã®çŸç¶
ãŸããçŸåšã®Swiftã¢ã«ãŽãªãºã ã®ç°¡åãªæŠèŠããå§ããŠãå°ççã«é¢ããè€æ°ã®å°åããã¯ã©ã¹ã¿ãŒãäœæããããã«æ£ç¢ºã«å®è¡ããå¿
èŠãããããšã説æããŸãã
æ茪
Swiftã¯ã©ã¹ã¿ãŒã®æšæºãªã³ã°ïŒãªã³ã°ãŸãã¯ããã·ã¥ãªã³ã°ïŒã¯ãã¹ãã¬ãŒãžããã€ã¹ããŸãŒã³ã«åé¢ã§ããããŒã¿æ§é ã§ãã EssexãªãªãŒã¹ã«å«ãŸããswift-ring-builderã¹ã¯ãªããã¯ããªããžã§ã¯ãã®ã¬ããªã«ãåããŸãŒã³ã«èœã¡ãªãããã«ããŸãã
ãªã³ã°æ§é ã«ã¯ã次ã®ã³ã³ããŒãã³ããå«ãŸããŸãã
-
ããã€ã¹ãªã¹ã ïŒãªã³ã°ãèªèããŠãããã¹ãŠã®ã¹ãã¬ãŒãžããã€ã¹ïŒãã£ã¹ã¯ïŒãå«ãŸããŸãã ãã®ãªã¹ãã®åèŠçŽ ã¯ãããã€ã¹èå¥åããã®ã·ã³ãã«åããŸãŒã³èå¥åãã¹ãã¬ãŒãžããã€ã¹ãã€ã³ã¹ããŒã«ãããŠããããŒã¿ã¹ãã¬ãŒãžããŒãã®IPã¢ãã¬ã¹ããããã¯ãŒã¯ããŒããéã¿ãã¡ã¿ããŒã¿ãå«ãèŸæžã§ãã
-
ããŒãã£ã·ã§ã³åæ£ããŒãã« ïŒã¬ããªã«ã®æ°ãšåãè¡æ°ãæã€2次å
é
åã é
åã®åã»ã«ã«ã¯ãåã€ã³ããã¯ã¹ã«å¯Ÿå¿ããã»ã¯ã·ã§ã³ã®ã¬ããªã«ãé
眮ãããŠããããã€ã¹ã®ãªã¹ãïŒããã€ã¹ã®ãªã¹ãããïŒãå«ãŸããŠããŸã...
-
ããŒãã£ã·ã§ã³é åçªå·ïŒãªããžã§ã¯ãïŒ/ account / container / objecïŒãžã®ãã¹ããã®MD5ãã§ãã¯ãµã ã®ãããæ°ãMD5ããã·ã¥ã®ã¹ããŒã¹å
šäœãããŒãã£ã·ã§ã³ã«åå²ããããšã決å®ããŸãã
ãã©ã«ãµã ããŒãžã§ã³ã§ã¯ããªã³ã°ãã¡ã€ã«åœ¢åŒãå€æŽãããŸããã ãããã®å€æŽã«ãããåŠçå¹çã倧å¹
ã«åäžãããªã³ã°ãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã ãåå®çŸ©ãããŸãã ç°ãªããŸãŒã³éã§ã¬ããªã«ãé
åžããå¿
èŠãããå³å¯ãªæ¡ä»¶ã¯ããŸãŒã³ãããŒããããã³ããã€ã¹ãã¬ã€ã€ãŒã«ç·šæããã¯ããã«æè»ãªã¢ã«ãŽãªãºã ã«çœ®ãæããããŸããã
ãªã³ã°ãã©ã³ãµãŒã¯ãã¬ããªã«ãã§ããã ãé ãã«é
眮ããããšããŸãã ã§ããã°ç°ãªããŸãŒã³ã§äœ¿çšããŠãã ããããã ãã1ã€ã®ãŸãŒã³ãã䜿çšã§ããªãå Žåã¯ãç°ãªãããŒãã§äœ¿çšããŠãã ããã ãŸãã䜿çšå¯èœãªããŒãã1ã€ã ãã®å Žåã¯ãããŒãäžã®ããŸããŸãªããã€ã¹ã«å¯ŸããŠäœ¿çšã§ããŸãã ãæ倧åæ£ãã®åçã§åäœãããã®ã¢ã«ãŽãªãºã ã¯ãå°ççã«åæ£ããã¯ã©ã¹ã¿ãŒããµããŒãããå¯èœæ§ããããŸãã ããã¯ãå°åã¬ãã«ã®å³ãäžéšã«è¿œå ããããšã§å®çŸã§ããŸãã ãªãŒãžã§ã³ã¯ãã©ãã¯ãŸãã¯ããŒã¿ã»ã³ã¿ãŒå
šäœã®ããããã§ããã1ã€ã®å Žæãæã€ãŸãŒã³ã®ã°ã«ãŒãã§ãã
ç§ãã¡ã®ææ¡ã§ã¯ãå°åã¯devsããã€ã¹èŸæžã®åããã£ãŒã«ãïŒå°åïŒã§å®çŸ©ãããŠããŸãã
ãããã·ãµãŒããŒ
ãããã·ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ãã«ãããªãã¯Swift APIãæäŸããPUTèŠæ±ã§ã®æžã蟌ã¿ãGETèŠæ±ã§ã®èªã¿åããªã©ããªããžã§ã¯ããã³ã³ãããŒãããã³ã¢ã«ãŠã³ãã§åºæ¬çãªæäœãå®è¡ããŸãã
PUTèŠæ±ãåŠçããå Žåããããã·ãµãŒããŒã¯æ¬¡ã®ã¢ã«ãŽãªãºã ã«åŸããŸãã
1.ãªããžã§ã¯ããžã®ãã¹ã®MD5ãã§ãã¯ãµã ãã圢åŒ/ã¢ã«ãŠã³ã[/ã³ã³ãã[/ãªããžã§ã¯ã]]ã§èšç®ããŸãã
2. MD5ãã§ãã¯ãµã ã®æåã®NããããšããŠããŒãã£ã·ã§ã³çªå·ãèšç®ããŸãã
3.èšç®ãããããŒãã£ã·ã§ã³ã®ã¬ããªã«ãä¿åãããŠããããŒãã£ã·ã§ã³é
åžããŒãã«ããããã€ã¹ãéžæããŸãã
4.æé 3ã§èŠã€ãã£ããã¹ãŠã®ããã€ã¹ã®ããã€ã¹ã®ãªã¹ããããããŒã¿ã¹ãã¬ãŒãžããŒãã®IPã¢ãã¬ã¹ãšããŒããéžæããŸãã
5.察å¿ããããŒãäžã®ãã¹ãŠã®ããŒããžã®æ¥ç¶ã確ç«ããããšããŸããå°ãªããšãååã®ããŒãã«æ¥ç¶ã§ããªãå ŽåãPUTèŠæ±ãæåŠããŸãã
6.æ¥ç¶ã確ç«ããããã¹ãŠã®ããŒãã§ãªããžã§ã¯ãã®ããŠã³ããŒãïŒãŸãã¯ã¢ã«ãŠã³ããŸãã¯ã³ã³ããã®äœæïŒãè©Šã¿ãŸãã å°ãªããšãååã®ããŠã³ããŒãããã£ã³ã»ã«ãããå ŽåãPUTãªã¯ãšã¹ãã¯æåŠãããŸãã
7.ããŒã¿ãN / 2 + 1ããŒãïŒNã¯ã¹ãããïŒ4ã§èŠã€ãã£ãããŒãã®æ°ïŒã«ã¢ããããŒãããããšãPUTãªã¯ãšã¹ããæåããããšã®ç¢ºèªãã¯ã©ã€ã¢ã³ãã«éä¿¡ããŸãã
GETèŠæ±ãåŠçããå Žåããããã·ãµãŒããŒã¯äžè¬ã«æ¬¡ã®ã¢ã«ãŽãªãºã ãå®è¡ããŸãã
1. PUTèŠæ±åŠçã¢ã«ãŽãªãºã ã®ã¹ããã1ã4ãç¹°ãè¿ãããªããžã§ã¯ãã®ã¬ããªã«ãä¿åããããŒãã®ãªã¹ãã決å®ããŸãã
2.ã·ã£ããã«æ©èœã䜿çšããŠããŒãã®ãªã¹ããã·ã£ããã«ããçµæã®ãªã¹ãã®æåã«æ¥ç¶ããŸãã
3.æ¥ç¶ã確ç«ã§ããªãå Žåã¯ããªã¹ããã次ã®ããŒãã«é²ã¿ãŸãã
4.æ¥ç¶ã確ç«ããããšãèŠæ±ãžã®å¿çãšããŠã¯ã©ã€ã¢ã³ããžã®ããŒã¿éä¿¡ãéå§ãããŸãã
è€è£œ
Swiftã®ã¬ããªã±ãŒã·ã§ã³ã¯ãåã
ã®ãªããžã§ã¯ãã§ã¯ãªãããŒãã£ã·ã§ã³ã§æ©èœããŸãã ã¬ããªã±ãŒã¿ãŒã¯ãŒã¯ãããŒã¯ãã«ã¹ã¿ã ééã§å®æçã«éå§ãããŸãã ããã©ã«ãã®ééã¯30ç§ã§ãã
äžè¬ã«ãã¬ããªã±ãŒã¿ãŒã¯æ¬¡ã®ã¢ã«ãŽãªãºã ã«åŸããŸãã
1.ã¬ããªã±ãŒã¿ãŒã¿ã¹ã¯ãäœæããŸãã ã€ãŸããããŒãäžã®ãã¹ãŠã®ããã€ã¹ãã¹ãã£ã³ããèŠã€ãã£ããã¹ãŠã®ããã€ã¹ãã¹ãã£ã³ãããã¹ãŠã®ããŒãã£ã·ã§ã³ã®ãªã¹ããèŠã€ããŠãããåã»ã¯ã·ã§ã³ã®è€è£œèŸæžãäœæããŸãã
{
ããã¹ãïŒ<path_to_partition>ã
ãããŒããïŒ[replica_node1ãreplica_node2ã...]ã
'delete'ïŒ<true | false>ã
ãããŒãã£ã·ã§ã³ãïŒ}
-<path_to_partition>ã¯ãããŒãã£ã·ã§ã³ãžã®ãã¡ã€ã«ã·ã¹ãã å
ã®ãã¹ã§ãïŒ/ srv / node // objects /ïŒ
-[replica_node1ãreplica_node2ã...]ã¯ãããŒãã£ã·ã§ã³ã®ã¬ããªã«ãä¿åããããŒãã®ãªã¹ãã§ãã ãªã¹ãã¯ããªããžã§ã¯ãã®ãªã³ã°ããã€ã³ããŒããããŸãã
-ãã®ã»ã¯ã·ã§ã³ã®ã¬ããªã«ã®æ°ãã¯ã©ã¹ã¿ãŒå
ã®æ§æãããã¬ããªã«ã®æ°ãè¶
ããå Žåããdeleteãã¯trueã«èšå®ãããŸãã
-ã»ã¯ã·ã§ã³èå¥åçªå·ãè¡šããŸãã
2.è€è£œã¿ã¹ã¯ã«åŸã£ãŠåã»ã¯ã·ã§ã³ãåŠçããŸãã ããã¯ïŒ
-ã»ã¯ã·ã§ã³ã«åé€ã®ããŒã¯ãä»ããããŠããå Žåãã¬ããªã±ãŒã¿ãŒã¯ãžã§ã['path']ãã£ã¬ã¯ããªã®åãµããã£ã¬ã¯ããªããžã§ã['nodes']ãªã¹ãã®ãã¹ãŠã®ããŒãã«ãããããã¬ããªã«ãååšããåããŒãã«REPLICATEèŠæ±ãéä¿¡ãããžã§ã['path']ãã£ã¬ã¯ããªãåé€ããŸãã
-ã»ã¯ã·ã§ã³ã«åé€ã®ããŒã¯ãä»ããããŠããªãå Žåãã¬ããªã±ãŒã¿ãŒã¯ããžã§ã['path']ãã£ã¬ã¯ããªã®ãã¹ãŠã®ãµããã©ã«ããŒïŒã€ãŸããã»ã¯ã·ã§ã³å
ã®ã¢ã«ãŠã³ã/ã³ã³ãããŒããŒã¿ããŒã¹ããã³ãªããžã§ã¯ããã¡ã€ã«ïŒã®ã³ã³ãã³ãã®ãã§ãã¯ãµã ãèšç®ããŸãã ã¬ããªã±ãŒã¿ãŒã¯ããžã§ã['partition']ã»ã¯ã·ã§ã³ã®ãã¹ãŠã®ã¬ããªã«ã«å¯ŸããŠREPLICATEèŠæ±ãçºè¡ããå¿çãšããŠãã§ãã¯ãµã 察å¿ã»ã¯ã·ã§ã³ã®ãªã¢ãŒããµããã©ã«ããŒããåãåããŸãã 次ã«ããã§ãã¯ãµã ãããã³ã°ãæ¯èŒããrsyncã䜿çšããŠãå€æŽããããµããã©ã«ããŒããªã¢ãŒãããŒãã«éä¿¡ããŸãã ã¬ããªã±ãŒã·ã§ã³ã®æåã¯ãREPLICATEèŠæ±ãåéä¿¡ããããšã§ç¢ºèªãããŸãã
3.ãããããã¡ã€ã³ãã¬ããªã«ãžã®ã¢ã¯ã»ã¹ããªãå Žåãã¬ããªã±ãŒã¿ãŒã¯ãªã³ã°ã¯ã©ã¹ã®get_more_nodeã¡ãœããã䜿çšããŸãã ãã®æ¹æ³ã¯ãç¹å®ã®æ±ºå®è«çã¢ã«ãŽãªãºã ã䜿çšããŠããã®ã»ã¯ã·ã§ã³ã®äžæã³ããŒãä¿åã§ãããã¹ãã¢ãããŒãã®ã»ããã決å®ããŸã...ã¢ã«ãŽãªãºã ã¯ãæ
éãããã¡ã€ã³ãããã€ã¹ã®ãŸãŒã³ã決å®ããå¥ã®ãŸãŒã³ãããã¹ãã¢ãããã€ã¹ãéžæããŠäžæãä¿åããŸãã»ã¯ã·ã§ã³ã®ã¬ããªã«ã å¥ã®ããã€ã¹ãå©çšã§ããªãå Žåã3çªç®ã®ãŸãŒã³ããããŒããéžæããããã¹ãŠã®ãŸãŒã³ãšãã¹ãŠã®ããŒããåæããããŸã§ãµã€ã¯ã«ãç¶ããŸãã
OpenStack Swiftã«ææ¡ãããå€æŽ
ãé åãã¬ãã«ããªã³ã°ã«è¿œå ãã
ããã€ã¹ã®ãªã¹ãã«å°åãã£ãŒã«ããè¿œå ããããšããå§ãããŸãã ãã®ãã©ã¡ãŒã¿ãŒã¯ã以äžã§èª¬æããããã«ãªã³ã°ã®ãã©ã³ã¹ãåããšãã«RingBuilderã¯ã©ã¹ã䜿çšããå¿
èŠããããŸãã regionãã©ã¡ãŒã¿ãŒã¯ããŸãŒã³ãã°ã«ãŒãåããããšãå¯èœã«ããã·ã¹ãã ã®è¿œå ã¬ãã«ã§ãã ãããã£ãŠã1ã€ã®ãªãŒãžã§ã³ãæ§æãããŸãŒã³ã«å±ãããã¹ãŠã®ããã€ã¹ã¯ããã®ãªãŒãžã§ã³ã«å±ããŠããå¿
èŠããããŸãã
ããã«ããªãŒãžã§ã³ãè¿œå æ§é ãšããŠãªã³ã°ã«è¿œå ããããšãã§ããŸããããŒãšããŠãªãŒãžã§ã³ããå€ãšããŠãŸãŒã³ã®ãªã¹ããå«ããã£ã¯ã·ã§ããªã¯æ¬¡ã®ããã«ãªããŸãã
ããŒïŒå°åïŒ | å€ïŒãŸãŒã³ã®ãªã¹ãïŒ |
ãªãŒã¹ãã£ã³ | 1,2,3 |
ãµã³ã㌠| 4,5,6 |
ãŸãŒã³ã¯1ã€ã®ãªãŒãžã§ã³ã«ã®ã¿å±ããããšãã§ããããšã«æ³šæããããšãéèŠã§ãã
ãã®å ŽåããªãŒãžã§ã³ã¯ä»¥åã®äœ¿çšãšåæ§ã«äœ¿çšãããŸããããªã³ã°ã¯ã©ã¹ã«ã¯ããªãŒãžã§ãã«ãŸãŒã³å²ãåœãŠã®ãã£ã¯ã·ã§ããªãåŠçããããã®è¿œå ã³ãŒããå«ããç¹å®ã®ããã€ã¹ãå±ãããªãŒãžã§ã³ã決å®ããå¿
èŠããããŸãã
ããã©ã«ããªãŒãžã§ã³ããŸãŒã³ã«å²ãåœãŠããšããã¹ãŠã®ãŸãŒã³ãåäžã®ããã©ã«ããªãŒãžã§ã³ã«å²ãåœãŠãããæšæºã®Swiftã®åäœãåçãããŸãã
Swiftãããžã§ã¯ãã®ææ°ãªãªãŒã¹ã§ã¯ãå°åã¬ãã«ã®ãµããŒããæ¢ã«ãªã³ã°ã«è¿œå ãããŠããŸããããã¯ãSwiftã«åºã¥ãå°ççã«åæ£ãããªããžã§ã¯ãã¹ãã¬ãŒãžã®å®å
šãªå®è£
ã«åããéèŠãªã¹ããããæå³ããŸãã
RingBuilderãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã ã®åŸ®èª¿æŽ
RingBuilderãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã ã¯ãããã€ã¹ãªã¹ãã®é åèšå®ãèªèããå¿
èŠããããŸãã ã¢ã«ãŽãªãºã ã¯ãããŸããŸãªæ¹æ³ã§ã¬ããªã«ãé
åžããããã«æ§æã§ããŸãã 以äžã«ããããã¿ã€ãã®éçºçšã«éžæããåæ£ã¢ã«ãŽãªãºã ã®å¯èœãªå®è£
ã®1ã€ã瀺ããŸãã
代æ¿é
åžã¢ã«ãŽãªãºã
ããŒãã£ã·ã§ã³ã¬ããªã«ã¯ã次ã®æ¡ä»¶äžã§ããã€ã¹ã«é
眮ããå¿
èŠããããŸãã
-ã¬ããªã«ã¯ãå¯èœãªéãæé«ã¬ãã«ã®ç°ãªãã°ã«ãŒãã«å±ããããã€ã¹ã«é
眮ããå¿
èŠããããŸãïŒãªã³ã°ãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã ã®æšæºçãªåäœïŒã
-Nåã®ã¬ããªã«ãšMåã®é åïŒãŸãŒã³ã°ã«ãŒãïŒã®å Žåãåé åã«åé¡ãããã¬ããªã«ã®æ°ã¯ãN / Mé€ç®ã®åã®æŽæ°ã«çãããªããŸãã æ®ãã®ã¬ããªã«ã¯ã1ã€ã®ãªãŒãžã§ã³ïŒãã®ã»ã¯ã·ã§ã³ã®ã¡ã€ã³ãªãŒãžã§ã³ïŒã«è¿œå ãããŸãã
-ãªãŒãžã§ã³ã«ã¯ããªãŒãžã§ã³å
ã®ãŸãŒã³ã®æ°ããå€ãã®ã¬ããªã«ãå«ããããšã¯ã§ããŸããã
ããšãã°ããã®ã¢ã«ãŽãªãºã ã䜿çšããŠN = 3ããã³M = 2ã®å Žåãåé åã«1ã€ã®ã¬ããªã«ãå«ãŸãããªã³ã°ïŒ3/2ã®æŽæ°éšåã¯1ïŒã§ãæ®ãã®1ã€ã®ã¬ããªã«ã¯2ã€ã®é åã®ããããã«å«ãŸããŸããã©ã³ãã ã«éžæã 次ã®å³ã¯ãäžèšã®äŸã®å°åããšã®ã¬ããªã«ã®ååžã瀺ããŠããŸãã

ãããã·ãµãŒããŒãããªã¢ãŒããªãŒãžã§ã³ã®ã¹ãã¬ãŒãžããŒãã«çŽæ¥PUTèŠæ±ãå®è¡ããããšã¯ããã»ã©ç°¡åã§ã¯ãããŸãããã»ãšãã©ã®å Žåãå€éšããã¯ã©ã¹ã¿ãŒã®å
éšãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ã§ããªãå ŽåããããŸãã ãããã£ãŠãåæå®è£
ã§ã¯ãPUTèŠæ±ã®å®è¡æã«ããŒã«ã«ã¬ããªã«ã®ã¿ãèšé²ãããã¬ããªã±ãŒã·ã§ã³ããã»ã¹ã«ãã£ãŠãªã¢ãŒããªãŒãžã§ã³ã¬ããªã«ãäœæããããšæ³å®ããŠããŸãã

ããã©ã«ãã§ã¯ãã¬ããªã«ã®æ°ã¯3ã§ããªãŒãžã§ã³ã¯1ã§ãã ãã®ã±ãŒã¹ã§ã¯ãæšæºã®Swiftæ§æãšãªã³ã°ãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã ãåçŸããŠããŸãã
ããäžåºŠGet_more_nodesã«ã€ããŠ
Ringã¯ã©ã¹ã®get_more_nodesã¡ãœãããå€æŽããŠãäžæã¬ããªã«ã®ãã¹ãã¢ããŸãŒã³ãéžæãããšãã«é åãèªèããããææ¡ããŸãã ã¢ã«ãŽãªãºã ã¯ã倱ãããã¬ããªã«ãå«ãé åã®ãŸãŒã³ãæåã«éžæãããããã«ããã¹ãã¢ãã®åè£ããœãŒãããå¿
èŠããããŸãã ããŒã«ã«ãªãŒãžã§ã³ããŸãŒã³ã«ã¢ã¯ã»ã¹ã§ããªãå ŽåïŒããšãã°ããªãŒãžã§ã³éã®ãããã¯ãŒã¯æ¥ç¶ãéããããŠããå ŽåïŒãã¢ã«ãŽãªãºã ã¯å€éšãªãŒãžã§ã³ã®1ã€ãããŸãŒã³ã«å±ããããŒããè¿ããŸãã 次ã®2ã€ã®ã¹ããŒã ã¯ã2ã€ã®æ¥µç«¯ãªå Žåã®ã¢ã«ãŽãªãºã ã説æããŠããŸãã

å°åãããã·ãµãŒããŒ
Swiftãããã·ãµãŒããŒãè€æ°ã®å°ççã«åæ£ããå°åã®ç°å¢ã§æ£åžžã«åäœããã«ã¯ãæå±ããå°åã«é¢ããæ
å ±ãå¿
èŠã§ãã ãããã·ãµãŒããŒã¯ãããŒã¿ã¹ãã¬ãŒãžãµãŒããŒã«æ¥ç¶ãããšãã®ãããã¯ãŒã¯é
延ã®åæã«åºã¥ããŠããŸãã¯æ§æãã¡ã€ã«ããçŽæ¥ãã®æ
å ±ãååŸã§ããŸãã æåã®ã¢ãããŒãã¯ãçŸåšã®ããŒãžã§ã³ã®SwiftïŒ1.8.0ïŒã§å®è£
ãããŠããŸãã ãããã·ãµãŒããŒã¯ãåããŒãã«æ¥ç¶ããåŸã®å¿çæéã«åºã¥ããŠããŒã¿ã¹ãã¬ãŒãžããŒãã䞊ã¹æ¿ããèªã¿åããæãéãããŒããéžæããŸãã ãã®ã¢ãããŒãã¯èªã¿åãèŠæ±ã«å¯ŸããŠã¯ããŸãæ©èœããŸãããæžã蟌ã¿æã«ã¯ããã¹ãŠã®ãã¡ã€ã³ãã¹ãã¬ãŒãžãµãŒããŒãšãå Žåã«ãã£ãŠã¯è€æ°ã®ãã¹ãã¢ããµãŒããŒãæäœããå¿
èŠããããŸãã ãã®å ŽåãããŒã«ã«é åã決å®ããããã®æ§ææ¹æ³ã®æ¹ãé©ããŠããŸãã
ããã¯ããããã·ãµãŒããŒæ§æãã¡ã€ã«ïŒproxy-server.confïŒã®[DEFAULT]ã»ã¯ã·ã§ã³ã«é åãã©ã¡ãŒã¿ãŒãè¿œå ããããšã«ãããéåžžã«ç°¡åã«å®è£
ãããŸãã次ã«äŸã瀺ããŸãã
[ããã©ã«ã]
...
å°å=ãµã³ããŒ
ãã®ãã©ã¡ãŒã¿ãŒã¯ããããã·ãµãŒããŒããªã³ã°èªã¿åãæäœã«äœ¿çšããŸããGETèŠæ±ãåŠçããããŒããéžæããå Žåã«ã䜿çšãããŸãã ç®æšã¯ããããã·ãµãŒããŒãããŒã«ã«ãŸãŒã³ïŒã€ãŸãããããã·ãµãŒããŒãšåããªãŒãžã§ã³ã«å±ãããŸãŒã³ïŒããã¹ãã¬ãŒãžããŒãã«æ¥ç¶ããããšã奜ãããšã§ãã
SwiftStackã®èšäºã§ã¯ããã®æ©èœã¯ãããã·ã¢ãã£ããã£ãšåŒã°ããŠããŸãã
ããŒã«ã«ã¬ããªã«ãå©çšå¯èœãªå Žåããããã·ãµãŒããŒã¯å€éšãªãŒãžã§ã³ã«å±ãããã¹ãããããŒã¿ãèªã¿åããªãã§ãã ããã ããã«ããããªãŒãžã§ã³éã®ãããã¯ãŒã¯æ¥ç¶ã®è² è·ã軜æžã§ãããªãŒãžã§ã³éã«ãããã¯ãŒã¯æ¥ç¶ããªãå Žåã«ãæ©èœããŸãïŒäžæçãªé害ãŸãã¯ã¯ã©ã¹ã¿ãŒããããžã®æ©èœã®çµæãšããŠïŒã

次ã«ãGETãªã¯ãšã¹ãåŠçã¢ã«ãŽãªãºã ã®ã¹ãããïŒ2ã®ããŒããªã¹ãã·ã£ããã«æäœïŒäžèšãåç
§ïŒããããŒã«ã«ãããã·ãµãŒããŒé åã«å±ãããã©ã€ãããªã¹ãã®æåã«æ¥ãããã«ããŒããé
眮ããæé ã«çœ®ãæããŸãã ãã®ãœãŒãåŸãããŒã«ã«ãªãŒãžã§ãã«ããŒããšå€éšãªãŒãžã§ãã«ããŒãã®ãªã¹ããåå¥ã«æ··åããããã®åŸãå€éšãªãŒãžã§ãã«ããŒãã®ãªã¹ããããŒã«ã«ãªãŒãžã§ãã«ããŒãã®ãªã¹ãã«è¿œå ãããŸãã å¥ã®æ¹æ³ãšããŠããã®æ®µéã§ã¯ãæå°å¿çæéã§ããŒã¿ã¹ãã¬ãŒãžããŒããéžæããããã®äžèšã®æ¹æ³ã䜿çšã§ããŸãã
Swiftã§ã®ã¬ããªã±ãŒã·ã§ã³
ãããã¿ã€ãã®å°ççã«åæ£ããããŒã¿ã»ã³ã¿ãŒéã®ã¬ããªã±ãŒã·ã§ã³ã¯ã1ã€ã®ãªãŒãžã§ã³ãæã€ã¯ã©ã¹ã¿ãŒã®å Žåãšåæ§ã«ããªãŒãžã§ã³å
šäœã§æ©èœããŸãã ãã ããè€è£œããã»ã¹ã®äžç°ãšããŠãäœéWANæ¥ç¶ãä»ããŠã¯ã©ã¹ã¿ãŒéã§å€§éã®REPLICATEãéä¿¡ã§ããããã§ãã ããã«ãããã¯ã©ã¹ã¿ãŒå
šäœã®ããã©ãŒãã³ã¹ã倧å¹
ã«äœäžããå¯èœæ§ããããŸãã
ãã®åé¡ã®ç°¡åãªåé¿çãšããŠãNåç®ã®è€è£œããšã«ããŒãã£ã·ã§ã³ããªã¢ãŒãé åã®ããã€ã¹ã«è»¢éãããããã«ãã«ãŠã³ã¿ãŒãã¬ããªã±ãŒã¿ãŒã«è¿œå ããŸãã ããè€éãªãœãªã¥ãŒã·ã§ã³ã«ã¯ãè¿é£å°åã«å°çšã®ã¬ããªã±ãŒã¿ãŒã²ãŒããŠã§ã€ãå«ãŸããå Žåããããããã¯ç 究ãããžã§ã¯ãã®äžç°ãšããŠéçºãããŸãã
è±èªã®ãªãªãžãã«èšäº