ÏÖÔÚ¼¸ºõÈκÎÒ»¸öÍøÕ¾¡¢Web AppÒÔ¼°Òƶ¯APPµÈÓ¦Óö¼ÐèÒªÓÐͼƬչʾµÄ¹¦ÄÜ£¬¶ÔÓÚͼƬ¹¦ÄÜ´ÓÏÂÖÁÉ϶¼ÊǺÜÖØÒªµÄ¡£±ØÐëÒª¾ßÓÐǰհÐԵĹ滮ºÃͼƬ·þÎñÆ÷£¬Í¼Æ¬µÄÉÏ´«ºÍÏÂÔØËÙ¶ÈÖÁ¹ØÖØÒª£¬µ±È»Õâ²¢²»ÊÇ˵һÉÏÀ´¾Í¸ãºÜNBµÄ¼Ü¹¹£¬ÖÁÉپ߱¸Ò»¶¨À©Õ¹ÐÔºÍÎȶ¨ÐÔ¡£ËäÈ»¸÷Öּܹ¹Éè¼Æ¶¼ÓУ¬ÔÚÕâÀïÎÒÖ»ÊÇ̸̸ÎÒµÄһЩ¸öÈËÏë·¨¡£
¶ÔÓÚͼƬ·þÎñÆ÷À´ËµIOÎÞÒÉÊÇÏûºÄ×ÊÔ´×îΪÑÏÖØµÄ£¬¶ÔÓÚwebÓ¦ÓÃÀ´ËµÐèÒª½«Í¼Æ¬·þÎñÆ÷×öÒ»¶¨µÄ·ÖÀ룬·ñÔòºÜ¿ÉÄÜÒòΪͼƬ·þÎñÆ÷µÄIO¸ºÔص¼ÖÂÓ¦ÓñÀÀ£¡£Òò´ËÓÈÆä¶ÔÓÚ´óÐÍÍøÕ¾ºÍÓ¦ÓÃÀ´Ëµ£¬·Ç³£ÓбØÒª½«Í¼Æ¬·þÎñÆ÷ºÍÓ¦Ó÷þÎñÆ÷·ÖÀ룬¹¹½¨¶ÀÁ¢µÄͼƬ·þÎñÆ÷¼¯Èº£¬¹¹½¨¶ÀÁ¢µÄͼƬ·þÎñÆ÷ÆäÖ÷ÒªÓÅÊÆ£º
1£©·Öµ£Web·þÎñÆ÷µÄI/O¸ºÔØ-½«ºÄ·Ñ×ÊÔ´µÄͼƬ·þÎñ·ÖÀë³öÀ´£¬Ìá¸ß·þÎñÆ÷µÄÐÔÄܺÍÎȶ¨ÐÔ¡£
2£©Äܹ»×¨ÃŶÔͼƬ·þÎñÆ÷½øÐÐÓÅ»¯-ΪͼƬ·þÎñÉèÖÃÓÐÕë¶ÔÐԵĻº´æ·½°¸£¬¼õÉÙ´ø¿íÍøÂç³É±¾£¬Ìá¸ß·ÃÎÊËÙ¶È¡£
3£©Ìá¸ßÍøÕ¾µÄ¿ÉÀ©Õ¹ÐÔ-ͨ¹ýÔö¼ÓͼƬ·þÎñÆ÷£¬Ìá¸ßͼƬ·þÎñÍÌÍÂÄÜÁ¦¡£
´Ó´«Í³»¥ÁªÍøµÄweb1.0£¬Àú¾web2.0ʱ´úÒÔ¼°·¢Õ¹µ½ÏÖÔÚµÄweb3.0£¬Ëæ×ÅͼƬ´æ´¢¹æÄ£µÄÔö¼Ó£¬Í¼Æ¬·þÎñÆ÷µÄ¼Ü¹¹Ò²ÔÚÖð½¥·¢Éú±ä»¯£¬ÒÔÏÂÖ÷ÒªÂÛÊöÈý¸ö½×¶ÎµÄͼƬ·þÎñÆ÷¼Ü¹¹Ñݽø¡£
³õʼ½×¶Î
ÔÚ½éÉܳõʼ½×¶ÎµÄÔçÆÚµÄСÐÍͼƬ·þÎñÆ÷¼Ü¹¹Ö®Ç°£¬Ê×ÏÈÈÃÎÒÃÇÁ˽âÒ»ÏÂNFS¼¼Êõ£¬NFSÊÇNetwork
File SystemµÄËõд£¬¼´ÍøÂçÎļþϵͳ¡£NFSÊÇÓÉSun¿ª·¢²¢·¢Õ¹ÆðÀ´µÄÒ»ÏîÓÃÓÚÔÚ²»Í¬»úÆ÷£¬²»Í¬²Ù×÷ϵͳ֮¼äͨ¹ýÍøÂ绥Ïà·ÖÏí¸÷×ÔµÄÎļþ¡£NFS
serverÒ²¿ÉÒÔ¿´×÷ÊÇÒ»¸öFILE SERVER,ÓÃÓÚÔÚUNIXÀàϵͳ֮¼ä¹²ÏíÎļþ£¬¿ÉÒÔÇáËɵĹÒÔØ(mount)µ½Ò»¸öĿ¼ÉÏ£¬²Ù×÷ÆðÀ´¾ÍÏñ±¾µØÎļþÒ»ÑùµÄ·½±ã¡£
Èç¹û²»ÏëÔÚÿ̨ͼƬ·þÎñÆ÷ͬ²½ËùÓÐͼƬ£¬ÄÇôNFSÊÇ×î¼òµ¥µÄÎļþ¹²Ïí·½Ê½¡£NFSÊǸö·Ö²¼Ê½µÄ¿Í»§»ú/·þÎñÆ÷Îļþϵͳ£¬NFSµÄʵÖÊÔÚÓÚÓû§¼ä¼ÆËã»úµÄ¹²Ïí£¬Óû§¿ÉÒÔÁª½áµ½¹²Ïí¼ÆËã»ú²¢Ïó·ÃÎʱ¾µØÓ²ÅÌÒ»Ñù·ÃÎʹ²Ïí¼ÆËã»úÉϵÄÎļþ¡£¾ßÌåʵÏÖ˼·ÊÇ£º
1)ËùÓÐǰ¶Ëweb·þÎñÆ÷¶¼Í¨¹ýnfs¹ÒÔØ3̨ͼƬ·þÎñÆ÷export³öÀ´µÄĿ¼£¬ÒÔ½ÓÊÕweb·þÎñÆ÷дÈëµÄͼƬ¡£È»ºó[ͼƬ1]·þÎñÆ÷¹ÒÔØÁíÍâÁ½Ì¨Í¼Æ¬·þÎñÆ÷µÄexportĿ¼µ½±¾µØ¸øapache¶ÔÍâÌṩ·ÃÎÊ¡£
2£© Óû§ÉÏ´«Í¼Æ¬
Óû§Í¨¹ýInternet·ÃÎÊÒ³ÃæÌá½»ÉÏ´«ÇëÇópostµ½web·þÎñÆ÷£¬web·þÎñÆ÷´¦ÀíÍêͼƬºóÓÉweb·þÎñÆ÷¿½±´µ½¶ÔÓ¦µÄmount±¾µØÄ¿Â¼¡£
3£©Óû§·ÃÎÊͼƬ
Óû§·ÃÎÊͼƬʱ£¬Í¨¹ý[ͼƬ1]Õą̂ͼƬ·þÎñÆ÷À´¶ÁÈ¡ÏàÓ¦mountĿ¼Àï±ßµÄͼƬ¡£
ÒÔÉϼܹ¹´æÔÚµÄÎÊÌ⣺
1£©ÐÔÄÜ£ºÏÖÓнṹ¹ý¶ÈÒÀÀµnfs,µ±Í¼Æ¬·þÎñÆ÷µÄnfs·þÎñÆ÷ÓÐÎÊÌâʱ£¬¿ÉÄÜÓ°Ï쵽ǰ¶Ëweb·þÎñÆ÷¡£NFSµÄÎÊÌâÖ÷ÒªÊÇËøµÄÎÊÌâ.
ºÜÈÝÒ×Ôì³ÉËÀËø, Ö»ÓÐÓ²¼þÖØÆô²ÅÄܽâ¾ö¡£ÓÈÆäµ±Í¼Æ¬´ïµ½Ò»¶¨µÄÁ¿¼¶ºó£¬nfs»áÓÐÑÏÖØµÄÐÔÄÜÎÊÌâ¡£
2£©¸ß¿ÉÓ㺶ÔÍâÌṩÏÂÔØµÄͼƬ·þÎñÆ÷Ö»ÓÐһ̨£¬ÈÝÒ׳öÏÖµ¥µã¹ÊÕÏ¡£
3£© À©Õ¹ÐÔ£ºÍ¼Æ¬·þÎñÆ÷Ö®¼äµÄÒÀÀµ¹ý¶à£¬¶øÇÒºáÏòÀ©Õ¹ÓàµØ²»¹»¡£
4£© ´æ´¢£ºweb·þÎñÆ÷ÉÏ´«Èȵ㲻¿É¿Ø£¬Ôì³ÉÏÖÓÐͼƬ·þÎñÆ÷¿Õ¼äÕ¼Óò»¾ùºâ¡£
5£© °²È«ÐÔ£ºnfs·½Ê½¶ÔÓÚÓµÓÐweb·þÎñÆ÷µÄÃÜÂëµÄÈËÀ´Ëµ£¬¿ÉÒÔËæÒâÐÞ¸ÄnfsÀï±ßµÄÄÚÈÝ£¬°²È«¼¶±ð²»¸ß¡£
µ±È»Í¼Æ¬·þÎñÆ÷µÄͼƬͬ²½¿ÉÒÔ²»²ÉÓÃNFS,Ò²¿ÉÒÔ²ÉÓÃftp»òrsync£¬²ÉÓÃftpÕâÑùµÄ»°Ã¿¸öͼƬ·þÎñÆ÷¾Í¶¼±£´æÒ»·ÝͼƬµÄ¸±±¾£¬Ò²Æðµ½Á˱¸·ÝµÄ×÷Óᣵ«ÊÇȱµãÊǽ«Í¼Æ¬ftpµ½·þÎñÆ÷±È½ÏºÄʱ£¬Èç¹ûʹÓÃÒì²½·½Ê½È¥Í¬²½Í¼Æ¬µÄ»°ÓÖ»áÓÐÑÓʱ£¬²»¹ýÒ»°ãµÄСͼƬÎļþÒ²»¹ºÃÁË¡£Ê¹ÓÃrsyncͬ²½£¬µ±Êý¾ÝÎļþ´ïµ½Ò»¶¨µÄÁ¿¼¶ºó£¬Ã¿´ÎrsyncɨÃè»áºÄʱºÜ¾ÃÒ²»á´øÀ´Ò»¶¨µÄÑÓʱÐÔ¡£
·¢Õ¹½×¶Î

