Linuxのブロックデバイスレベルで実現するrsyncより高速な差分バックアップについて - ゆううきブログã®ç¶ãã¨ãã¦ãFacebook ã® memcached éç¨ã«é¢ããè«æãèªãã ã
ã¿ã¤ãã«ãªã©ã¯ä»¥ä¸ã®éãã
NSDI ã¯ãããã¯ã¼ã¯ã·ã¹ãã ã«é¢ãããããã¬ãã«ã®ã«ã³ãã¡ã¬ã³ã¹ã
- Scaling Memcache at Facebook
- Rajesh Nishtala, Hans Fugal, Steven Grimm, Marc Kwiatkowski, Herman Lee, Harry C. Li, Ryan McElroy, Mike Paleczny, Daniel Peek, Paul Saab, David Stafford, Tony Tung, Venkateshwaran Venkataramani
- NSDI'13 In Proceedings of the 10th USENIX conference on Networked Systems Design and Implementation
- https://www.usenix.org/conference/nsdi13/technical-sessions/presentation/nishtala
Facebook ã®ãã£ãã·ã¥ã·ã¹ãã ãã©ã®ããã«ã¹ã±ã¼ã«ãã¦ããããåã¹ã±ã¼ã«è¦æ¨¡ã®åæã¯ä½ãã«ã¤ãã¦æ¸ãããè«æã ã£ãã å 容ã¯ããªãçãã ãããã§ãåºæ¬çãªãã¼ã¿ãã¼ã¹ã¯ã¨ãªãã£ãã·ã¥æ¦ç¥ããããã«ããªã¼ã¸ã§ã³åæ£ã®è©±ã¾ã§å¤å²ã«æ¸¡ãã memcached ã«ä¾åããªã話ãå¤ãã®ã§ãmemcached ã¨ããããã¯ãè¶ å¤§è¦æ¨¡ãã£ãã·ã¥ã·ã¹ãã ã®éç¨ä¾ã¨ãã¦èªãã®ãããããã
è«ææ¦è¦
memcached ã¯ããç¥ãããã·ã³ãã«ãªã¤ã³ã¡ã¢ãªãã£ãã·ã¥ã·ã¹ãã ã§ããã è«æã§ã¯ãmemcached ãåºæ¬åä½ã¨ãã¦ãä¸çæ大ã®ã½ã¼ã·ã£ã«ã»ãããã¯ã¼ã¯ãæ¯ããåæ£KVSãã©ã®ããã«æ§ç¯ããã¹ã±ã¼ã«ããããã«ã¤ãã¦æ¸ããã¦ããã Facebook ã®ãã£ãã·ã¥ã·ã¹ãã ã¯ãç§éæ°ååãªã¯ã¨ã¹ããæãã¦ãã¦ã10å人ãè¶ ããã¦ã¼ã¶ã«ãªãããªä½é¨ãå±ããããã«ãæ°å åã®ã¢ã¤ãã ããã£ãã·ã¥ã«ä¿æãã¦ããã
ã·ã¹ãã ã¯ã以ä¸ã®4段éã§ã¹ã±ã¼ã«ãã¦ããã
- æ°å°ã®memcachedãµã¼ã
- å¤æ°ã®memcachedãµã¼ããå«ãã·ã³ã°ã«memcachedã¯ã©ã¹ã¿
- ãã«ãmemcachedã¯ã©ã¹ã¿
- ãã«ããªã¼ã¸ã§ã³
1. æ°å°ã®memcachedãµã¼ã
- demand-filled look-aside cache æ¹å¼
- 並å memcache set åé¡ (stale sets)
- Thundering Herd åé¡
- memcache ãããã³ã«ã®æ¡å¼µ "leases"
2. ã·ã³ã°ã«ã¯ã©ã¹ã¿
- consistent-hashing
- TCP incast congestion åé¡
- Layer 7ã§ã¹ã©ã¤ãã£ã³ã°ã¦ã£ã³ãã¦ã§ããã¼å¶å¾¡
- get ãªã¯ã¨ã¹ã㯠UDP ã«ãã¦ãã±ããæ¸ãã
- ç¬èªã«ã¼ã¿ãæãã§ã³ãã¯ã·ã§ã³æ°¸ç¶å
3. ãã«ãã¯ã©ã¹ã¿
- ããã³ãã¨ã³ãã¯ã©ã¹ã¿ + ã¹ãã¬ã¼ã¸ã¯ã©ã¹ã¿
- ä¸è²«æ§ã®ä¿æ
- å ¨ã¯ã©ã¹ã¿ã®ãã£ãã·ã¥ç¡å¹åå¦ç
- SQLæã«ç¡å¹åãã¼ãåãè¾¼ãã§ããã¦ãMySQLã®ã³ããããã°ãtailãã¦åãè¾¼ã¿ãã¼ãç¡å¹åãããã¼ã¢ã³
4. ãã«ããªã¼ã¸ã§ã³
- (ããã³ãã¨ã³ãã¯ã©ã¹ã¿ + ã¹ãã¬ã¼ã¸ã¯ã©ã¹ã¿) x ãªã¼ã¸ã§ã³
- ãªã¼ã¸ã§ã³éã¬ããªé 延ãèæ ®ãã¦ããã£ãã·ã¥ãã¹æã«ãã¹ã¿DBãreadãããã¹ã¬ã¼ãDBãreadããããã¼ã«ã¼ãã¤ãã
Conclusion
- ãã£ãã·ã¥ã¨æ°¸ç¶ã¹ãã¬ã¼ã¸ãåé¢ãã¦ãç¬ç«ãã¦ã¹ã±ã¼ã«ããã
- ã¢ãã¿ãªã³ã°ããããã®ã³ã°ããªãã¬ã¼ã·ã§ã³å¹çãæ¹åããæ©è½ã¯ããã©ã¼ãã³ã¹ã¨åããããéè¦
- ãã¸ãã¯ã¯ stateless ãªã¯ã©ã¤ã¢ã³ãã«ç½®ãã»ããæ··ä¹±ããªã
- ã·ã¹ãã ã¯æ°æ©è½ã®æ®µéçãªãã¼ã«ã¢ã¦ãã¨ãã¼ã«ããã¯ããµãã¼ãããªããã°ãªããªã
- Simplicity is vital.
ã¹ã©ã¤ã
ããå ·ä½çãªå 容ã¯ã¹ã©ã¤ãåç §ã ç¸å½ã¯ããã£ã¦ããã®ã§ã詳細ãªå 容ã¯è«æåç §ã ã¯ããã£ãå 容ã«ã¤ãã¦ã¯ãå¾æ¥ããã°ã«ããããã
é¢é£è¨äº
- Facebook
]
- Facebookが大規模スケーラビリティへの挑戦で学んだこと(前編)~800億枚の写真データとPHPのスケーラビリティ問題 - Publickey
- ãã®è¨äºã«ããã¨2009å¹´ã®æç¹ã§ãµã¼ãå°æ°ã¯3ä¸å°ããã
- Facebook、memcachedに300TB以上のライブデータを置く大規模運用の内側 - Publickey
- https://www.facebook.com/publications
- Facebook ãåºãã¦ããè«æãå«ãåºçç©ã®ãªã¹ã
ææ³
TCP incaståé¡ãåé¿ããããã«ãTCPã®ã¹ã©ã¤ãã£ã³ã°ã¦ã£ã³ãã¦çãªãã¸ãã¯ãã¢ããªã¬ã¤ã¤ã§å®è£ ãã¦ããããã¦ãOSã¬ã¤ã¤ã§ã®è§£æ±ºæ¹æ³ã大è¦æ¨¡éç¨ã«ãã¦ã¯ãã¦ã¹ã±ã¼ã«ããã¦ããã®ãå°è±¡çã ã£ãã ä»äºã§ãã®ãã¸ãã¯ãå®è£ ãããªã½ã¼ã¹ãå²ããªãããããã¯ãããããããªã¹ã±ã¼ã«å¿ è¦ããªãã¨ãã¯ããã«ãã¦ãã話ã¨ãã¦ã¯çµæ§ãããããã£ãã ãã¨ãmemcached èªä½ã«ã¯æ©è½ã追å ããã«ãã¯ã©ã¤ã¢ã³ããµã¤ãã«ãã¸ãã¯ãå ¥ãã¦ããã®ãæ°ã«ãªãã¨ããã ã£ãã Facebook ã¯ã¹ãã¬ã¼ã¸ã«HBaseã使ã£ã¦ãã話 (Facebook)ããã£ã¦ããã£ã¡ã¯ããã«ã¦ã§ã¢ã«ãã¸ãã¯ããããã¦ããããã®ã§ããã®ã¸ãã®æ¹éã®éããæ°ã«ãªãã
é¢é£è¨äºã«ãè¼ãã¦ããã©ã https://www.facebook.com/publications 㧠Facebook ã®åºãã¦ãè«æã¨ãèªããã®ã§ãããããåå¼·ã«ãªãããã