µ±ÍøÕ¾´ïµ½Ò»¶¨µÄ¹æÄ£ºó£¬¶ÔͼƬ·þÎñÆ÷µÄÐÔÄܺÍÎȶ¨ÐÔÓÐÒ»¶¨µÄÒªÇóºó£¬ÉÏÊöNFSͼƬ·þÎñ¼Ü¹¹ÃæÁÙ×ÅÌôÕ½£¬ÑÏÖØµÄÒÀÀµNFS,¶øÇÒϵͳ´æÔÚµ¥µã»úÆ÷ÈÝÒ׳öÏÖ¹ÊÕÏ£¬ÐèÒª¶ÔÕûÌå¼Ü¹¹½øÐÐÉý¼¶¡£ÓÚÊdzöÏÖÁËÉÏͼͼƬ·þÎñÆ÷¼Ü¹¹£¬³öÏÖÁË·Ö²¼Ê½µÄͼƬ´æ´¢¡£
ÆäʵÏֵľßÌå˼·ÈçÏ£º
1£©Óû§ÉÏ´«Í¼Æ¬µ½web·þÎñÆ÷ºó£¬web·þÎñÆ÷´¦ÀíÍêͼƬ£¬È»ºóÔÙÓÉǰ¶Ëweb·þÎñÆ÷°ÑͼƬpostµ½µ½[ͼƬ1]¡¢[ͼƬ2]¡[ͼƬN]ÆäÖеÄÒ»¸ö£¬Í¼Æ¬·þÎñÆ÷½ÓÊÕµ½post¹ýÀ´µÄͼƬ£¬È»ºó°ÑͼƬдÈëµ½±¾µØ´ÅÅ̲¢·µ»Ø¶ÔÓ¦³É¹¦×´Ì¬Â롣ǰ¶Ëweb·þÎñÆ÷¸ù¾Ý·µ»Ø×´Ì¬Âë¾ö¶¨¶ÔÓ¦²Ù×÷£¬Èç¹û³É¹¦µÄ»°£¬´¦ÀíÉú³É¸÷³ß´çµÄËõÂÔͼ¡¢´òˮӡ£¬°ÑͼƬ·þÎñÆ÷¶ÔÓ¦µÄIDºÍ¶ÔӦͼƬ·¾¶Ð´ÈëDBÊý¾Ý¿â¡£
2) ÉÏ´«¿ØÖÆ
ÎÒÃÇÐèÒªµ÷½ÚÉÏ´«Ê±£¬Ö»ÐèÒªÐÞ¸Äweb·þÎñÆ÷postµ½µÄÄ¿µÄͼƬ·þÎñÆ÷µÄID£¬¾Í¿ÉÒÔ¿ØÖÆÉÏ´«µ½ÄĄ̈ͼƬ´æ´¢·þÎñÆ÷,¶ÔÓ¦µÄͼƬ´æ´¢·þÎñÆ÷Ö»ÐèÒª°²×°nginxͬʱÌṩһ¸öpython»òÕßphp·þÎñ½ÓÊÕ²¢±£´æÍ¼Æ¬£¬Èç¹û²»Ïë²»Ï뿪Æôpython»òÕßphp·þÎñ£¬Ò²¿ÉÒÔ±àдһ¸önginxÀ©Õ¹Ä£¿é¡£
3) Óû§·ÃÎÊÁ÷³Ì
Óû§·ÃÎÊÒ³ÃæµÄʱºò£¬¸ù¾ÝÇëÇóͼƬµÄURLµ½¶ÔӦͼƬ·þÎñÆ÷È¥·ÃÎÊͼƬ¡£
È磺 http://imgN.xxx.com/image1.jpg
´Ë½×¶ÎµÄͼƬ·þÎñÆ÷¼Ü¹¹£¬Ôö¼ÓÁ˸ºÔؾùºâºÍ·Ö²¼Ê½Í¼Æ¬´æ´¢£¬Äܹ»ÔÚÒ»¶¨³Ì¶ÈÉϽâ¾ö²¢·¢·ÃÎÊÁ¿¸ßºÍ´æ´¢Á¿´óµÄÎÊÌâ¡£¸ºÔؾùºâÔÚÓÐÒ»¶¨²ÆÁ¦µÄÇé¿öÏ¿ÉÒÔ¿¼ÂÇF5Ó²¸ºÔØ£¬µ±È»Ò²¿ÉÒÔ¿¼ÂÇʹÓÿªÔ´µÄLVSÈí¸ºÔØ(ͬʱ»¹¿É¿ªÆô»º´æ¹¦ÄÜ)¡£´Ëʱ½«¼«´óÌáÉý·ÃÎʵIJ¢·¢Á¿£¬¿ÉÒÔ¸ù¾ÝÇé¿öËæÊ±µ÷Åä·þÎñÆ÷¡£µ±È»´ËʱҲ´æÔÚÒ»¶¨µÄ覴ã¬ÄǾÍÊÇ¿ÉÄÜÔÚ¶ą̀SquidÉÏ´æÔÚͬһÕÅͼƬ£¬ÒòΪ·ÃÎÊͼƬʱ¿ÉÄܵÚÒ»´Î·Öµ½squid1£¬ÔÚLVS¹ýÆÚºóµÚ¶þ´Î·ÃÎʵ½squid2»òÕß±ðµÄ£¬µ±È»Ïà¶Ô²¢·¢ÎÊÌâµÄ½â¾ö£¬´ËÖÖÉÙÁ¿µÄÈßÓàÍêÈ«ÔÚÎÒÃǵÄÔÊÐí·¶Î§Ö®ÄÚ¡£ÔÚ¸Ãϵͳ¼Ü¹¹Öжþ¼¶»º´æ¿ÉÒÔʹÓÃsquidÒ²¿ÉÒÔ¿¼ÂÇʹÓÃvarnish»òÕßtraffic
server£¬¶ÔÓÚcacheµÄ¿ªÔ´Èí¼þÑ¡ÐÍÒª¿¼ÂÊÒÔϼ¸µã£º
1£©ÐÔÄÜ£ºvarnish±¾ÉíµÄ¼¼ÊõÉÏÓÅÊÆÒª¸ßÓÚsquid£¬Ëü²ÉÓÃÁË¡°Visual
Page Cache¡±¼¼Êõ£¬ÔÚÄÚ´æµÄÀûÓÃÉÏ£¬Varnish±ÈSquid¾ßÓÐÓÅÊÆ£¬Ëü±ÜÃâÁËSquidƵ·±ÔÚÄÚ´æ¡¢´ÅÅÌÖн»»»Îļþ£¬ÐÔÄÜÒª±ÈSquid¸ß¡£varnishÊDz»ÄÜcacheµ½±¾µØÓ²ÅÌÉϵġ£»¹ÓÐÇ¿´óµÄͨ¹ýVarnish¹ÜÀí¶Ë¿Ú£¬¿ÉÒÔʹÓÃÕýÔò±í´ïʽ¿ìËÙ¡¢ÅúÁ¿µØÇå³ý²¿·Ö»º´æ¡£nginxÊÇÓõÚÈý·½Ä£¿éncache×öµÄ»º³å£¬ÆäÐÔÄÜ»ù±¾´ïµ½varnish£¬µ«Ôڼܹ¹ÖÐnginxÒ»°ã×÷Ϊ·´Ïò£¨¾²Ì¬ÎļþÏÖÔÚÓÃnginxµÄºÜ¶à£¬²¢·¢ÄÜÖ§³Öµ½2Íò+£©¡£ÔÚ¾²Ì¬¼Ü¹¹ÖУ¬Èç¹ûǰ¶ËÖ±½ÓÃæ¶ÔµÄÊÇcdn»î×Åǰ¶ËÁË4²ã¸ºÔصϰ£¬ÍêÈ«ÓÃnginxµÄcache¾Í¹»ÁË¡£
2£©±ÜÃâÎļþϵͳʽµÄ»º´æ£¬ÔÚÎļþÊý¾ÝÁ¿·Ç³£´óµÄÇé¿öÏ£¬ÎļþϵͳµÄÐÔÄܺܲÏñsquid,nginxµÄproxy_store,proxy_cacheÖ®ÀàµÄ·½Ê½»º´æ£¬µ±»º´æµÄÁ¿¼¶ÉÏÀ´ºó£¬ÐÔÄܽ«²»ÄÜÂú×ãÒªÇ󡣿ªÔ´µÄtraffic
serverÖ±½ÓÓÃÂãÅÌ»º´æ£¬ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ£¬¹úÄÚ´ó¹æÄ£Ó¦Óò¢¹«²¼³öÀ´µÄÖ÷ÒªÊÇÌÔ±¦£¬²¢²»ÊÇÒòΪËü×öµÄ²î£¬¶øÊÇ¿ªÔ´Ê±¼äÍí¡£Traffic
Server ÔÚ Yahoo ÄÚ²¿Ê¹ÓÃÁ˳¬¹ý 4 Ä꣬Ö÷ÒªÓÃÓÚ CDN ·þÎñ£¬CDN ÓÃÓÚ·Ö·¢Ìض¨µÄHTTP
ÄÚÈÝ£¬Í¨³£ÊǾ²Ì¬µÄÄÚÈÝÈçͼƬ¡¢JavaScript¡¢CSS¡£µ±È»Ê¹ÓÃleveldbÖ®ÀàµÄ×ö»º´æ£¬ÎÒ¹À¼ÆÒ²ÄÜ´ïµ½ºÜºÃµÄЧ¹û¡£
3£©Îȶ¨ÐÔ£ºsquid×÷ΪÀÏÅÆ¾¢Âûº´æ£¬ÆäÎȶ¨ÐÔ¸ü¿É¿¿Ò»Ð©£¬´ÓÎÒÉí±ßһЩʹÓÃÕß·´À¡À´¿´varnishż¶û»á³öÏÖcrashµÄÇé¿ö¡£Traffic
ServerÔÚÑÅ»¢Ä¿Ç°Ê¹ÓÃÆÚ¼äҲûÓгöÏÖÒÑÖªµÄÊý¾ÝËð»µÇé¿ö£¬ÆäÎȶ¨ÐÔÏà¶ÔÒ²±È½Ï¿É¿¿£¬¶ÔÓÚδÀ´ÎÒÆäʵ¸üÆÚ´ýTraffic
ServerÔÚ¹úÄÚÄܹ»ÓµÓиü¶àµÄÓû§¡£
ÒÔÉÏͼƬ·þÎñ¼Ü¹¹Éè¼ÆÏû³ýÁËÔçÆÚµÄNFSÒÀÀµÒÔ¼°µ¥µãÎÊÌ⣬ʱÄܹ»¾ùºâͼƬ·þÎñÆ÷µÄ¿Õ¼ä£¬Ìá¸ßÁËͼƬ·þÎñÆ÷µÄ°²È«ÐÔµÈÎÊÌ⣬µ«ÊÇÓÖ´øÀ´Ò»¸öÎÊÌâÊÇͼƬ·þÎñÆ÷µÄºáÏòÀ©Õ¹ÈßÓàÎÊÌâ¡£Ö»ÏëÔÚÆÕͨµÄÓ²ÅÌÉÏ´æ´¢£¬Ê×ÏÈ»¹ÊÇÒª¿¼ÂÇÒ»ÏÂÎïÀíÓ²Å̵Äʵ¼Ê´¦ÀíÄÜÁ¦¡£ÊÇ
7200 תµÄ»¹ÊÇ 15000 תµÄ£¬Êµ¼Ê±íÏÖ²î±ð¾ÍºÜ´ó¡£ÖÁÓÚÎļþϵͳѡÔñxfs¡¢ext3¡¢ext4»¹ÊÇreiserFs£¬ÐèÒª×öһЩÐÔÄÜ·½ÃæµÄ²âÊÔ£¬´Ó¹Ù·½µÄһЩ²âÊÔÊý¾ÝÀ´¿´£¬reiserFs¸üÊʺϴ洢һЩСͼƬÎļþ¡£´´½¨ÎļþϵͳµÄʱºò
Inode ÎÊÌâÒ²Òª¼ÓÒÔ¿¼ÂÇ£¬Ñ¡ÔñºÏÊÊ´óСµÄ inode size £¬ÒòΪLinux Ϊÿ¸öÎļþ·ÖÅäÒ»¸ö³ÆÎªË÷Òý½ÚµãµÄºÅÂëinode£¬¿ÉÒÔ½«inode¼òµ¥Àí½â³ÉÒ»¸öÖ¸Õ룬ËüÓÀÔ¶Ö¸Ïò±¾ÎļþµÄ¾ßÌå´æ´¢Î»Öá£Ò»¸öÎļþϵͳÔÊÐíµÄinode½ÚµãÊýÊÇÓÐÏ޵ģ¬Èç¹ûÎļþÊýÁ¿Ì«¶à£¬¼´Ê¹Ã¿¸öÎļþ¶¼ÊÇ0×ֽڵĿÕÎļþ£¬ÏµÍ³×îÖÕÒ²»áÒòΪ½Úµã¿Õ¼äºÄ¾¡¶ø²»ÄÜÔÙ´´½¨Îļþ£¬Òò´ËÐèÒªÔÚ¿Õ¼äºÍËÙ¶ÈÉÏ×öÈ¡Éᣬ¹¹ÔìºÏÀíµÄÎļþĿ¼Ë÷Òý¡£
ÔÆ´æ´¢½×¶Î

2011ÄêÀîÑåºêÔÚ°Ù¶ÈÁªÃË·å»áÉϾÍÌáµ½¹ý»¥ÁªÍøµÄ¶Áͼʱ´úÒѾµ½À´£¬Í¼Æ¬·þÎñÔçÒѳÉΪһ¸ö»¥ÁªÍøÓ¦ÓÃÖÐÕ¼±ÈºÜ´óµÄ²¿·Ö£¬¶ÔͼƬµÄ´¦ÀíÄÜÁ¦Ò²ÏàÓ¦µØ±ä³ÉÆóÒµºÍ¿ª·¢ÕßµÄÒ»Ïî»ù±¾¼¼ÄÜ,ͼƬµÄÏÂÔØºÍÉÏ´«ËÙ¶ÈÏԵøü¼ÓÖØÒª£¬ÒªÏë´¦ÀíºÃͼƬ£¬ÐèÒªÃæ¶ÔµÄÈý¸öÖ÷ÒªÎÊÌâÊÇ£º´óÁ÷Á¿¡¢¸ß²¢·¢¡¢º£Á¿´æ´¢¡£
°¢ÀïÔÆ´æ´¢·þÎñ(OpenStorageService£¬¼ò³ÆOSS)£¬Êǰ¢ÀïÔÆ¶ÔÍâÌṩµÄº£Á¿£¬°²È«£¬µÍ³É±¾£¬¸ß¿É¿¿µÄÔÆ´æ´¢·þÎñ¡£Óû§¿ÉÒÔͨ¹ý¼òµ¥µÄ
REST½Ó¿Ú£¬ÔÚÈκÎʱ¼ä¡¢ÈκεصãÉÏ´«ºÍÏÂÔØÊý¾Ý£¬Ò²¿ÉÒÔʹÓÃWEBÒ³Ãæ¶ÔÊý¾Ý½øÐйÜÀí¡£Í¬Ê±£¬OSSÌṩJava¡¢Python¡¢PHP
SDK£¬¼ò»¯Óû§µÄ±à³Ì¡£»ùÓÚOSS£¬Óû§¿ÉÒԴ³ö¸÷ÖÖ¶àýÌå·ÖÏíÍøÕ¾¡¢ÍøÅÌ¡¢¸öÈËÆóÒµÊý¾Ý±¸·ÝµÈ»ùÓÚ´ó¹æÄ£Êý¾ÝµÄ·þÎñ¡£ÔÚÒÔÏÂÍ¼Æ¬ÔÆ´æ´¢Ö÷ÒªÒÔ°¢ÀïÔÆµÄÔÆ´æ´¢OSSΪÇÐÈëµã½éÉÜ£¬ÉÏͼΪOSSÔÆ´æ´¢µÄ¼òµ¥¼Ü¹¹Ê¾Òâͼ¡£
ÕæÕýÒâÒåÉϵġ°ÔÆ´æ´¢¡±£¬²»ÊÇ´æ´¢¶øÊÇÌá¹©ÔÆ·þÎñ£¬Ê¹ÓÃÔÆ´æ´¢·þÎñµÄÖ÷ÒªÓÅÊÆÓÐÒÔϼ¸µã£º
1)Óû§ÎÞÐèÁË½â´æ´¢É豸µÄÀàÐÍ¡¢½Ó¿Ú¡¢´æ´¢½éÖʵȡ£
2)ÎÞÐè¹ØÐÄÊý¾ÝµÄ´æ´¢Â·¾¶¡£
3)ÎÞÐè¶Ô´æ´¢É豸½øÐйÜÀí¡¢Î¬»¤¡£
4)ÎÞÐ迼ÂÇÊý¾Ý±¸·ÝºÍÈÝÔÖ
5)¼òµ¥½ÓÈëÔÆ´æ´¢£¬¾¡ÇéÏíÊÜ´æ´¢·þÎñ¡£
¼Ü¹¹Ä£¿é×é³É

1£©KV Engine
OSSÖеÄObjectÔ´ÐÅÏ¢ºÍÊý¾ÝÎļþ¶¼ÊÇ´æ·ÅÔÚKV EngineÉÏ¡£ÔÚ6.15µÄ°æ±¾£¬V
Engine½«Ê¹ÓÃ0.8.6°æ±¾£¬²¢Ê¹ÓÃΪOSSÌṩµÄOSSFileClient¡£
2£©Quota
´ËÄ£¿é¼Ç¼ÁËBucketºÍÓû§µÄ¶ÔÓ¦¹ØÏµ£¬ºÍÒÔ·ÖÖÓΪµ¥Î»µÄBucket×ÊԴʹÓÃÇé¿ö¡£Quota»¹½«ÌṩHTTP½Ó¿Ú¹©Bossϵͳ²éѯ¡£
3£©°²È«Ä£¿é
°²È«Ä£¿éÖ÷Òª¼Ç¼User¶ÔÓ¦µÄIDºÍKey£¬²¢ÌṩOSS·ÃÎʵÄÓû§ÑéÖ¤¹¦ÄÜ¡£
OSSÊõÓïÃû´Ê»ã
1 £©Access Key ID & Access Key Secret
£¨APIÃÜÔ¿£©
Óû§×¢²áOSSʱ£¬ÏµÍ³»á¸øÓû§·ÖÅäÒ»¶ÔAccess Key ID &
Access Key Secret£¬³ÆÎªID¶Ô£¬ÓÃÓÚ±êʶÓû§£¬Îª·ÃÎÊOSS×öÇ©ÃûÑéÖ¤¡£
2£© Service
OSSÌṩ¸øÓû§µÄÐéÄâ´æ´¢¿Õ¼ä£¬ÔÚÕâ¸öÐéÄâ¿Õ¼äÖУ¬Ã¿¸öÓû§¿ÉÓµÓÐÒ»¸öµ½¶à¸öBucket¡£
3£© Bucket
BucketÊÇOSSÉϵÄÃüÃû¿Õ¼ä£»BucketÃûÔÚÕû¸öOSSÖоßÓÐÈ«¾ÖΨһÐÔ£¬ÇÒ²»ÄÜÐ޸ģ»´æ´¢ÔÚOSSÉϵÄÿ¸öObject±ØÐë¶¼°üº¬ÔÚij¸öBucketÖС£Ò»¸öÓ¦Óã¬ÀýÈçͼƬ·ÖÏíÍøÕ¾£¬¿ÉÒÔ¶ÔÓ¦Ò»¸ö»ò¶à¸öBucket¡£Ò»¸öÓû§×î¶à¿É´´½¨10¸öBucket£¬µ«Ã¿¸öBucketÖдæ·ÅµÄObjectµÄÊýÁ¿ºÍ´óС×ܺÍûÓÐÏÞÖÆ£¬Óû§²»ÐèÒª¿¼ÂÇÊý¾ÝµÄ¿ÉÀ©Õ¹ÐÔ¡£
4£© Object
ÔÚOSSÖУ¬Óû§µÄÿ¸öÎļþ¶¼ÊÇÒ»¸öObject£¬Ã¿¸öÎļþÐèСÓÚ5TB¡£Object°üº¬key¡¢dataºÍuser
meta¡£ÆäÖУ¬keyÊÇObjectµÄÃû×Ö£»dataÊÇObjectµÄÊý¾Ý£»user metaÊÇÓû§¶Ô¸ÃobjectµÄÃèÊö¡£
ÆäʹÓ÷½Ê½·Ç³£¼òµ¥,ÈçÏÂΪjava sdk£º
OSSClient ossClient = new OSSClient(accessKeyId,accessKeySecret); PutObjectResult result = ossClient.putObject(bucketname, bucketKey, inStream, new ObjectMetadata()); |
Ö´ÐÐÒÔÉÏ´úÂë¼´¿É½«Í¼Æ¬Á÷ÉÏ´«ÖÁOSS·þÎñÆ÷ÉÏ¡£
ͼƬµÄ·ÃÎÊ·½Ê½Ò²·Ç³£¼òµ¥ÆäurlΪ£ºhttp://bucketname.oss.aliyuncs.com/bucketKey
·Ö²¼Ê½Îļþϵͳ
Ó÷ֲ¼Ê½´æ´¢Óм¸¸öºÃ´¦£¬·Ö²¼Ê½ÄÜ×Ô¶¯ÌṩÈßÓ࣬²»ÐèÒªÎÒÃÇÈ¥±¸·Ý£¬µ£ÐÄÊý¾Ý°²È«£¬ÔÚÎļþÊýÁ¿Ìرð´óµÄÇé¿öÏ£¬±¸·ÝÊÇÒ»¼þºÜÍ´¿àµÄÊÂÇ飬rsyncɨһ´Î¿ÉÄÜÊǾÍÊǺü¸¸öСʱ£¬»¹ÓÐÒ»µã¾ÍÊÇ·Ö²¼Ê½´æ´¢¶¯Ì¬À©ÈÝ·½±ã¡£µ±È»ÔÚ¹úÄ򵀮äËûһЩÎļþϵͳÀTFS£¨http://code.taobao.org/p/tfs/src/£©ºÍFASTDFSÒ²ÓÐһЩÓû§£¬µ«ÊÇTFSµÄÓÅÊÆ¸üÊÇÕë¶ÔһЩСÎļþ´æ´¢£¬Ö÷ÒªÊÇÌÔ±¦ÔÚÓá£ÁíÍâFASTDFSÔÚ²¢·¢¸ßÓÚ300дÈëµÄÇé¿öϳöÏÖÐÔÄÜÎÊÌ⣬Îȶ¨ÐÔ²»¹»ÓѺá£OSS´æ´¢Ê¹ÓõÄÊǰ¢ÀïÔÆ»ùÓÚ·ÉÌì5kƽ̨×ÔÖ÷Ñз¢µÄ¸ß¿ÉÓ㬸߿ɿ¿µÄ·Ö²¼Ê½ÎļþϵͳÅ̹š£·Ö²¼Ê½ÎļþϵͳÅ̹źÍGoogleµÄGFSÀàËÆ£¬Å̹ŵļܹ¹ÊÇMaster-SlaveÖ÷´Ó¼Ü¹¹£¬Master¸ºÔðÔªÊý¾Ý¹ÜÀí£¬Sliave½Ð×öChunk
Server£¬¸ºÔð¶ÁдÇëÇ󡣯äÖÐMasterÊÇ»ùÓÚPaxosµÄ¶àMaster¼Ü¹¹£¬Ò»¸öMasterËÀÁËÖ®ºó£¬ÁíÍâÒ»¸öMaster¿ÉÒԺܿì½Ó¹ýÈ¥£¬»ù±¾Äܹ»×öµ½¹ÊÕϻָ´ÔÚÒ»·ÖÖÓÒÔÄÚ
¡£ÎļþÊǰ´ÕÕ·ÖÆ¬´æ·Å£¬Ã¿¸ö»á·ÖÈý¸ö¸±±¾£¬·ÅÔÚ²»Í¬µÄ»ú¼ÜÉÏ£¬×îºóÌṩ¶Ëµ½¶ËµÄÊý¾ÝУÑé¡£
HAPROXY¸ºÔؾùºâ
»ùÓÚhaproxyµÄ×Ô¶¯hash¼Ü¹¹ ,ÕâÊÇÒ»ÖÖÐµĻº´æ¼Ü¹¹£¬ÓÉnginx×÷Ϊ×îǰ¶Ë£¬´úÀíµ½»º´æ»úÆ÷¡£
nginxºóÃæÊÇ»º´æ×飬ÓÉnginx¾¹ýurl hashºó½«ÇëÇó·Öµ½»º´æ»úÆ÷¡£
Õâ¸ö¼Ü¹¹·½±ã´¿squid»º´æÉý¼¶£¬¿ÉÒÔÔÚsquidµÄ»úÆ÷ÉϼÓ×°nginx¡£
nginxÓлº´æµÄ¹¦ÄÜ£¬¿ÉÒÔ½«Ò»Ð©·ÃÎÊÁ¿ÌØ´óµÄÁ´½ÓÖ±½Ó»º´æÔÚnginxÉÏ£¬¾Í²»Óþ¹ý¶àÒ»´Î´úÀíµÄÇëÇó£¬Äܹ»±£Ö¤Í¼Æ¬·þÎñÆ÷µÄ¸ß¿ÉÓᢸßÐÔÄÜ¡£±ÈÈçfavicon.icoºÍÍøÕ¾µÄlogo¡£
¸ºÔؾùºâ¸ºÔðOSSËùÓеÄÇëÇóµÄ¸ºÔؾùºâ£¬ºǫ́µÄhttp·þÎñÆ÷¹ÊÕÏ»á×Ô¶¯Çл»£¬´Ó¶ø±£Ö¤ÁËOSSµÄ·þÎñ²»¼ä¶Ï¡£
CDN
°¢ÀïÔÆCDN·þÎñÊÇÒ»¸ö±é²¼È«¹úµÄ·Ö²¼Ê½»º´æÏµÍ³£¬Äܹ»½«ÍøÕ¾Îļþ£¨ÈçͼƬ»òJavaScript´úÂëÎļþ£©»º´æµ½È«¹ú¶à¸ö³ÇÊлú·¿ÖеķþÎñÆ÷ÉÏ£¬µ±Ò»¸öÓû§·ÃÎÊÄãµÄÍøÕ¾Ê±£¬»á¾Í½üµ½¿¿½üTAµÄ³ÇÊеķþÎñÆ÷ÉÏ»ñÈ¡Êý¾Ý£¬ÕâÑù×îÖÕÓû§·ÃÎÊÄãµÄ·þÎñËÙ¶È»á·Ç³£¿ì¡£
°¢ÀïÔÆCDN·þÎñÔÚÈ«¹ú²¿Ê𳬹ý100¸ö½Úµã£¬ÄÜÌṩ¸øÓû§ÓÅÁ¼µÄÍøÂç¼ÓËÙЧ¹û¡£µ±ÍøÕ¾ÒµÎñͻȻ±¬·¢Ôö³¤Ê±£¬ÎÞÐèÊÖæ½ÅÂÒµØÀ©ÈÝÍøÂç´ø¿í£¬Ê¹ÓÃCDN·þÎñ¼´¿ÉÇáËÉÓ¦¶Ô¡£ºÍOSS·þÎñÒ»Ñù£¬Ê¹ÓÃCDN£¬ÐèÒªÏÈÔÚaliyun.comÍøÕ¾ÉÏ¿ªÍ¨CDN·þÎñ¡£¿ªÍ¨ºó£¬ÐèÒªÔÚÍøÕ¾ÉϵĹÜÀíÖÐÐÄ´´½¨ÄãµÄdistribution£¨¼´·Ö·¢ÆµµÀ£©£¬Ã¿¸ödistributionÓÉÁ½¸ö±ØÐëµÄ²¿·Ö×é³É£ºdistribution
IDºÍÔ´Õ¾µØÖ·¡£
ʹÓð¢ÀïÔÆOSSºÍCDN¿ÉÒԷdz£·½±ãµÄÕë¶Ôÿ¸öbucket½øÐÐÄÚÈݼÓËÙ£¬ÒòΪÿ¸öbucket¶ÔÓ¦Ò»¸ö¶ÀÁ¢µÄ¶þ¼¶ÓòÃû£¬Õë¶Ôÿ¸öÎļþ½øÐÐCDNɾ³ý£¬¼òµ¥¡¢¾¼ÃµØ½â¾ö·þÎñµÄ´æ´¢ºÍÍøÂçÎÊÌ⣬±Ï¾¹´ó¶àÊýÍøÕ¾»òÓ¦ÓõĴ洢ºÍÍøÂç´ø¿í¶à°ëÊDZ»Í¼Æ¬»òÊÓÆµÏûºÄµôµÄ¡£
´ÓÕû¸öÒµ½çÀ´¿´£¬×î½üÕâÑùµÄÃæÏò¸öÈËÓû§µÄÔÆ´æ´¢Èç¹úÍâµÄDropBoxºÍBox.net·Ç³£ÊÜ»¶Ó£¬¹úÄÚµÄÔÆ´æ´¢Ä¿Ç°±È½Ï²»´íµÄÖ÷ÒªÓÐÆßÅ£ÔÆ´æ´¢ºÍÓÖÅÄÔÆ´æ´¢¡£
ÉÏ´«ÏÂÔØ·Ö¶øÖÎÖ®
ͼƬ·þÎñÆ÷µÄͼƬÏÂÔØ±ÈÀýÔ¶Ô¶¸ßÓÚÉÏ´«±ÈÀý£¬ÒµÎñÂß¼µÄ´¦ÀíÒ²Çø±ðÃ÷ÏÔ£¬ÉÏ´«·þÆ÷¶ÔÍ¼Æ¬ÖØÃüÃû£¬¼Ç¼Èë¿âÐÅÏ¢£¬ÏÂÔØ·þÎñÆ÷¶ÔͼƬÌí¼Óˮӡ¡¢Ð޸ijߴçÖ®ÀàµÄ¶¯Ì¬´¦Àí¡£´Ó¸ß¿ÉÓõĽǶȣ¬ÎÒÃÇÄÜÈÝÈ̲¿·ÖͼƬÏÂÔØÊ§°Ü£¬µ«¾ø²»ÄÜÓÐͼƬÉÏ´«Ê§°Ü£¬ÒòΪÉÏ´«Ê§°Ü£¬Òâζ×ÅÊý¾ÝµÄ¶ªÊ§¡£ÉÏ´«ÓëÏÂÔØ·Ö¿ª£¬Äܱ£Ö¤²»»áÒòÏÂÔØµÄѹÁ¦Ó°ÏìͼƬµÄÉÏ´«£¬¶øÇÒ»¹ÓÐÒ»µã£¬ÏÂÔØÈë¿ÚºÍÉÏ´«Èë¿ÚµÄ¸ºÔؾùºâ²ßÂÔÒ²ÓÐËù²»Í¬¡£ÉÏ´«ÐèÒª¾¹ýQuota
Server¼Ç¼Óû§ºÍͼƬµÄ¹ØÏµµÈÂß¼´¦Àí£¬ÏÂÔØµÄÂß¼´¦ÀíÈç¹ûÈÆ¹ýÁËǰ¶Ë»º´æ´¦Àí£¬´©Í¸ºó¶ËÒµÎñÂß¼´¦Àí£¬ÐèÒª´ÓOSS»ñȡͼƬ·¾¶ÐÅÏ¢¡£½üÆÚ°¢ÀïÔÆ»áÍÆ³ö»ùÓÚCDN¾Í½üÉÏ´«µÄ¹¦ÄÜ£¬×Ô¶¯Ñ¡ÔñÀëÓû§×î½üµÄCDN½Úµã£¬Ê¹µÃÊý¾ÝµÄÉÏ´«ÏÂÔØËٶȾùµÃµ½×îÓÅ»¯¡£Ïà½Ï´«Í³IDC£¬·ÃÎÊËÙ¶ÈÌáÉýÊý±¶¡£
ͼƬ·ÀµÁÁ´´¦Àí
Èç¹û·þÎñ²»ÔÊÐí·ÀµÁÁ´£¬ÄÇô·ÃÎÊÁ¿»áÒýÆð´ø¿í¡¢·þÎñÆ÷ѹÁ¦µÈÎÊÌâ¡£±È½ÏͨÓõĽâ¾ö·½°¸ÊÇÔÚnginx»òÕßsquid·´Ïò´úÀíÈí¼þÉÏÌí¼Órefer
ACLÅжϣ¬OSSÒ²ÌṩÁË»ùÓÚreferµÄ·ÀµÁÁ´¼¼Êõ¡£µ±È»OSSÒ²ÌṩÁ˸üΪ¸ß¼¶µÄURLÇ©Ãû·ÀµÁÁ´£¬ÆäÆäʵÏÖ˼·ÈçÏ£º
Ê×ÏÈ£¬È·ÈÏ×Ô¼ºµÄbucketȨÏÞÊÇprivate£¬¼´Õâ¸öbucketµÄËùÓÐÇëÇó±ØÐëÔÚÇ©ÃûÈÏ֤ͨ¹ýºó²Å±»ÈÏΪÊǺϷ¨µÄ¡£È»ºó¸ù¾Ý²Ù×÷ÀàÐÍ¡¢Òª·ÃÎʵÄbucket¡¢Òª·ÃÎʵÄobjectÒÔ¼°³¬Ê±Ê±¼ä£¬¶¯Ì¬µØÉú³ÉÒ»¸ö¾¹ýÇ©ÃûµÄURL¡£Í¨¹ýÕâ¸öÇ©ÃûURL£¬ÄãÊÚȨµÄÓû§¾Í¿ÉÒÔÔÚ¸ÃÇ©ÃûURL¹ýÆÚʱ¼äǰִÐÐÏàÓ¦µÄ²Ù×÷¡£
Ç©ÃûµÄPython´úÂëÈçÏ£º
h=hmac.new(¡°OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV¡±,
¡°GET\n\n\n1141889120\n/oss-example/oss-api.jpg¡±,sha); urllib.quote_plus (base64.encodestring(h.digest()).strip()); |
ÆäÖÐmethod¿ÉÒÔÊÇPUT¡¢GET¡¢HEAD¡¢DELETEÖеÄÈÎÒâÒ»ÖÖ£»×îºóÒ»¸ö²ÎÊý¡°timeout¡±Êdz¬Ê±µÄʱ¼ä£¬µ¥Î»ÊÇÃë¡£Ò»¸öͨ¹ýÉÏÃæPython·½·¨£¬¼ÆËãµÃµ½µÄÇ©ÃûURLΪ£º
ttp://oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.jpg?OSSAccessKeyId=44CF9590006BF252F707&
Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D |
ͨ¹ýÕâÖÖ¶¯Ì¬¼ÆËãÇ©ÃûURLµÄ·½·¨£¬¿ÉÒÔÓÐЧµØ±£»¤·ÅÔÚOSSÉϵÄÊý¾Ý£¬·ÀÖ¹±»ÆäËûÈ˵ÁÁ´¡£
ͼƬ±à¼´¦ÀíAPI
¶ÔÓÚÔÚÏßͼƬµÄ±à¼´¦Àí£¬GraphicsMagick£¨GraphicsMagick(http://www.graphicsmagick.org/)£©¶ÔÓÚ´ÓÊ»¥ÁªÍøµÄ¼¼ÊõÈËÔ±Ó¦¸Ã²»»áİÉú¡£GraphicsMagickÊÇ´Ó
ImageMagick 5.5.2 ·ÖÖ§³öÀ´µÄ£¬µ«ÊÇÏÖÔÚËû±äµÃ¸üÎȶ¨ºÍÓÅÐ㣬GM¸üС¸üÈÝÒ×°²×°¡¢GM¸üÓÐЧÂÊ¡¢GMµÄÊÖ²á·Ç³£·á¸»GraphicsMagickµÄÃüÁîÓëImageMagick»ù±¾ÊÇÒ»ÑùµÄ¡£
GraphicsMagick ÌṩÁ˰üÀ¨²Ã¡¢Ëõ·Å¡¢ºÏ³É¡¢´òˮӡ¡¢Í¼Ïñת»»¡¢Ìî³äµÈ·Ç³£·á¸»µÄ½Ó¿ÚAPI,ÆäÖеĿª·¢°üSDKÒ²·Ç³£·á¸»£¬°üÀ¨ÁËJAVA(im4java)¡¢C¡¢C++¡¢Perl¡¢PHP¡¢Tcl¡¢RubyµÈµÄµ÷Óã¬Ö§³Ö³¬¹ý88ÖÐͼÏñ¸ñʽ£¬°üÀ¨ÖØÒªµÄDPX¡¢GIF¡¢JPEG¡¢JPEG-2000¡¢PNG¡¢PDF¡¢PNMºÍTIFF£¬GraphicsMagick¿ÉÒÔÔÙ¾ø´ó¶àÊýµÄƽ̨ÉÏʹÓã¬Linux¡¢Mac¡¢Windows¶¼Ã»ÓÐÎÊÌâ¡£µ«ÊǶÀÁ¢¿ª·¢ÕâЩͼƬ´¦Àí·þÎñ£¬¶Ô·þÎñÆ÷µÄIOÒªÇóÏà¶ÔÒª¸ßһЩ£¬¶øÇÒĿǰÕâЩ¿ªÔ´µÄͼƬ´¦Àí±à¼¿â£¬Ïà¶ÔÀ´Ëµ»¹²»ÊǺÜÎȶ¨£¬±ÊÕßÔÚʹÓÃGraphicsMagick
µÄʱºò¾ÍÓöµ½ÁËtomcat ½ø³ÌcrashÇé¿ö£¬ÐèÒªÊÖ¶¯ÖØÆôtomcat·þÎñ¡£
°¢ÀïÔÆÄ¿Ç°ÒѾ¶ÔÍ⿪·ÅͼƬ´¦ÀíAPI,°üÀ¨ÁË´ó¶àÊý³£Óô¦Àí½â¾ö·½°¸£ºËõÂÔͼ¡¢´òˮӡ¡¢ÎÄ×Öˮӡ¡¢Ñùʽ¡¢¹ÜµÀµÈ¡£¿ª·¢Õß¿ÉÒԷdz£·½±ãµÄʹÓÃÈçÉÏͼƬ´¦Àí·½°¸£¬Ï£ÍûÔ½À´Ô½¶àµÄ¿ª·¢ÕßÄܹ»»ùÓÚOSS¿ª·Å³ö¸ü¶àÓÅÐãµÄ²úÆ·¡£
|