±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁ˶༶»º´æ¼Ü¹¹µÄ·Ö²ãÉè¼Æ£¬ÈçºÎÉè¼Æ¡£
À´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
¶à¼¶»º´æ¼Ü¹¹µÄ·Ö²ãÉè¼Æ
ǰÑÔ
ÔÚ»¥ÁªÍø¸ßËÙ·¢Õ¹µÄ½ñÌ죬»º´æ¼¼Êõ±»¹ã·ºµØÓ¦Óá£ÎÞÂÛÒµÄÚ»¹ÊÇÒµÍ⣬ֻҪÊÇÌáµ½ÐÔÄÜÎÊÌ⣬´ó¼Ò¶¼»áÍѿڶø³ö¡°Óûº´æ½â¾ö¡±¡£
ÕâÖÖ˵·¨´øÓÐÆ¬ÃæÐÔ£¬ÉõÖÁÊÇÒ»Öª°ë½â£¬µ«ÊÇ×÷ΪרҵÈËÊ¿µÄÎÒÃÇ£¬ÐèÒª¶Ô»º´æÓиüÉî¡¢¸ü¹ãµÄÁ˽⡣
»º´æ¼¼Êõ´æÔÚÓÚÓ¦Óó¡¾°µÄ·½·½ÃæÃæ¡£´Óä¯ÀÀÆ÷ÇëÇ󣬵½·´Ïò´úÀí·þÎñÆ÷£¬´Ó½ø³ÌÄÚ»º´æµ½·Ö²¼Ê½»º´æ¡£ÆäÖлº´æ²ßÂÔ£¬Ëã·¨Ò²ÊDzã³ö²»Ç½ñÌì¾Í´ø´ó¼Ò×ß½ø»º´æ¡£
ÕýÎÄ
»º´æ¶ÔÓÚÿ¸ö¿ª·¢ÕßÀ´ËµÊÇÏ൱ÊìϤÁË£¬ÎªÁËÌá¸ß³ÌÐòµÄÐÔÄÜÎÒÃÇ»áÈ¥¼Ó»º´æ£¬µ«ÊÇÔÚʲôµØ·½¼Ó»º´æ£¬ÈçºÎ¼Ó»º´æÄØ£¿
¼ÙÉèÒ»¸öÍøÕ¾£¬ÐèÒªÌá¸ßÐÔÄÜ£¬»º´æ¿ÉÒÔ·ÅÔÚä¯ÀÀÆ÷£¬¿ÉÒÔ·ÅÔÚ·´Ïò´úÀí·þÎñÆ÷£¬»¹¿ÉÒÔ·ÅÔÚÓ¦ÓóÌÐò½ø³ÌÄÚ£¬Í¬Ê±¿ÉÒÔ·ÅÔÚ·Ö²¼Ê½»º´æÏµÍ³ÖС£

´ÓÓû§ÇëÇóÊý¾Ýµ½Êý¾Ý·µ»Ø£¬Êý¾Ý¾¹ýÁËä¯ÀÀÆ÷£¬CDN£¬´úÀí·þÎñÆ÷£¬Ó¦Ó÷þÎñÆ÷£¬ÒÔ¼°Êý¾Ý¿â¸÷¸ö»·½Ú¡£Ã¿¸ö»·½Ú¶¼¿ÉÒÔÔËÓûº´æ¼¼Êõ¡£
´Óä¯ÀÀÆ÷/¿Í»§¶Ë¿ªÊ¼ÇëÇóÊý¾Ý£¬Í¨¹ý HTTP ÅäºÏ CDN »ñÈ¡Êý¾ÝµÄ±ä¸üÇé¿ö£¬µ½´ï´úÀí·þÎñÆ÷£¨Nginx£©¿ÉÒÔͨ¹ý·´Ïò´úÀí»ñÈ¡¾²Ì¬×ÊÔ´¡£
ÔÙÍùÏÂÀ´µ½Ó¦Ó÷þÎñÆ÷¿ÉÒÔͨ¹ý½ø³ÌÄÚ£¨¶ÑÄÚ£©»º´æ£¬·Ö²¼Ê½»º´æµÈµÝ½øµÄ·½Ê½»ñÈ¡Êý¾Ý¡£Èç¹ûÒÔÉÏËùÓлº´æ¶¼Ã»ÓÐÃüÖÐÊý¾Ý£¬²Å»á»ØÔ´µ½Êý¾Ý¿â¡£
»º´æµÄÇëÇó˳ÐòÊÇ£ºÓû§ÇëÇó ¡ú HTTP »º´æ ¡ú CDN »º´æ ¡ú ´úÀí·þÎñÆ÷»º´æ ¡ú ½ø³ÌÄÚ»º´æ
¡ú ·Ö²¼Ê½»º´æ ¡ú Êý¾Ý¿â¡£
¿´À´ÔÚ¼¼ÊõµÄ¼Ü¹¹Ã¿¸ö»·½Ú¶¼¿ÉÒÔ¼ÓÈ뻺´æ£¬¿´¿´Ã¿¸ö»·½ÚÊÇÈçºÎÓ¦Óûº´æ¼¼ÊõµÄ¡£
1. HTTP»º´æ
µ±Óû§Í¨¹ýä¯ÀÀÆ÷ÇëÇó·þÎñÆ÷µÄʱºò£¬»á·¢Æð HTTP ÇëÇó£¬Èç¹û¶Ôÿ´Î HTTP ÇëÇó½øÐлº´æ£¬ÄÇô¿ÉÒÔ¼õÉÙÓ¦Ó÷þÎñÆ÷µÄѹÁ¦¡£
µ±µÚÒ»´ÎÇëÇóµÄʱºò£¬ä¯ÀÀÆ÷±¾µØ»º´æ¿âûÓлº´æÊý¾Ý£¬»á´Ó·þÎñÆ÷È¡Êý¾Ý£¬²¢Çҷŵ½ä¯ÀÀÆ÷µÄ»º´æ¿âÖУ¬Ï´ÎÔÙ½øÐÐÇëÇóµÄʱºò»á¸ù¾Ý»º´æµÄ²ßÂÔÀ´¶ÁÈ¡±¾µØ»òÕß·þÎñµÄÐÅÏ¢¡£

Ò»°ãÐÅÏ¢µÄ´«µÝͨ¹ý HTTP ÇëÇóÍ· Header À´´«µÝ¡£Ä¿Ç°±È½Ï³£¼ûµÄ»º´æ·½Ê½ÓÐÁ½ÖÖ£¬·Ö±ðÊÇ£º
Ç¿ÖÆ»º´æ
¶Ô±È»º´æ
1.1. Ç¿ÖÆ»º´æ
µ±ä¯ÀÀÆ÷±¾µØ»º´æ¿â±£´æÁË»º´æÐÅÏ¢£¬ÔÚ»º´æÊý¾ÝδʧЧµÄÇé¿öÏ£¬¿ÉÒÔÖ±½ÓʹÓûº´æÊý¾Ý¡£·ñÔò¾ÍÐèÒªÖØÐ»ñÈ¡Êý¾Ý¡£
ÕâÖÖ»º´æ»úÖÆ¿´ÉÏÈ¥±È½ÏÖ±½Ó£¬ÄÇôÈçºÎÅжϻº´æÊý¾ÝÊÇ·ñÊ§Ð§ÄØ£¿ÕâÀïÐèÒª¹Ø×¢ HTTP Header
ÖеÄÁ½¸ö×Ö¶Î Expires ºÍ Cache-Control¡£
Expires Ϊ·þÎñ¶Ë·µ»ØµÄ¹ýÆÚʱ¼ä£¬¿Í»§¶ËµÚÒ»´ÎÇëÇó·þÎñÆ÷£¬·þÎñÆ÷»á·µ»Ø×ÊÔ´µÄ¹ýÆÚʱ¼ä¡£Èç¹û¿Í»§¶ËÔÙ´ÎÇëÇó·þÎñÆ÷£¬»á°ÑÇëÇóʱ¼äÓë¹ýÆÚʱ¼ä×ö±È½Ï¡£
Èç¹ûÇëÇóʱ¼äСÓÚ¹ýÆÚʱ¼ä£¬ÄÇô˵Ã÷»º´æÃ»ÓйýÆÚ£¬Ôò¿ÉÒÔÖ±½ÓʹÓñ¾µØ»º´æ¿âµÄÐÅÏ¢¡£
·´Ö®£¬ËµÃ÷Êý¾ÝÒѾ¹ýÆÚ£¬±ØÐë´Ó·þÎñÆ÷ÖØÐ»ñÈ¡ÐÅÏ¢£¬»ñÈ¡Íê±ÏÓÖ»á¸üÐÂ×îеĹýÆÚʱ¼ä¡£
ÕâÖÖ·½Ê½ÔÚ HTTP 1.0 ÓõıȽ϶࣬µ½ÁË HTTP 1.1 »áʹÓà Cache-Control
Ìæ´ú¡£
Cache-Control ÖÐÓиö max-age ÊôÐÔ£¬µ¥Î»ÊÇÃ룬ÓÃÀ´±íʾ»º´æÄÚÈÝÔÚ¿Í»§¶ËµÄ¹ýÆÚʱ¼ä¡£
ÀýÈ磺max-age ÊÇ 60 Ã룬µ±Ç°»º´æÃ»ÓÐÊý¾Ý£¬¿Í»§¶ËµÚÒ»´ÎÇëÇóÍêºó£¬½«Êý¾Ý·ÅÈë±¾µØ»º´æ¡£
ÄÇôÔÚ 60 ÃëÒÔÄÚ¿Í»§¶ËÔÙ·¢ËÍÇëÇ󣬶¼²»»áÇëÇóÓ¦Ó÷þÎñÆ÷£¬¶øÊÇ´Ó±¾µØ»º´æÖÐÖ±½Ó·µ»ØÊý¾Ý¡£Èç¹ûÁ½´ÎÇëÇóÏà¸ôʱ¼ä³¬¹ýÁË
60 Ã룬ÄÇô¾ÍÐèҪͨ¹ý·þÎñÆ÷»ñÈ¡Êý¾Ý¡£
1.2. ¶Ô±È»º´æ
ÐèÒª¶Ô±ÈǰºóÁ½´ÎµÄ»º´æ±êÖ¾À´ÅжÏÊÇ·ñʹÓûº´æ¡£ä¯ÀÀÆ÷µÚÒ»´ÎÇëÇóʱ£¬·þÎñÆ÷»á½«»º´æ±êʶÓëÊý¾ÝÒ»Æð·µ»Ø£¬ä¯ÀÀÆ÷½«¶þÕß±¸·ÝÖÁ±¾µØ»º´æ¿âÖС£ä¯ÀÀÆ÷ÔÙ´ÎÇëÇóʱ£¬½«±¸·ÝµÄ»º´æ±êʶ·¢Ë͸ø·þÎñÆ÷¡£
·þÎñÆ÷¸ù¾Ý»º´æ±êʶ½øÐÐÅжϣ¬Èç¹ûÅжÏÊý¾ÝûÓз¢Éú±ä»¯£¬°ÑÅжϳɹ¦µÄ 304 ״̬Âë·¢¸øä¯ÀÀÆ÷¡£
Õâʱä¯ÀÀÆ÷¾Í¿ÉÒÔʹÓûº´æµÄÊý¾ÝÀ´¡£·þÎñÆ÷·µ»ØµÄ¾ÍÖ»ÊÇ Header£¬²»°üº¬ Body¡£
ÏÂÃæ½éÉÜÁ½ÖÖ±êʶ¹æÔò£º
1.2.1. Last-Modified/If-Modified-Since ¹æÔò
ÔÚ¿Í»§¶ËµÚÒ»´ÎÇëÇóµÄʱºò£¬·þÎñÆ÷»á·µ»Ø×ÊÔ´×îºóµÄÐÞ¸Äʱ¼ä£¬¼Ç×÷ Last-Modified¡£¿Í»§¶Ë½«Õâ¸ö×Ö¶ÎÁ¬Í¬×ÊÔ´»º´æÆðÀ´¡£
Last-Modified ±»±£´æÒÔºó£¬ÔÚÏ´ÎÇëÇóʱ»áÒÔ Last-Modified-Since
×ֶα»·¢ËÍ¡£

µ±¿Í»§¶ËÔÙ´ÎÇëÇó·þÎñÆ÷ʱ£¬»á°Ñ Last-Modified Á¬Í¬ÇëÇóµÄ×ÊÔ´Ò»Æð·¢¸ø·þÎñÆ÷£¬Õâʱ Last-Modified
»á±»ÃüÃûΪ If-Modified-Since£¬´æ·ÅµÄÄÚÈݶ¼ÊÇÒ»ÑùµÄ¡£
·þÎñÆ÷ÊÕµ½ÇëÇ󣬻á°Ñ If-Modified-Since ×Ö¶ÎÓë·þÎñÆ÷Éϱ£´æµÄ Last-Modified
×Ö¶Î×÷±È½Ï£º
Èô·þÎñÆ÷É쵀 Last-Modified ×îºóÐÞ¸Äʱ¼ä´óÓÚÇëÇóµÄ If-Modified-Since£¬ËµÃ÷×ÊÔ´±»¸Ä¶¯¹ý£¬¾Í»á°Ñ×ÊÔ´£¨°üÀ¨
Header+Body£©ÖØÐ·µ»Ø¸øä¯ÀÀÆ÷£¬Í¬Ê±·µ»Ø×´Ì¬Âë 200¡£
Èô×ÊÔ´µÄ×îºóÐÞ¸Äʱ¼äСÓÚ»òµÈÓÚ If-Modified-Since£¬ËµÃ÷×ÊԴûÓи͝¹ý£¬Ö»»á·µ»Ø
Header£¬²¢ÇÒ·µ»Ø×´Ì¬Âë 304¡£ä¯ÀÀÆ÷½ÓÊܵ½Õâ¸öÏûÏ¢¾Í¿ÉÒÔʹÓñ¾µØ»º´æ¿âµÄÊý¾Ý¡£

×¢Ò⣺Last-Modified ºÍ If-Modified-Since Ö¸µÄÊÇͬһ¸öÖµ£¬Ö»ÊÇÔÚ¿Í»§¶ËºÍ·þÎñÆ÷¶ËµÄ½Ð·¨²»Í¬¡£
1.2.2. ETag / If-None-Match ¹æÔò
¿Í»§¶ËµÚÒ»´ÎÇëÇóµÄʱºò£¬·þÎñÆ÷»á¸øÃ¿¸ö×ÊÔ´Éú³ÉÒ»¸ö ETag ±ê¼Ç¡£Õâ¸ö ETag ÊǸù¾Ýÿ¸ö×ÊÔ´Éú³ÉµÄΨһ
Hash ´®£¬×ÊÔ´ÈçºÎ·¢Éú±ä»¯ ETag ËæÖ®¸ü¸Ä£¬Ö®ºó½«Õâ¸ö ETag ·µ»Ø¸ø¿Í»§¶Ë£¬¿Í»§¶Ë°ÑÇëÇóµÄ×ÊÔ´ºÍ
ETag ¶¼»º´æµ½±¾µØ¡£
ETag ±»±£´æÒÔºó£¬ÔÚÏ´ÎÇëÇóʱ»áµ±×÷ If-None-Match ×ֶα»·¢ËͳöÈ¥¡£

ÔÚä¯ÀÀÆ÷µÚ¶þ´ÎÇëÇó·þÎñÆ÷Ïàͬ×ÊԴʱ£¬»á°Ñ×ÊÔ´¶ÔÓ¦µÄ ETag Ò»²¢·¢Ë͸ø·þÎñÆ÷¡£ÔÚÇëÇóʱ ETag
ת»¯³É If-None-Match£¬µ«ÆäÄÚÈݲ»±ä¡£
·þÎñÆ÷ÊÕµ½ÇëÇóºó£¬»á°Ñ If-None-Match Óë·þÎñÆ÷ÉÏ×ÊÔ´µÄ ETag ½øÐбȽϣº
Èç¹û²»Ò»Ö£¬ËµÃ÷×ÊÔ´±»¸Ä¶¯¹ý£¬Ôò·µ»Ø×ÊÔ´£¨Header+Body£©£¬·µ»Ø×´Ì¬Âë 200¡£
Èç¹ûÒ»Ö£¬ËµÃ÷×ÊԴûÓб»¸Ä¹ý£¬Ôò·µ»Ø Header£¬·µ»Ø×´Ì¬Âë 304¡£ä¯ÀÀÆ÷½ÓÊܵ½Õâ¸öÏûÏ¢¾Í¿ÉÒÔʹÓñ¾µØ»º´æ¿âµÄÊý¾Ý¡£

×¢Ò⣺ETag ºÍ If-None-Match Ö¸µÄÊÇͬһ¸öÖµ£¬Ö»ÊÇÔÚ¿Í»§¶ËºÍ·þÎñÆ÷¶ËµÄ½Ð·¨²»Í¬¡£
2. CDN »º´æ
HTTP »º´æÖ÷ÒªÊǶԾ²Ì¬Êý¾Ý½øÐлº´æ£¬°Ñ´Ó·þÎñÆ÷Äõ½µÄÊý¾Ý»º´æµ½¿Í»§¶Ë/ä¯ÀÀÆ÷¡£
Èç¹ûÔÚ¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äÔÙ¼ÓÉÏÒ»²ã CDN£¬¿ÉÒÔÈà CDN ΪӦÓ÷þÎñÆ÷Ìṩ»º´æ£¬Èç¹ûÔÚ CDN
ÉÏ»º´æ£¬¾Í²»ÓÃÔÙÇëÇóÓ¦Ó÷þÎñÆ÷ÁË¡£²¢ÇÒ HTTP »º´æÌáµ½µÄÁ½ÖÖ²ßÂÔͬÑù¿ÉÒÔÔÚ CDN ·þÎñÆ÷Ö´ÐС£
CDN µÄÈ«³ÆÊÇ Content Delivery Network£¬¼´ÄÚÈÝ·Ö·¢ÍøÂç¡£

ÈÃÎÒÃÇÀ´¿´¿´ËüÊÇÈçºÎ¹¤×÷µÄ°É£º
¿Í»§¶Ë·¢ËÍ URL ¸ø DNS ·þÎñÆ÷¡£
DNS ͨ¹ýÓòÃû½âÎö£¬°ÑÇëÇóÖ¸Ïò CDN ÍøÂçÖÐµÄ DNS ¸ºÔؾùºâÆ÷¡£
DNS ¸ºÔؾùºâÆ÷½«×î½ü CDN ½ÚµãµÄ IP ¸æËß DNS£¬DNS ¸æÖ®¿Í»§¶Ë×îРCDN ½ÚµãµÄ
IP¡£
¿Í»§¶ËÇëÇó×î½üµÄ CDN ½Úµã¡£
CDN ½Úµã´ÓÓ¦Ó÷þÎñÆ÷»ñÈ¡×ÊÔ´·µ»Ø¸ø¿Í»§¶Ë£¬Í¬Ê±½«¾²Ì¬ÐÅÏ¢»º´æ¡£×¢Ò⣺¿Í»§¶ËÏ´λ¥¶¯µÄ¶ÔÏó¾ÍÊÇ
CDN »º´æÁË£¬CDN ¿ÉÒÔºÍÓ¦Ó÷þÎñÆ÷ͬ²½»º´æÐÅÏ¢¡£
CDN ½ÓÊܿͻ§¶ËµÄÇëÇó£¬Ëü¾ÍÊÇÀë¿Í»§¶Ë×î½üµÄ·þÎñÆ÷£¬ËüºóÃæ»áÁ´½Ó¶ą̀·þÎñÆ÷£¬Æðµ½ÁË»º´æºÍ¸ºÔؾùºâµÄ×÷Óá£
3. ¸ºÔؾùºâ»º´æ
˵Íê¿Í»§¶Ë£¨HTTP£©»º´æºÍ CDN »º´æ£¬ÎÒÃÇÀëÓ¦Ó÷þÎñÔ½À´Ô½½üÁË£¬ÔÚµ½´ïÓ¦Ó÷þÎñ֮ǰ£¬ÇëÇó»¹Òª¾¹ý¸ºÔؾùºâÆ÷¡£
Ëä˵ËüµÄÖ÷Òª¹¤×÷ÊǶÔÓ¦Ó÷þÎñÆ÷½øÐиºÔؾùºâ£¬µ«ÊÇËüÒ²¿ÉÒÔ×÷»º´æ¡£¿ÉÒÔ°ÑһЩÐÞ¸ÄÆµÂʲ»¸ßµÄÊý¾Ý»º´æÔÚÕâÀÀýÈ磺Óû§ÐÅÏ¢£¬ÅäÖÃÐÅÏ¢¡£Í¨¹ý·þÎñ¶¨ÆÚË¢ÐÂÕâ¸ö»º´æ¾ÍÐÐÁË¡£

ÒÔ Nginx ΪÀý£¬ÎÒÃÇ¿´¿´ËüÊÇÈçºÎ¹¤×÷µÄ£º
Óû§ÇëÇóÔÚ´ïµ½Ó¦Ó÷þÎñÆ÷֮ǰ£¬»áÏÈ·ÃÎÊ Nginx ¸ºÔؾùºâÆ÷£¬Èç¹û·¢ÏÖÓлº´æÐÅÏ¢£¬Ö±½Ó·µ»Ø¸øÓû§¡£
Èç¹ûûÓз¢ÏÖ»º´æÐÅÏ¢£¬Nginx »ØÔ´µ½Ó¦Ó÷þÎñÆ÷»ñÈ¡ÐÅÏ¢¡£
ÁíÍ⣬ÓÐÒ»¸ö»º´æ¸üзþÎñ£¬¶¨ÆÚ°ÑÓ¦Ó÷þÎñÆ÷ÖÐÏà¶ÔÎȶ¨µÄÐÅÏ¢¸üе½ Nginx ±¾µØ»º´æÖС£
4. ½ø³ÌÄÚ»º´æ
ͨ¹ýÁ˿ͻ§¶Ë£¬CDN£¬¸ºÔؾùºâÆ÷£¬ÎÒÃÇÖÕÓÚÀ´µ½ÁËÓ¦Ó÷þÎñÆ÷¡£Ó¦Ó÷þÎñÆ÷Éϲ¿Êð×ÅÒ»¸ö¸öÓ¦Óã¬ÕâЩӦÓÃÒÔ½ø³ÌµÄ·½Ê½ÔËÐÐ×Å£¬ÄÇôÔÚ½ø³ÌÖеĻº´æÊÇÔõÑùµÄÄØ£¿
½ø³ÌÄÚ»º´æÓÖ½ÐÍйܶѻº´æ£¬ÒÔ Java ΪÀý£¬Õⲿ·Ö»º´æ·ÅÔÚ JVM µÄÍйܶÑÉÏÃæ£¬Í¬Ê±»áÊܵ½ÍйܶѻØÊÕËã·¨µÄÓ°Ïì¡£
ÓÉÓÚÆäÔËÐÐÔÚÄÚ´æÖУ¬¶ÔÊý¾ÝµÄÏìÓ¦ËٶȺܿ죬ͨ³£ÎÒÃÇ»á°ÑÈȵãÊý¾Ý·ÅÔÚÕâÀï¡£
ÔÚ½ø³ÌÄÚ»º´æÃ»ÓÐÃüÖеÄʱºò£¬ÎÒÃÇ»áÈ¥ËÑË÷½ø³ÌÍâµÄ»º´æ»òÕß·Ö²¼Ê½»º´æ¡£ÕâÖÖ»º´æµÄºÃ´¦ÊÇûÓÐÐòÁл¯ºÍ·´ÐòÁл¯£¬ÊÇ×î¿ìµÄ»º´æ¡£È±µãÊÇ»º´æµÄ¿Õ¼ä²»ÄÜÌ«´ó£¬¶ÔÀ¬»ø»ØÊÕÆ÷µÄÐÔÄÜÓÐÓ°Ïì¡£
Ŀǰ±È½ÏÁ÷ÐеÄʵÏÖÓÐ Ehcache¡¢GuavaCache¡¢Caffeine¡£ÕâЩ¼Ü¹¹¿ÉÒԺܷ½±ãµÄ°ÑһЩÈȵãÊý¾Ý·Åµ½½ø³ÌÄڵĻº´æÖС£
ÕâÀïÎÒÃÇÐèÒª¹Ø×¢¼¸¸ö»º´æµÄ»ØÊÕ²ßÂÔ£¬¾ßÌåµÄʵÏּܹ¹µÄ»ØÊÕ²ßÂÔ»áÓÐËù²»Í¬£¬µ«´óÖµÄ˼·¶¼ÊÇÒ»Öµģº
FIFO£¨First In First Out£©£ºÏȽøÏȳöËã·¨£¬×îÏÈ·ÅÈ뻺´æµÄÊý¾Ý×îÏȱ»ÒƳý¡£
LRU£¨Least Recently Used£©£º×î½ü×îÉÙʹÓÃËã·¨£¬°Ñ×î¾ÃûÓÐʹÓùýµÄÊý¾ÝÒÆ³ý»º´æ¡£
LFU£¨Least Frequently Used£©£º×î²»³£ÓÃËã·¨£¬ÔÚÒ»¶Îʱ¼äÄÚʹÓÃÆµÂÊ×îСµÄÊý¾Ý±»ÒƳý»º´æ¡£
ÔÚ·Ö²¼Ê½¼Ü¹¹µÄ½ñÌ죬¶àÓ¦ÓÃÖÐÈç¹û²ÉÓýø³ÌÄÚ»º´æ»á´æÔÚÊý¾ÝÒ»ÖÂÐÔµÄÎÊÌâ¡£
ÕâÀïÍÆ¼öÁ½¸ö·½°¸£º
ÏûÏ¢¶ÓÁÐÐ޸ķ½°¸
Timer Ð޸ķ½°¸
4.1. ÏûÏ¢¶ÓÁÐÐ޸ķ½°¸
Ó¦ÓÃÔÚÐÞ¸ÄÍê×ÔÉí»º´æÊý¾ÝºÍÊý¾Ý¿âÊý¾ÝÖ®ºó£¬¸øÏûÏ¢¶ÓÁз¢ËÍÊý¾Ý±ä»¯Í¨Öª£¬ÆäËûÓ¦Óö©ÔÄÁËÏûϢ֪ͨ£¬ÔÚÊÕµ½Í¨ÖªµÄʱºòÐ޸Ļº´æÊý¾Ý¡£

4.2. Timer Ð޸ķ½°¸
ΪÁ˱ÜÃâñîºÏ£¬½µµÍ¸´ÔÓÐÔ£¬¶Ô¡°ÊµÊ±Ò»ÖÂÐÔ¡±²»Ãô¸ÐµÄÇé¿öÏ¡£Ã¿¸öÓ¦Óö¼»áÆô¶¯Ò»¸ö Timer£¬¶¨Ê±´ÓÊý¾Ý¿âÀÈ¡×îеÄÊý¾Ý£¬¸üлº´æ¡£
²»¹ýÔÚÓеÄÓ¦ÓøüÐÂÊý¾Ý¿âºó£¬ÆäËû½Úµãͨ¹ý Timer »ñÈ¡Êý¾ÝÖ®¼ä£¬»á¶Áµ½ÔàÊý¾Ý¡£ÕâÀïÐèÒª¿ØÖƺÃ
Timer µÄƵÂÊ£¬ÒÔ¼°Ó¦ÓÃÓë¶ÔʵʱÐÔÒªÇ󲻸ߵij¡¾°¡£

½ø³ÌÄÚ»º´æÓÐÄÄЩʹÓó¡¾°ÄØ£¿
³¡¾°Ò»£ºÖ»¶ÁÊý¾Ý£¬¿ÉÒÔ¿¼ÂÇÔÚ½ø³ÌÆô¶¯Ê±¼ÓÔØµ½ÄÚ´æ¡£µ±È»£¬°ÑÊý¾Ý¼ÓÔØµ½ÀàËÆ Redis ÕâÑùµÄ½ø³ÌÍ⻺´æ·þÎñÒ²Äܽâ¾öÕâÀàÎÊÌâ¡£
³¡¾°¶þ£º¸ß²¢·¢£¬¿ÉÒÔ¿¼ÂÇʹÓýø³ÌÄÚ»º´æ£¬ÀýÈ磺Ãëɱ¡£
5. ·Ö²¼Ê½»º´æ
˵Íê½ø³ÌÄÚ»º´æ£¬×ÔÈ»¾Í¹ý¶Èµ½½ø³ÌÍ⻺´æÁË¡£Óë½ø³ÌÄÚ»º´æ²»Í¬£¬½ø³ÌÍ⻺´æÔÚÓ¦ÓÃÔËÐеĽø³ÌÖ®Í⣬ËüÓµÓиü´óµÄ»º´æÈÝÁ¿£¬²¢ÇÒ¿ÉÒÔ²¿Êðµ½²»Í¬µÄÎïÀí½Úµã£¬Í¨³£»áÓ÷ֲ¼Ê½»º´æµÄ·½Ê½ÊµÏÖ¡£
·Ö²¼Ê½»º´æÊÇÓëÓ¦Ó÷ÖÀëµÄ»º´æ·þÎñ£¬×î´óµÄÌØµãÊÇ£¬×ÔÉíÊÇÒ»¸ö¶ÀÁ¢µÄÓ¦ÓÃ/·þÎñ£¬Óë±¾µØÓ¦ÓøôÀ룬¶à¸öÓ¦ÓÿÉÖ±½Ó¹²ÏíÒ»¸ö»òÕß¶à¸ö»º´æÓ¦ÓÃ/·þÎñ¡£

¼ÈÈ»ÊÇ·Ö²¼Ê½»º´æ£¬»º´æµÄÊý¾Ý»á·Ö²¼µ½²»Í¬µÄ»º´æ½ÚµãÉÏ£¬Ã¿¸ö»º´æ½Úµã»º´æµÄÊý¾Ý´óСͨ³£Ò²ÊÇÓÐÏÞÖÆµÄ¡£
Êý¾Ý±»»º´æµ½²»Í¬µÄ½Úµã£¬ÎªÁËÄÜ·½±ãµÄ·ÃÎÊÕâЩ½Úµã£¬ÐèÒªÒýÈ뻺´æ´úÀí£¬ÀàËÆ Twemproxy¡£Ëû»á°ïÖúÇëÇóÕÒµ½¶ÔÓ¦µÄ»º´æ½Úµã¡£
ͬʱÈç¹û»º´æ½ÚµãÔö¼ÓÁË£¬Õâ¸ö´úÀíÒ²»áÖ»ÄÜʶ±ð²¢ÇÒ°ÑÐµĻº´æÊý¾Ý·ÖƬµ½ÐµĽڵ㣬×öºáÏòµÄÀ©Õ¹¡£
ΪÁËÌá¸ß»º´æµÄ¿ÉÓÃÐÔ£¬»áÔÚÔÓеĻº´æ½ÚµãÉϼÓÈë Master/Slave µÄÉè¼Æ¡£µ±»º´æÊý¾ÝдÈë
Master ½ÚµãµÄʱºò£¬»áͬʱͬ²½Ò»·Ýµ½ Slave ½Úµã¡£
Ò»µ© Master ½ÚµãʧЧ£¬¿ÉÒÔͨ¹ý´úÀíÖ±½ÓÇл»µ½ Slave ½Úµã£¬Õâʱ Slave ½Úµã¾Í±ä³ÉÁË
Master ½Úµã£¬±£Ö¤»º´æµÄÕý³£¹¤×÷¡£
ÿ¸ö»º´æ½Úµã»¹»áÌṩ»º´æ¹ýÆÚµÄ»úÖÆ£¬²¢ÇÒ»á°Ñ»º´æÄÚÈݶ¨ÆÚÒÔ¿ìÕյķ½Ê½±£´æµ½ÎļþÉÏ£¬·½±ã»º´æ±ÀÀ£Ö®ºóÆô¶¯Ô¤ÈȼÓÔØ¡£
5.1. ¸ßÐÔÄÜ
µ±»º´æ×ö³É·Ö²¼Ê½µÄʱºò£¬Êý¾Ý»á¸ù¾ÝÒ»¶¨µÄ¹æÂÉ·ÖÅ䵽ÿ¸ö»º´æÓ¦ÓÃ/·þÎñÉÏ¡£
Èç¹ûÎÒÃǰÑÕâЩ»º´æÓ¦ÓÃ/·þÎñ½Ð×ö»º´æ½Úµã£¬Ã¿¸ö½ÚµãÒ»°ã¶¼¿ÉÒÔ»º´æÒ»¶¨ÈÝÁ¿µÄÊý¾Ý£¬ÀýÈ磺Redis
Ò»¸ö½Úµã¿ÉÒÔ»º´æ 2G µÄÊý¾Ý¡£
Èç¹ûÐèÒª»º´æµÄÊý¾ÝÁ¿±È½Ï´ó¾ÍÐèÒªÀ©Õ¹¶à¸ö»º´æ½ÚµãÀ´ÊµÏÖ£¬Õâô¶àµÄ»º´æ½Úµã£¬¿Í»§¶ËµÄÇëÇó²»ÖªµÀ·ÃÎÊÄĸö½ÚµãÔõô°ì£¿»º´æµÄÊý¾ÝÓÖÈçºÎ·Åµ½ÕâЩ½ÚµãÉÏ£¿
»º´æ´úÀí·þÎñÒѾ°ïÎÒÃǽâ¾öÕâЩÎÊÌâÁË£¬ÀýÈ磺Twemproxy ²»µ«¿ÉÒÔ°ïÖú»º´æÂ·ÓÉ£¬Í¬Ê±¿ÉÒÔ¹ÜÀí»º´æ½Úµã¡£
ÕâÀïÓнéÉÜÈýÖÖ»º´æÊý¾Ý·ÖƬµÄËã·¨£¬ÓÐÁËÕâЩËã·¨»º´æ´úÀí¾Í¿ÉÒÔ·½±ãµÄÕÒµ½·ÖƬµÄÊý¾ÝÁË¡£
5.1.1. ¹þÏ£Ëã·¨
Hash ±íÊÇ×î³£¼ûµÄÊý¾Ý½á¹¹£¬ÊµÏÖ·½Ê½ÊÇ£¬¶ÔÊý¾Ý¼Ç¼µÄ¹Ø¼üÖµ½øÐÐ Hash£¬È»ºóÔÙ¶ÔÐèÒª·ÖƬµÄ»º´æ½Úµã¸öÊý½øÐÐȡģµÃµ½µÄÓàÊý½øÐÐÊý¾Ý·ÖÅä¡£
ÀýÈ磺ÓÐÈýÌõ¼Ç¼Êý¾Ý·Ö±ðÊÇ R1£¬R2£¬R3¡£ËûÃÇµÄ ID ·Ö±ðÊÇ 01£¬02£¬03£¬¼ÙÉè¶ÔÕâÈý¸ö¼Ç¼µÄ
ID ×÷Ϊ¹Ø¼üÖµ½øÐÐ Hash Ëã·¨Ö®ºóµÄ½á¹ûÒÀ¾ÉÊÇ 01£¬02£¬03¡£
ÎÒÃÇÏë°ÑÕâÈýÌõÊý¾Ý·Åµ½Èý¸ö»º´æ½ÚµãÖУ¬¿ÉÒÔ°ÑÕâ¸ö½á¹û·Ö±ð¶Ô 3 Õâ¸öÊý×ÖȡģµÃµ½ÓàÊý£¬Õâ¸öÓàÊý¾ÍÊÇÕâÈýÌõ¼Ç¼·Ö±ð·ÅÖõĻº´æ½Úµã¡£

Hash Ëã·¨ÊÇijÖ̶ֳÈÉÏµÄÆ½¾ù·ÅÖ㬲ßÂԱȽϼòµ¥£¬Èç¹ûÒªÔö¼Ó»º´æ½Úµã£¬¶ÔÒѾ´æÔÚµÄÊý¾Ý»áÓнϴóµÄ±ä¶¯¡£
5.1.2. Ò»ÖÂÐÔ¹þÏ£Ëã·¨
Ò»ÖÂÐÔ Hash Êǽ«Êý¾Ý°´ÕÕÌØÕ÷ÖµÓ³Éäµ½Ò»¸öÊ×βÏà½ÓµÄ Hash »·ÉÏ£¬Í¬Ê±Ò²½«»º´æ½ÚµãÓ³Éäµ½Õâ¸ö»·ÉÏ¡£
Èç¹ûÒª»º´æÊý¾Ý£¬Í¨¹ýÊý¾ÝµÄ¹Ø¼üÖµ£¨Key£©ÔÚ»·ÉÏÕÒµ½×Ô¼º´æ·ÅµÄλÖá£ÕâЩÊý¾Ý°´ÕÕ×ÔÉíµÄ ID È¡
Hash Ö®ºóµÃµ½µÄÖµ°´ÕÕ˳ÐòÔÚ»·ÉÏÅÅÁС£

Èç¹ûÕâ¸öʱºòÒª²åÈëÒ»ÌõеÄÊý¾ÝÆä ID ÊÇ 115£¬ÄÇô¾ÍÓ¦¸Ã²åÈëµ½ÈçÏÂͼµÄλÖá£

ͬÀíÈç¹ûÒªÔö¼ÓÒ»¸ö»º´æ½Úµã N4 150£¬Ò²¿ÉÒԷŵ½ÈçÏÂͼµÄλÖá£

ÕâÖÖËã·¨¶ÔÓÚÔö¼Ó»º´æÊý¾Ý£¬ºÍ»º´æ½ÚµãµÄ¿ªÏúÏà¶Ô±È½ÏС¡£
5.1.3. Range Based Ëã·¨
ÕâÖÖ·½Ê½Êǰ´ÕչؼüÖµ£¨ÀýÈç ID£©½«Êý¾Ý»®·Ö³É²»Í¬µÄÇø¼ä£¬Ã¿¸ö»º´æ½Úµã¸ºÔðÒ»¸ö»òÕß¶à¸öÇø¼ä¡£¸úÒ»ÖÂÐÔ¹þÏ£ÓеãÏñ¡£
ÀýÈ磺´æÔÚÈý¸ö»º´æ½Úµã·Ö±ðÊÇ N1£¬N2£¬N3¡£ËûÃÇÓÃÀ´´æ·ÅÊý¾ÝµÄÇø¼ä·Ö±ðÊÇ£¬N1(0, 100]£¬
N2(100, 200]£¬ N3(300, 400]¡£
ÄÇôÊý¾Ý¸ù¾Ý×Ô¼º ID ×÷Ϊ¹Ø¼ü×Ö×ö Hash ÒÔºóµÄ½á¹û¾Í»á·Ö±ð¶ÔÓ¦·Åµ½Õ⼸¸öÇøÓòÀïÃæÁË¡£
5.2. ¿ÉÓÃÐÔ
¸ù¾ÝÊÂÎïµÄÁ½ÃæÐÔ£¬ÔÚ·Ö²¼Ê½»º´æ´øÀ´¸ßÐÔÄܵÄͬʱ£¬ÎÒÃÇÒ²ÐèÒªÖØÊÓËüµÄ¿ÉÓÃÐÔ¡£ÄÇôÄÄЩDZÔڵķçÏÕÊÇÎÒÃÇÐèÒª·À·¶µÄÄØ£¿
5.2.1. »º´æÑ©±À
µ±»º´æÊ§Ð§£¬»º´æ¹ýÆÚ±»Çå³ý£¬»º´æ¸üеÄʱºò¡£ÇëÇóÊÇÎÞ·¨ÃüÖлº´æµÄ£¬Õâ¸öʱºòÇëÇó»áÖ±½Ó»ØÔ´µ½Êý¾Ý¿â¡£
Èç¹ûÉÏÊöÇé¿öƵ·±·¢Éú»òÕßͬʱ·¢ÉúµÄʱºò£¬¾Í»áÔì³É´óÃæ»ýµÄÇëÇóÖ±½Óµ½Êý¾Ý¿â£¬Ôì³ÉÊý¾Ý¿â·ÃÎÊÆ¿¾±¡£ÎÒÃdzÆÕâÖÖÇé¿öΪ»º´æÑ©±À¡£
´ÓÈçÏÂÁ½·½ÃæÀ´Ë¼¿¼½â¾ö·½°¸£º
»º´æ·½Ã棺
±ÜÃ⻺´æÍ¬Ê±Ê§Ð§£¬²»Í¬µÄ key ÉèÖò»Í¬µÄ³¬Ê±Ê±¼ä¡£
Ôö¼Ó»¥³âËø£¬¶Ô»º´æµÄ¸üвÙ×÷½øÐмÓËø±£»¤£¬±£Ö¤Ö»ÓÐÒ»¸öÏ߳̽øÐлº´æ¸üС£»º´æÒ»µ©Ê§Ð§¿ÉÒÔͨ¹ý»º´æ¿ìÕյķ½Ê½Ñ¸ËÙÖØ½¨»º´æ¡£¶Ô»º´æ½ÚµãÔö¼ÓÖ÷±¸»úÖÆ£¬µ±Ö÷»º´æÊ§Ð§ÒÔºóÇл»µ½±¸Óûº´æ¼ÌÐø¹¤×÷¡£
Éè¼Æ·½Ã棬ÕâÀï¸ø³öÁ˼¸µã½¨Ò鹩´ó¼Ò²Î¿¼£º
ÈÛ¶Ï»úÖÆ£ºÄ³¸ö»º´æ½Úµã²»Äܹ¤×÷µÄʱºò£¬ÐèҪ֪ͨ»º´æ´úÀí²»Òª°ÑÇëÇó·Óɵ½¸Ã½Úµã£¬¼õÉÙÓû§µÈ´ýºÍÇëÇóʱ³¤¡£
ÏÞÁ÷»úÖÆ£ºÔÚ½ÓÈë²ãºÍ´úÀí²ã¿ÉÒÔ×öÏÞÁ÷£¬µ±»º´æ·þÎñÎÞ·¨Ö§³Ö¸ß²¢·¢µÄʱºò£¬Ç°¶Ë¿ÉÒÔ°ÑÎÞ·¨ÏìÓ¦µÄÇëÇó·ÅÈëµ½¶ÓÁлòÕß¶ªÆú¡£
¸ôÀë»úÖÆ£º»º´æÎÞ·¨Ìṩ·þÎñ»òÕßÕýÔÚÔ¤ÈÈÖØ½¨µÄʱºò£¬°Ñ¸ÃÇëÇó·ÅÈë¶ÓÁÐÖУ¬ÕâÑù¸ÃÇëÇóÒòΪ±»¸ôÀë¾Í²»»á±»Â·Óɵ½ÆäËûµÄ»º´æ½Úµã¡£
Èç´Ë¾Í²»»áÒòΪÕâ¸ö½ÚµãµÄÎÊÌâÓ°Ïìµ½ÆäËû½Úµã¡£µ±»º´æÖؽ¨ÒÔºó£¬ÔÙ´Ó¶ÓÁÐÖÐÈ¡³öÇëÇóÒÀ´Î´¦Àí¡£
5.2.2. »º´æ´©Í¸
»º´æÒ»°ãÊÇ Key£¬Value ·½Ê½´æÔÚ£¬Ò»¸ö Key ¶ÔÓ¦µÄ Value ²»´æÔÚʱ£¬ÇëÇó»á»ØÔ´µ½Êý¾Ý¿â¡£
¼ÙÈç¶ÔÓ¦µÄ Value Ò»Ö±²»´æÔÚ£¬Ôò»áƵ·±µÄÇëÇóÊý¾Ý¿â£¬¶ÔÊý¾Ý¿âÔì³É·ÃÎÊѹÁ¦¡£Èç¹ûÓÐÈËÀûÓÃÕâ¸ö©¶´¹¥»÷£¬¾ÍÂé·³ÁË¡£
½â¾ö·½·¨£ºÈç¹ûÒ»¸ö Key ¶ÔÓ¦µÄ Value ²éѯ·µ»ØÎª¿Õ£¬ÎÒÃÇÈÔÈ»°ÑÕâ¸ö¿Õ½á¹û»º´æÆðÀ´£¬Èç¹ûÕâ¸öֵûÓб仯Ï´βéѯ¾Í²»»áÇëÇóÊý¾Ý¿âÁË¡£
½«ËùÓпÉÄÜ´æÔÚµÄÊý¾Ý¹þÏ£µ½Ò»¸ö×ã¹»´óµÄ Bitmap ÖУ¬ÄÇô²»´æÔÚµÄÊý¾Ý»á±»Õâ¸ö Bitmap
¹ýÂËÆ÷À¹½Øµô£¬±ÜÃâ¶ÔÊý¾Ý¿âµÄ²éѯѹÁ¦¡£
5.2.3. »º´æ»÷´©
ÔÚÊý¾ÝÇëÇóµÄʱºò£¬Ä³Ò»¸ö»º´æ¸ÕºÃʧЧ»òÕßÕýÔÚдÈ뻺´æ£¬Í¬Ê±Õâ¸ö»º´æÊý¾Ý¿ÉÄÜ»áÔÚÕâ¸öʱ¼äµã±»³¬¸ß²¢·¢ÇëÇ󣬳ÉΪ¡°Èȵ㡱Êý¾Ý¡£
Õâ¾ÍÊÇ»º´æ»÷´©ÎÊÌ⣬Õâ¸öºÍ»º´æÑ©±ÀµÄÇø±ðÔÚÓÚ£¬ÕâÀïÊÇÕë¶Ôijһ¸ö»º´æ£¬Ç°ÕßÊÇÕë¶Ô¶à¸ö»º´æ¡£
½â¾ö·½°¸£ºµ¼ÖÂÎÊÌâµÄÔÒòÊÇÔÚͬһʱ¼ä¶Á/д»º´æ£¬ËùÒÔÖ»Óб£Ö¤Í¬Ò»Ê±¼äÖ»ÓÐÒ»¸öÏß³Ìд£¬Ð´Íê³ÉÒÔºó£¬ÆäËûµÄÇëÇóÔÙʹÓûº´æ¾Í¿ÉÒÔÁË¡£
±È½Ï³£ÓõÄ×ö·¨ÊÇʹÓà mutex£¨»¥³âËø£©¡£ÔÚ»º´æÊ§Ð§µÄʱºò£¬²»ÊÇÁ¢¼´Ð´È뻺´æ£¬¶øÊÇÏÈÉèÖÃÒ»¸ö mutex£¨»¥³âËø£©¡£µ±»º´æ±»Ð´ÈëÍê³ÉÒÔºó£¬ÔÙ·Å¿ªÕâ¸öËøÈÃÇëÇó½øÐзÃÎÊ¡£
С½á
×ܽáһϣ¬»º´æÉè¼ÆÓÐÎå´ó²ßÂÔ£¬´ÓÓû§ÇëÇó¿ªÊ¼ÒÀ´ÎÊÇ£º
HTTP »º´æ
CDN »º´æ
¸ºÔؾùºâ»º´æ
½ø³ÌÄÚ»º´æ
·Ö²¼Ê½»º´æ
ÆäÖУ¬Ç°Á½ÖÖ»º´æ¾²Ì¬Êý¾Ý£¬ºóÈýÖÖ»º´æ¶¯Ì¬Êý¾Ý£º
HTTP »º´æ°üÀ¨Ç¿ÖÆ»º´æºÍ¶Ô±È»º´æ¡£
CDN »º´æºÍ HTTP »º´æÊǺô¡£
¸ºÔؾùºâÆ÷»º´æÏà¶ÔÎȶ¨×ÊÔ´£¬ÐèÒª·þÎñÐÖú¹¤×÷¡£
½ø³ÌÄÚ»º´æ£¬Ð§Âʸߣ¬µ«ÈÝÁ¿ÓÐÏÞÖÆ£¬ÓÐÁ½¸ö·½°¸¿ÉÒÔÓ¦¶Ô»º´æÍ¬²½µÄÎÊÌâ¡£
·Ö²¼Ê½»º´æÈÝÁ¿´ó£¬ÄÜÁ¦Ç¿£¬ÀμÇÈý¸öÐÔÄÜËã·¨²¢ÇÒ·À·¶Èý¸ö»º´æ·çÏÕ¡£
´óÁ÷Á¿Ï¶༶»º´æÉè¼Æ
ʲôÊǶ༶»º´æ
Ëùν¶à¼¶»º´æ£¬¼´ÔÚÕû¸öϵͳ¼Ü¹¹µÄ²»Í¬ÏµÍ³²ã¼¶½øÐÐÊý¾Ý»º´æ£¬ÒÔÌáÉý·ÃÎÊЧÂÊ£¬ÕâÒ²ÊÇÓ¦ÓÃ×î¹ãµÄ·½°¸Ö®Ò»¡£ÎÒÃÇÓ¦ÓõÄÕûÌå¼Ü¹¹Èçͼ1Ëùʾ£º

ͼ1 ¶à¼¶»º´æ·½°¸
ÕûÌåÁ÷³ÌÈçÉÏͼËùʾ£º
1£©Ê×ÏȽÓÈëNginx½«ÇëÇó¸ºÔؾùºâµ½Ó¦ÓÃNginx£¬´Ë´¦³£ÓõĸºÔؾùºâËã·¨ÊÇÂÖѯ»òÕßÒ»ÖÂÐÔ¹þÏ££¬ÂÖѯ¿ÉÒÔʹ·þÎñÆ÷µÄÇëÇó¸ü¼Ó¾ùºâ£¬¶øÒ»ÖÂÐÔ¹þÏ£¿ÉÒÔÌáÉýÓ¦ÓÃNginxµÄ»º´æÃüÖÐÂÊ£¬Ïà¶ÔÓÚÂÖѯ£¬Ò»ÖÂÐÔ¹þÏ£»á´æÔÚµ¥»úÈȵãÎÊÌ⣬һÖÖ½â¾ö°ì·¨ÊÇÈȵãÖ±½ÓÍÆË͵½½ÓÈë²ãNginx£¬Ò»ÖÖ°ì·¨ÊÇÉèÖÃÒ»¸ö·§Öµ£¬µ±³¬¹ý·§Öµ£¬¸ÄΪÂÖѯËã·¨¡£
2£©½Ó×ÅÓ¦ÓÃNginx¶ÁÈ¡±¾µØ»º´æ£¨±¾µØ»º´æ¿ÉÒÔʹÓÃLua Shared Dict¡¢Nginx Proxy
Cache£¨´ÅÅÌ/Äڴ棩¡¢Local RedisʵÏÖ£©£¬Èç¹û±¾µØ»º´æÃüÖÐÔòÖ±½Ó·µ»Ø£¬Ê¹ÓÃÓ¦ÓÃNginx±¾µØ»º´æ¿ÉÒÔÌáÉýÕûÌåµÄÍÌÍÂÁ¿£¬½µµÍºó¶ËµÄѹÁ¦£¬ÓÈÆäÓ¦¶ÔÈȵãÎÊÌâ·Ç³£ÓÐЧ¡£
3£©Èç¹ûNginx±¾µØ»º´æÃ»ÃüÖУ¬Ôò»á¶ÁÈ¡ÏàÓ¦µÄ·Ö²¼Ê½»º´æ£¨ÈçRedis»º´æ£¬ÁíÍâ¿ÉÒÔ¿¼ÂÇʹÓÃÖ÷´Ó¼Ü¹¹À´ÌáÉýÐÔÄܺÍÍÌÍÂÁ¿£©£¬Èç¹û·Ö²¼Ê½»º´æÃüÖÐÔòÖ±½Ó·µ»ØÏàÓ¦Êý¾Ý£¨²¢»ØÐ´µ½Nginx±¾µØ»º´æ£©¡£
4£©Èç¹û·Ö²¼Ê½»º´æÒ²Ã»ÓÐÃüÖУ¬Ôò»á»ØÔ´µ½Tomcat¼¯Èº£¬ÔÚ»ØÔ´µ½Tomcat¼¯ÈºÊ±Ò²¿ÉÒÔʹÓÃÂÖѯºÍÒ»ÖÂÐÔ¹þÏ£×÷Ϊ¸ºÔؾùºâËã·¨¡£
5£©ÔÚTomcatÓ¦ÓÃÖУ¬Ê×ÏȶÁÈ¡±¾µØ¶Ñ»º´æ£¬Èç¹ûÓÐÔòÖ±½Ó·µ»Ø£¨²¢»áдµ½Ö÷Redis¼¯Èº£©£¬ÎªÊ²Ã´Òª¼ÓÒ»²ã±¾µØ¶Ñ»º´æ½«ÔÚ»º´æ±ÀÀ£Óë¿ìËÙÐÞ¸´²¿·ÖϸÁÄ¡£
6£©×÷Ϊ¿ÉÑ¡²¿·Ö£¬Èç¹û²½Öè4ûÓÐÃüÖпÉÒÔÔÙ³¢ÊÔÒ»´Î¶ÁÖ÷Redis¼¯Èº²Ù×÷¡£Ä¿µÄÊÇ·ÀÖ¹µ±´ÓÓÐÎÊÌâʱµÄÁ÷Á¿³å»÷¡£
7£©Èç¹ûËùÓлº´æ¶¼Ã»ÓÐÃüÖÐÖ»ÄܲéѯDB»òÏà¹Ø·þÎñ»ñÈ¡Ïà¹ØÊý¾Ý²¢·µ»Ø¡£
8£©²½Öè7·µ»ØµÄÊý¾ÝÒ첽дµ½Ö÷Redis¼¯Èº£¬´Ë´¦¿ÉÄܶà¸öTomcatʵÀýͬʱдÖ÷Redis¼¯Èº£¬¿ÉÄÜÔì³ÉÊý¾Ý´íÂÒ£¬ÈçºÎ½â¾ö¸ÃÎÊÌ⽫ÔÚ¸üлº´æÓëÔ×ÓÐÔ²¿·ÖϸÁÄ¡£
Ó¦ÓÃÕûÌå·ÖÁËÈý²¿·Ö»º´æ£ºÓ¦ÓÃNginx±¾µØ»º´æ¡¢·Ö²¼Ê½»º´æ¡¢Tomcat¶Ñ»º´æ£¬Ã¿Ò»²ã»º´æ¶¼ÓÃÀ´½â¾öÏà¹ØµÄÎÊÌ⣬ÈçÓ¦ÓÃNginx±¾µØ»º´æÓÃÀ´½â¾öÈȵ㻺´æÎÊÌ⣬·Ö²¼Ê½»º´æÓÃÀ´¼õÉÙ·ÃÎÊ»ØÔ´ÂÊ¡¢Tomcat¶Ñ»º´æÓÃÓÚ·ÀÖ¹Ïà¹Ø»º´æÊ§Ð§/±ÀÀ£Ö®ºóµÄ³å»÷¡£
ËäÈ»¾ÍÊǼӻº´æ£¬µ«ÊÇÔõô¼Ó£¬ÔõôÓÃϸÏëÏÂÀ´»¹ÊÇÓкܶàÎÊÌâÐèҪȨºâºÍ¿¼Á¿µÄ£¬½ÓÏÂÀ´²¿·ÖÎÒÃǾÍÏêϸÀ´ÌÖÂÛһЩ»º´æÏà¹ØµÄÎÊÌâ¡£
ÈçºÎ»º´æÊý¾Ý
½ÓÏÂÀ´²¿½«´Ó»º´æ¹ýÆÚ¡¢Î¬¶È»¯»º´æ¡¢ÔöÁ¿»º´æ¡¢´óValue»º´æ¡¢Èȵ㻺´æ¼¸¸ö·½ÃæÀ´Ïêϸ½éÉÜÈçºÎ»º´æÊý¾Ý¡£
¹ýÆÚÓë²»¹ýÆÚ
¶ÔÓÚ»º´æµÄÊý¾ÝÎÒÃÇ¿ÉÒÔ¿¼ÂDz»¹ýÆÚ»º´æºÍ´ø¹ýÆÚʱ¼ä»º´æ£¬Ê²Ã´³¡¾°Ó¦¸ÃÑ¡ÔñÄÄÖÖģʽÐèÒª¸ù¾ÝÒµÎñºÍÊý¾ÝÁ¿µÈÒòËØÀ´¾ö¶¨¡£
²»¹ýÆÚ»º´æ³¡¾°Ò»°ã˼·Èçͼ2Ëùʾ£º

ͼ2²»¹ýÆÚ»º´æ·½°¸
ʹÓÃCache-Asideģʽ£¬Ê×ÏÈдÊý¾Ý¿â£¬Èç¹û³É¹¦£¬Ôòд»º´æ¡£ÕâÖÖ³¡¾°Ï´æÔÚÊÂÎñ³É¹¦¡¢»º´æÐ´Ê§°Üµ«ÎÞ·¨»Ø¹öÊÂÎñµÄÇé¿ö¡£ÁíÍ⣬²»Òª°Ñд»º´æ·ÅÔÚÊÂÎñÖУ¬ÓÈÆäд·Ö²¼Ê½»º´æ£¬ÒòÎªÍøÂç¶¶¶¯¿ÉÄܵ¼ÖÂд»º´æÏìӦʱ¼äºÜÂý£¬ÒýÆðÊý¾Ý¿âÊÂÎñ×èÈû¡£Èç¹û¶Ô»º´æÊý¾ÝÒ»ÖÂÐÔÒªÇó²»ÊÇÄÇô¸ß£¬Êý¾ÝÁ¿Ò²²»ÊǺܴó£¬Ôò¿ÉÒÔ¿¼ÂǶ¨ÆÚÈ«Á¿Í¬²½»º´æ¡£
Ò²ÓÐÌáµ½ÈçÏÂ˼·£ºÏÈɾ»º´æ£¬È»ºóÖ´ÐÐÊý¾Ý¿âÊÂÎñ£»²»¹ýÕâÖÖ²Ù×÷¶ÔÓÚÈçÉÌÆ·ÕâÖÖ²éѯ·Ç³£Æµ·±µÄÒµÎñ²»ÊÊÓã¬ÒòΪÔÚÄãɾ»º´æµÄͬʱ£¬ÒѾÓÐÁíÒ»¸öϵͳÀ´¶Á»º´æÁË£¬´ËʱÊÂÎñ»¹Ã»ÓÐÌá½»¡£µ±È»¶ÔÓÚÈçÓû§Î¬¶ÈµÄÒµÎñÊÇ¿ÉÒÔ¿¼Âǵġ£
²»¹ýΪÁ˸üºÃµØ½â¾öÒÔÉ϶à¸öÊÂÎñµÄÎÊÌ⣬¿ÉÒÔ¿¼ÂÇʹÓö©ÔÄÊý¾Ý¿âÈÕÖ¾µÄ¼Ü¹¹£¬ÈçʹÓÃcanal¶©ÔÄmysqlµÄbinlogʵÏÖ»º´æÍ¬²½¡£
¶ÔÓÚ³¤Î²·ÃÎʵÄÊý¾Ý¡¢´ó¶àÊýÊý¾Ý·ÃÎÊÆµÂʶ¼ºÜ¸ßµÄ³¡¾°¡¢»º´æ¿Õ¼ä×ã¹»¶¼¿ÉÒÔ¿¼ÂDz»¹ýÆÚ»º´æ£¬±ÈÈçÓû§¡¢·ÖÀà¡¢ÉÌÆ·¡¢¼Û¸ñ¡¢¶©µ¥µÈ£¬µ±»º´æÂúÁË¿ÉÒÔ¿¼ÂÇLRU»úÖÆÇýÖðÀϵĻº´æÊý¾Ý¡£
1. ¹ýÆÚ»º´æ»úÖÆ
¼´²ÉÓÃÀÁ¼ÓÔØ£¬Ò»°ãÓÃÓÚ»º´æ±ðµÄϵͳµÄÊý¾Ý£¨ÎÞ·¨¶©Ôıä¸üÏûÏ¢¡¢»òÕ߳ɱ¾ºÜ¸ß£©¡¢»º´æ¿Õ¼äÓÐÏÞ¡¢µÍƵÈȵ㻺´æµÈ³¡¾°£»³£¼û²½ÖèÊÇ£ºÊ×ÏȶÁÈ¡»º´æÈç¹û²»ÃüÖÐÔò²éѯÊý¾Ý£¬È»ºóÒ첽дÈ뻺´æ²¢¹ýÆÚ»º´æ£¬ÉèÖùýÆÚʱ¼ä£¬Ï´ζÁÈ¡½«ÃüÖлº´æ¡£ÈȵãÊý¾Ý¾³£Ê¹Óü´ÔÚÓ¦ÓÃϵͳÉÏ»º´æ±È½Ï¶ÌµÄʱ¼ä¡£ÕâÖÖ»º´æ¿ÉÄÜ´æÔÚÒ»¶Îʱ¼äµÄÊý¾Ý²»Ò»ÖÂÇé¿ö£¬ÐèÒª¸ù¾Ý³¡¾°À´¾ö¶¨ÈçºÎÉèÖùýÆÚʱ¼ä¡£Èç¿â´æÊý¾Ý¿ÉÒÔÔÚǰ¶ËÓ¦ÓÃÉÏ»º´æ¼¸ÃëÖÓ£¬¶Ìʱ¼äµÄ²»Ò»ÖÂʱ¿ÉÒÔÈÌÊܵġ£
2. ά¶È»¯»º´æÓëÔöÁ¿»º´æ
¶ÔÓÚµçÉÌϵͳ£¬Ò»¸öÉÌÆ·¿ÉÄܲð³ÉÈç»ù´¡ÊôÐÔ¡¢Í¼Æ¬ÁÐ±í¡¢ÉÏϼܡ¢¹æ¸ñ²ÎÊý¡¢ÉÌÆ·½éÉܵȣ»Èç¹ûÉÌÆ·±ä¸üÁËÒª°ÑÕâЩÊý¾Ý¶¼¸üÐÂÒ»±éÄÇôÕû¸ö¸üгɱ¾ºÜ¸ß£º½Ó¿Úµ÷ÓÃÁ¿ºÍ´ø¿í£»Òò´Ë×îºÃ½«Êý¾Ý½øÐÐά¶È»¯²¢ÔöÁ¿¸üУ¨Ö»¸üбäµÄ²¿·Ö£©¡£ÓÈÆäÈçÉÏϼÜÕâÖÖÖ»ÊÇÒ»¸ö״̬±ä¸ü£¬µ«ÊÇÿÌìÆµ·±µ÷Óõģ¬Î¬¶È»¯ºóÄܼõÉÙ·þÎñºÜ´óµÄѹÁ¦¡£

ͼ3 ά¶È»¯»º´æ·½°¸
°´ÕÕ²»Í¬Î¬¶È½ÓÊÕMQ½øÐиüС£
3. ´óValue »º´æ
Òª¾¯Ì軺´æÖеĴóValue£¬ÓÈÆäÊÇʹÓÃRedisʱ¡£Óöµ½ÕâÖÖÇé¿öʱ¿ÉÒÔ¿¼ÂÇʹÓöàÏß³ÌʵÏֵĻº´æ£¬ÈçMemcached£¬À´»º´æ´óValue£»»òÕß¶ÔValue½øÐÐѹËõ£»»òÕß½«Value²ð·ÖΪ¶à¸öСValue£¬¿Í»§¶ËÔÙ½øÐвéѯ¡¢¾ÛºÏ¡£
4. Èȵ㻺´æ
¶ÔÓÚÄÇЩ·ÃÎʷdz£Æµ·±µÄÈȵ㻺´æ£¬Èç¹ûÿ´Î¶¼È¥Ô¶³Ì»º´æÏµÍ³ÖлñÈ¡£¬¿ÉÄÜ»áÒòΪ·ÃÎÊÁ¿Ì«´óµ¼ÖÂÔ¶³Ì»º´æÏµÍ³ÇëÇó¹ý¶à¡¢¸ºÔعý¸ß»òÕß´ø¿í¹ý¸ßµÈÎÊÌ⣬×îÖÕ¿ÉÄܵ¼Ö»º´æÏìÓ¦Âý£¬Ê¹¿Í»§¶ËÇëÇó³¬Ê±¡£Ò»ÖÖ½â¾ö·½°¸ÊÇͨ¹ý¹Ò¸ü¶àµÄ´Ó»º´æ£¬¿Í»§¶Ëͨ¹ý¸ºÔؾùºâ»úÖÆ¶ÁÈ¡´Ó»º´æÏµÍ³Êý¾Ý¡£²»¹ýÒ²¿ÉÒÔÔÚ¿Í»§¶ËËùÔÚµÄÓ¦ÓÃ/
´úÀí²ã±¾µØ´æ´¢Ò»·Ý£¬´Ó¶ø±ÜÃâ·ÃÎÊÔ¶³Ì»º´æ£¬¼´Ê¹Ïñ¿â´æÕâÖÖÊý¾Ý£¬ÔÚÓÐЩӦÓÃϵͳÖÐÒ²¿ÉÒÔ½øÐм¸ÃëÖӵı¾µØ»º´æ£¬´Ó¶ø½µµÍÔ¶³ÌϵͳµÄѹÁ¦¡£
ǧÍò¼¶²¢·¢£¡ÈçºÎÉè¼ÆÒ»¸ö¶à¼¶»º´æÏµÍ³£¿
Ê×ÏÈÎÒÃÇÐèÒªÃ÷°×£¬Ê²Ã´ÊÇÒ»¸ö¶à¼¶»º´æÏµÍ³£¬ËüÓÐʲôÓá£Ëùν¶à¼¶»º´æÏµÍ³£¬¾ÍÊÇÖ¸ÔÚÒ»¸öϵͳ µÄ²»Í¬µÄ¼Ü¹¹²ã¼¶½øÐÐÊý¾Ý»º´æ£¬ÒÔÌáÉý·ÃÎÊЧÂÊ¡£
ÎÒÃǶ¼ÖªµÀ£¬Ò»¸ö»º´æÏµÍ³£¬ËüÃæÁÙ×ÅÐí¶àÎÊÌ⣬±ÈÈ绺´æ»÷´©£¬»º´æ´©Í¸£¬»º´æÑ©±À£¬»º´æÈȵãµÈµÈÎÊÌ⣬ÄÇô£¬¶ÔÓÚÒ»¸ö¶à¼¶»º´æÏµÍ³£¬ËüÓÐʲôÎÊÌâÄØ£¿
»º´æÈȵ㣺¶à¼¶»º´æÏµÍ³´ó¶àÓ¦ÓÃÔڸ߲¢·¢³¡¾°Ï£¬ËùÒÔÎÒÃÇÐèÒª½â¾öÈȵãKeyÎÊÌ⣬ÈçºÎ̽²âÈȵãkey£¿
Êý¾ÝÒ»ÖÂÐÔ£º¸÷²ã»º´æÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔÎÊÌ⣬ÈçÓ¦Óò㻺´æºÍ·Ö²¼Ê½»º´æÖ®Ç°µÄÊý¾ÝÒ»ÖÂÐÔÎÊÌâ¡£
»º´æ¹ýÆÚ£º»º´æÊý¾Ý¿ÉÒÔ·ÖΪÁ½´óÀ࣬¹ýÆÚ»º´æºÍ²»¹ýÆÚ»º´æ£¿ÈçºÎÉè¼Æ£¬ÈçºÎÉè¼Æ¹ýÆÚ»º´æ£¿
ÔÚÕâ֮ǰ£¬ÎÒÃÇÏÈ¿´¿´Ò»¸ö¼òµ¥µÄ¶à¼¶»º´æÏµÍ³µÄ¼Ü¹¹Í¼£º

Õû¸ö¶à¼¶»º´æÏµÍ³±»·ÖΪÈý²ã£¬Ó¦Óòãnginx»º´æ£¬·Ö²¼Ê½redis»º´æ¼¯Èº£¬tomcat¶ÑÄÚ»º´æ¡£Õû¸ö¼Ü¹¹Á÷³ÌÈçÏ£º
µ±½ÓÊÕµ½Ò»¸öÇëÇóʱ£¬Ê×ÏÈ»á·Ö·¢µ½nginx¼¯ÈºÖУ¬ÕâÀï¿ÉÒÔ²ÉÓÃnginxµÄ¸ºÔؾùºâËã·¨·Ö·¢¸øÄ³Ò»Ì¨»úÆ÷£¬Ê¹ÓÃÂÖѯ¿ÉÒÔ½µµÍ¸ºÔØ£¬»òÕß²ÉÓÃÒ»ÖÂÐÔhashËã·¨À´ÌáÉý»º´æÃüÖÐÂÊ¡£
µ±nginx²ãûÓлº´æÊý¾Ýʱ£¬»á¼ÌÐøÏòÏÂÇëÇó£¬ÔÚ·Ö²¼Ê½»º´æ¼¯ÈºÖвéÕÒÊý¾Ý£¬Èç¹û»º´æÃüÖУ¬Ö±½Ó·µ»Ø£¨²¢ÇÒдÈënginxÓ¦Óûº´æÖУ©£¬Èç¹ûδÃüÖУ¬Ôò»ØÔ´µ½tomcat¼¯ÈºÖвéѯ¶ÑÄÚ»º´æ¡£
ÔÚ·Ö²¼Ê½»º´æÖвéѯ²»µ½Êý¾Ý£¬½«»áÈ¥tomcat¼¯ÈºÖвéѯ¶ÑÄÚ»º´æ£¬²éѯ³É¹¦Ö±½Ó·µ»Ø£¨²¢Ð´Èë·ÖredisÖ÷¼¯ÈºÖУ©£¬²éѯʧ°ÜÇëÇóÊý¾Ý¿â£»¶ÑÄÚ»º´æ¡£
Èç¹ûÒÔÉÏ»º´æÖж¼Ã»ÓÐÃüÖУ¬ÔòÖ±½ÓÇëÇóÊý¾Ý¿â£¬·µ»Ø½á¹û£¬Í¬²½Êý¾Ýµ½·Ö²¼Ê½»º´æÖС£
ÔÚ¼òµ¥Á˽âÁ˶༶»º´æµÄ»ù±¾¼Ü¹¹Ö®ºó£¬ÎÒÃǾ͸Ã˼¿¼ÈçºÎ½â¾öÉÏÃæÌáµ½µÄһϵÁÐÎÊÌâ¡£
»º´æÈȵã
»º´æÈȵ㣬ÊÇÒ»¸öºÜ³£¼ûµÄÎÊÌ⣬±ÈÈ硰ijijÃ÷ÐÇÐû²¼½á»é¡±µÈµÈ£¬¶¼¿ÉÄܲúÉú´óÁ¿ÇëÇó·ÃÎʵÄÎÊÌ⣬һ¸ö×îÂé·³Ò²ÊÇ×îÈÝÒ×ÈÃÈ˺öÊÓµÄÊÂÇé¾ÍÊÇÈçºÎ̽²âµ½Èȵãkey£¬ÔÚ»º´æÏµÍ³ÖУ¬³ýÁËһЩ³£ÓõÄÈȵãkeyÍ⣬ÔÚÄ³Ð©ÌØÊⳡºÏÏÂÒ²»á³öÏÖ´óÁ¿µÄÈȵãkey£¬ÎÒÃǸÃÈçºÎ·¢ÏÖÄØ£¿ÓÐÒÔϲßÂÔ£º
Êý¾Ýµ÷ÑС£¿ÉÒÔ·ÖÎöÀúÊ·Êý¾ÝÒÔ¼°Õë¶Ô²»Í¬µÄ³¡ºÏÈ¥Ô¤²â³öÈȵãkey£¬ÕâÖÖ·½Ê½ËäÈ»²»ÄܰٷְÙʹµÃ»º´æÃüÖУ¬µ«ÊÇÈ´ÊÇÒ»ÖÖ×î¼òµ¥ºÍ½ÚÊ¡³É±¾µÄ·½°¸¡£
ʵʱ¼ÆËã¡£¿ÉÒÔʹÓÃÏÖÓеÄʵʱ¼ÆËã¿ò¼Ü£¬±ÈÈçstorm¡¢spark streaming¡¢flinkµÈ¿ò¼Üͳ¼ÆÒ»¸öʱ¼ä¶ÎÄÚµÄÇëÇóÁ¿£¬´Ó¶øÅжÏÈȵãkey¡£»òÕßÒ²¿ÉÒÔ×Ô¼ºÊµÏÖ¶¨Ê±ÈÎÎñȥͳ¼ÆÇëÇóÁ¿¡£
ÕâÀïÎÒÃÇ×ÅÖØÌÖÂÛһϵڶþÖÖ½â¾ö·½°¸£¬¶ÔÓÚÈȵãkeyÎÊÌ⣬µ±»º´æÏµÍ³ÖÐûÓз¢ÏÖ»º´æÊ±£¬ÐèҪȥÊý¾Ý¿âÖжÁÈ¡Êý¾Ý£¬µ±´óÁ¿ÇëÇóÀ´µÄʱºò£¬Ò»¸öÇëÇó»ñÈ¡ËøÈ¥ÇëÇóÊý¾Ý¿â£¬ÆäËû×èÈû£¬½Ó×ÅÈ«²¿È¥·ÃÎÊ»º´æ£¬ÕâÑù¿ÉÄÜÒòΪһ̨·þÎñÆ÷³Å²»×¡´Ó¶øå´»ú£¬±ÈÈçÕý³£Ò»Ì¨·þÎñÆ÷²¢·¢Á¿Îª5w×óÓÒ£¬²úÉúÈȵãkeyµÄʱºò´ïµ½ÁË10wÉõÖÁ20w£¬ÕâÑù·þÎñÆ÷¿Ï¶¨»á±À¡£ËùÒÔÎÒÃÇÔÚ·¢ÏÖÈȵãkeyÖ®ºó»¹ÐèÒª×öµ½ÈçºÎ×Ô¶¯¸ºÔؾùºâ¡£
½áºÏÒÔÉÏÎÊÌâÎÒÃÇÖØÐÂÉè¼Æ¼Ü¹¹£¬ÈçÏÂͼËùʾ£º

ÎÒÃǽ«Õû¸öÓ¦Óüܹ¹·ÖΪӦÓò㣬·Ö²¼Ê½»º´æ¡¢ÏµÍ³²ãÒÔ¼°Êý¾Ý²ã¡£
ÔÚÓ¦Óò㣬ÎÒÃDzÉÓÃnginx¼¯Èº£¬²¢ÇÒ¶Ô½Óʵʱ¼ÆËãÁ´Â·£¬Í¨¹ýflume¼à¿ØnginxÈÕÖ¾£¬½«Êý¾Ý´«Êäµ½kafka¼¯ÈºÖУ¬È»ºóflink¼¯ÈºÏû·ÑÊý¾Ý½øÐÐͳ¼Æ£¬Èç¹ûͳ¼Æ
½á¹ûΪÈȵãkey£¬Ôò½«Êý¾ÝдÈëzookeeperµÄ½ÚµãÖУ¬¶øÓ¦ÓÃϵͳͨ¹ý¼à¿Øznode½Úµã£¬¶ÁÈ¡ÈȵãkeyÊý¾Ý£¬È¥Êý¾Ý¿âÖмÓÔØÊý¾Ýµ½»º´æÖв¢ÇÒ×öµ½¸ºÔؾùºâ¡£
ʵ¼ÊÉÏ£¬¶ÔÓÚÓ¦ÓÃϵͳÖеÄÿһ̨·þÎñÆ÷£¬»¹ÐèÒªÒ»²ã·À»¤»úÖÆ£¬ÏÞÁ÷ÈÛ¶Ï£¬ÕâÑù×öµÄÄ¿µÄÊÇΪÁË·ÀÖ¹µ¥Ì¨»úÆ÷ÇëÇóÁ¿¹ý¸ß£¬Ê¹µÃ·þÎñÆ÷¸ºÔعý¸ß£¬²»ÖÁÓÚ·þÎñÆ÷å´»ú»òÕß´óÁ¿ÇëÇó·ÃÎÊÊý¾Ý¿â¡£¼òµ¥Ë¼Â·¾ÍÊÇΪÿһ̨·þÎñÆ÷Éè¼ÆÒ»¸ö·§Öµ£¬µ±ÇëÇóÁ¿´óÓÚ¸ÃÖµ¾ÍÖ±½Ó·µ»ØÓû§¿Õ°×Ò³Ãæ»òÕßÌáʾÓû§¼¸ÃëºóË¢ÐÂÖØÐ·ÃÎÊ¡£
Êý¾ÝÒ»ÖÂÐÔ
Êý¾ÝÒ»ÖÂÐÔÎÊÌâÖ÷ÒªÌåÏÖÔÚ»º´æ¸üеÄʱºò£¬ÈçºÎ¸üлº´æ£¬±£Ö¤Êý¾Ý¿âÓ뻺´æÒÔ¼°¸÷²ã»º´æ²ãÖ®¼äµÄÒ»ÖÂÐÔ¡£
¶ÔÓÚ»º´æ¸üÐÂÎÊÌ⣬ÏÈд»º´æ»¹ÊÇÏÈдÊý¾Ý¿â£¬ÕâÀïÊ¡ÂÔÈô¸É×Ö¡£Ö®Ç°µÄÎÄÕ½éÉܹý£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ·ÔÄ¡£
ÔÚµ¥²ã»º´æÏµÍ³ÖУ¬ÎÒÃÇ¿ÉÒÔÏÈɾ³ý»º´æÈ»ºó¸üÐÂÊý¾Ý¿âµÄ·½°¸À´½â¾öÆäÊý¾ÝÒ»ÖÂÐÔÎÊÌ⣬ÄÇô¶ÔÓڶ༶»º´æÄØ£¿Èç¹ûʹÓÃÕâÖÖ·½°¸£¬ÎÒÃÇÐèÒª¿¼ÂÇ£¬Èç¹ûÏÈɾ³ý»º´æ£¬ÄÇôÐèÒªÖð²ãÈ¥×öɾ³ý²Ù×÷£¬ÄÇôÕâһϵÁвÙ×÷¶Ôϵͳ´øÀ´µÄºÄʱҲÊǺͿɹ۵ġ£
Èç¹ûÎÒÃÇʹÓ÷ֲ¼Ê½ÊÂÎñ»úÖÆ£¬¾ÍÐèÒª¿¼ÂǸò»¸Ã½«Ð´»º´æ·ÅÈëÊÂÎñµ±ÖУ¬ÒòΪÎÒÃǸüзֲ¼Ê½»º´æ£¬ÐèÒª×ßÍøÂçͨÐÅ£¬´óÁ¿µÄÇëÇ󽫵¼ÖÂÍøÂ·¶¶¶¯ÉõÖÁ×èÈû£¬Ôö¼ÓÁËϵͳµÄÑÓ³Ù£¬µ¼ÖÂϵͳ¶Ìʱ¼äÄÚ²»¿ÉÓá£Èç¹ûÎÒÃDz»½«Ð´»º´æÕâÒ»²Ù×÷·ÅÈëÊÂÎñµ±ÖУ¬ÄÇô¿ÉÄÜÒýÆð¶Ìʱ¼äÄÚÊý¾Ý²»Ò»Ö¡£ÕâÒ²¾ÍÊÇ·Ö²¼Ê½ÏµÍ³µÄCAPÀíÂÛ£¬ÎÒÃDz»ÄÜͬʱ´ïµ½¸ß¿ÉÓúÍÒ»ÖÂÐÔ¡£ÄÇô¸ÃÈçºÎ¾ñÔñÄØ£¿
ÕâÀïÎÒÃÇÑ¡Ôñ±£Ö¤ÏµÍ³µÄ¿ÉÓÃÐÔ£¬¾ÍÒ»¸öÃëɱϵͳÀ´½²£¬¶ÌÔݵIJ»Ò»ÖÂÐÔÎÊÌâ¶ÔÓû§µÄÌåÑéÓ°Ïì²¢²»´ó£¨µ±È»£¬ÕâÀï²»Éæ¼°Ö§¸¶ÏµÍ³£©£¬¶ø¿ÉÓÃÐÔ¶ÔÓû§À´ËµÈ´ºÜÖØÒª£¬Ò»¸ö»î¶¯¿ÉÄÜÔں̵ܶÄʱ¼äÄÚ½áÊø£¬¶øÓû§ÐèÒªÔÚÕâ¶Îʱ¼äÄÚÇÀµ½×Ô¼ºÐÄÒǵÄÉÌÆ·£¬ËùÒÔ¿ÉÓÃÐÔ¸üÖØÒªÒ»Ð©£¨ÕâÀïÐèÒª¸ù¾Ý¾ßÌ峡¾°½øÐÐȨºâ£©¡£
ÔÚ±£Ö¤ÁËϵͳµÄ¿ÉÓÃÐԵĻù´¡ÉÏ£¬ÎÒÃǸÃÈçºÎʵÏÖÄØ£¿Èç¹ûʵʱÐÔÒªÇó²»ÊǺܸߣ¬ÎÒÃÇ¿ÉÒÔ²ÉÓÃÈ«Á¿+ÔöÁ¿Í¬²½µÄ·½Ê½½øÐС£Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔ°´ÕÕÔ¤¼ÆµÄÈȵãkey¶Ôϵͳ½øÐлº´æÔ¤ÈÈ£¬È«Á¿Í¬²½Êý¾Ýµ½»º´æÏµÍ³¡£½Ó×Å£¬ÔÚÐèÒª¸üлº´æµÄʱºò£¬ÎÒÃÇ¿ÉÒÔ²ÉÓÃÔöÁ¿Í¬²½µÄ·½Ê½¸üлº´æ¡£±ÈÈçÎÒÃÇ¿ÉÒÔʹÓð¢ÀïCanal¿ò¼Üͬ²½binlogµÄ·½Ê½½øÐÐÊý¾ÝµÄͬ²½¡£
»º´æ¹ýÆÚ
»º´æÏµÍ³ÖеÄËùÓÐÊý¾Ý£¬¸ù¾ÝÊý¾ÝµÄʹÓÃÆµÂÊÒÔ¼°³¡¾°£¬ÎÒÃÇ¿ÉÒÔ·ÖΪ¹ýÆÚkeyÒÔ¼°²»¹ýÆÚkey£¬ÄÇô¶ÔÆë¹ýÆÚ»º´æÎÒÃǸÃÈçºÎÌÔÌÄØ£¿ÏÂÃæÓг£Óõļ¸ÖÖ·½°¸£º
FIFO£ºÊ¹ÓÃFIFOËã·¨À´ÌÔ̹ýÆÚ»º´æ¡£
LFU£ºÊ¹ÓÃLFUËã·¨À´ÌÔ̹ýÆÚ»º´æ¡£
LRU£ºÊ¹ÓÃLRUËã·¨À´ÌÔ̹ýÆÚ»º´æ¡£
ÒÔÉϼ¸ÖÖ·½°¸ÊÇÔÚ»º´æ´ïµ½×î´ó»º´æ´óСµÄʱºòµÄÌÔ̲ßÂÔ£¬Èç¹ûûÓдﵽ×î´ó»º´æ´óС£¬ÎÒÃÇÓÐÏÂÃæ¼¸ÖÖ·½Ê½£º
¶¨Ê±É¾³ý²ßÂÔ£ºÉèÖÃÒ»¸ö¶¨Ê±ÈÎÎñ£¬Ôڹ涨ʱ¼äÄÚ¼ì²é²¢ÇÒɾ³ý¹ýÆÚkey¡£
¶¨ÆÚɾ³ý²ßÂÔ£ºÕâÖÖ²ßÂÔÐèÒªÉèÖÃɾ³ýµÄÖÜÆÚÒÔ¼°Ê±³¤£¬ÈçºÎÉèÖã¬ÐèÒª¸ù¾Ý¾ßÌ峡ºÏÀ´¼ÆËã¡£
¶èÐÔɾ³ý²ßÂÔ£ºÔÚʹÓÃʱ¼ì²éÊÇ·ñ¹ýÆÚ£¬Èç¹û¹ýÆÚÖ±½ÓÈ¥¸üлº´æ£¬·ñÔòÖ±½Ó·µ»Ø¡£
×îÈ«ÃæµÄ»º´æ¼Ü¹¹Éè¼Æ
1£º»º´æ¼¼ÊõºÍ¿ò¼ÜµÄÖØÒªÐÔ
»¥ÁªÍøµÄһЩ¸ß²¢·¢£¬¸ßÐÔÄܵÄÏîÄ¿ºÍϵͳÖУ¬»º´æ¼¼ÊõÊÇÆð׏¦²»¿ÉûµÄ×÷Ó᣻º´æ²»½ö½öÊÇkey-valueµÄ¼òµ¥´æÈ¡£¬ËüÔÚ¾ßÌåµÄÒµÎñ³¡¾°ÖУ¬»¹ÊǺܸ´Ôӵģ¬ÐèÒªºÜÇ¿µÄ¼Ü¹¹Éè¼ÆÄÜÁ¦¡£ÎÒÔø¾¾ÍÓöµ½¹ýÒòΪ»º´æ¼Ü¹¹Éè¼Æ²»µ½Î»£¬µ¼ÖÂÁËϵͳ±ÀÀ£µÄ°¸Àý¡£
2£º»º´æµÄ¼¼Êõ·½°¸·ÖÀà
1£©ÊÇ×öʵʱÐԱȽϸߵÄÄÇ¿éÊý¾Ý£¬±ÈÈç˵¿â´æ£¬ÏúÁ¿Ö®ÀàµÄÕâÖÖÊý¾Ý£¬ÎÒÃDzÉÈ¡µÄʵʱµÄ»º´æ+Êý¾Ý¿â˫дµÄ¼¼Êõ·½°¸£¬Ë«Ð´Ò»ÖÂÐÔ±£Õϵķ½°¸¡£
2£©ÊÇ×öʵʱÐÔÒªÇ󲻸ߵÄÊý¾Ý£¬±ÈÈç˵ÉÌÆ·µÄ»ù±¾ÐÅÏ¢£¬µÈµÈ£¬ÎÒÃDzÉÈ¡µÄÊÇÈý¼¶»º´æ¼Ü¹¹µÄ¼¼Êõ·½°¸£¬¾ÍÊÇ˵ÓÉÒ»¸öרÃŵÄÊý¾ÝÉú²úµÄ·þÎñ£¬È¥»ñÈ¡Õû¸öÉÌÆ·ÏêÇéÒ³ÐèÒªµÄ¸÷ÖÖÊý¾Ý£¬¾¹ý´¦Àíºó£¬½«Êý¾Ý·ÅÈë¸÷¼¶»º´æÖС£
3£º¸ß²¢·¢ÒÔ¼°¸ß¿ÉÓõĸ´ÔÓϵͳÖеĻº´æ¼Ü¹¹¶¼ÓÐÄÄЩ¶«Î÷
1£©ÔÚ´óÐ͵Ļº´æ¼Ü¹¹ÖУ¬redisÊÇ×î×î»ù´¡µÄÒ»²ã¡£¸ß²¢·¢£¬»º´æ¼Ü¹¹ÖгýÁËredis£¬»¹ÓÐÆäËûµÄ×é³É²¿·Ö£¬µ«ÊÇredisÖÁ¹ØÖØÒª¡£
Èç¹ûÄãµÄÊý¾ÝÁ¿²»´ó£¨10GÒÔÄÚ£©£¬µ¥master¾Í¿ÉÒÔ¡£redis³Ö¾Ã»¯+±¸·Ý·½°¸+ÈÝÔÖ·½°¸+replication£¨Ö÷´Ó+¶Áд·ÖÀ룩+sentinal£¨ÉÚ±ø¼¯Èº£¬3¸ö½Úµã£¬¸ß¿ÉÓÃÐÔ£©
Èç¹ûÄãµÄÊý¾ÝÁ¿ºÜ´ó£¨1T+£©£¬²ÉÓÃredis cluster¡£¶àmaster·Ö²¼Ê½´æ´¢Êý¾Ý£¬Ë®Æ½À©ÈÝ,×Ô¶¯½øÐÐmaster
-> slaveµÄÖ÷±¸Çл»¡£
2£©×î¾µäµÄ»º´æ+Êý¾Ý¿â¶ÁдµÄģʽ£¬cache aside pattern¡£¶ÁµÄʱºò£¬ÏȶÁ»º´æ£¬»º´æÃ»Óеϰ£¬ÄÇô¾Í¶ÁÊý¾Ý¿â¡£¸üлº´æ·ÖÒÔÏÂÁ½ÖÖ·½Ê½£º
Êý¾Ý·¢Éú±ä»¯Ê±£¬Ïȸüлº´æ£¬È»ºóÔÙ¸üÐÂÊý¾Ý¿â¡£ÕâÖÖÊÊÓÃÓÚ»º´æµÄÖµÏà¶Ô¼òµ¥£¬ºÍÊý¾Ý¿âµÄÖµÒ»Ò»¶ÔÓ¦£¬ÕâÑù¸üбȽϿ졣
Êý¾Ý·¢Éú±ä»¯Ê±£¬ÏÈɾ³ý»º´æ£¬È»ºóÔÙ¸üÐÂÊý¾Ý¿â£¬¶ÁÊý¾ÝµÄʱºòÔÙÉèÖûº´æ¡£ÕâÖÖÊÊÓÃÓÚ»º´æµÄÖµ±È½Ï¸´Ôӵij¡¾°¡£±ÈÈç¿ÉÄܸüÐÂÁËij¸ö±íµÄÒ»¸ö×ֶΣ¬È»ºóÆä¶ÔÓ¦µÄ»º´æ£¬ÊÇÐèÒª²éѯÁíÍâÁ½¸ö±íµÄÊý¾Ý£¬²¢½øÐÐÔËË㣬²ÅÄܼÆËã³ö»º´æ×îеÄÖµµÄ¡£ÕâÑù¸üлº´æµÄ´ú¼ÛÊǺܸߵġ£Èç¹ûÄãÆµ·±ÐÞ¸ÄÒ»¸ö»º´æÉæ¼°µÄ¶à¸ö±í£¬ÄÇôÕâ¸ö»º´æ»á±»Æµ·±µÄ¸üУ¬Æµ·±µÄ¸üлº´æ´ú¼ÛºÜ¸ß¡£¶øÇÒÕâ¸ö»º´æµÄÖµÈç¹û²»ÊDZ»Æµ·±·ÃÎÊ£¬¾ÍµÃ²»³¥Ê§ÁË¡£
´ó²¿·ÖÇé¿öÏ£¬½¨ÒéÊÊÓÃɾ³ý¸üеķ½Ê½¡£Æäʵɾ³ý»º´æ£¬¶ø²»ÊǸüлº´æ£¬¾ÍÊÇÒ»¸ölazy¼ÆËãµÄ˼Ï룬²»ÒªÃ¿´Î¶¼ÖØÐÂ×ö¸´ÔӵļÆË㣬²»¹ÜËü»á²»»áÓõ½£¬¶øÊÇÈÃËüµ½ÐèÒª±»Ê¹ÓõÄʱºòÔÙÖØÐ¼ÆËã¡£
¾Ù¸öÀý×Ó£¬Ò»¸ö»º´æÉæ¼°µÄ±íµÄ×ֶΣ¬ÔÚ1·ÖÖÓÄÚ¾ÍÐÞ¸ÄÁË20´Î£¬»òÕßÊÇ100´Î£¬ÄÇô»º´æ¸úÐÂ20´Î£¬100´Î;
µ«ÊÇÕâ¸ö»º´æÔÚ1·ÖÖÓÄھͱ»¶ÁÈ¡ÁË1´Î£¬ÓдóÁ¿µÄÀäÊý¾Ý¡£28»Æ½ð·¨Ôò£¬20%µÄÊý¾Ý£¬Õ¼ÓÃÁË80%µÄ·ÃÎÊÁ¿¡£Êµ¼ÊÉÏ£¬Èç¹ûÄãÖ»ÊÇɾ³ý»º´æµÄ»°£¬ÄÇô1·ÖÖÓÄÚ£¬Õâ¸ö»º´æ²»¹ý¾ÍÖØÐ¼ÆËãÒ»´Î¶øÒÑ£¬¿ªÏú´ó·ù¶È½µµÍ¡£Ã¿´ÎÊý¾Ý¹ýÀ´£¬¾ÍÖ»ÊÇɾ³ý»º´æ£¬È»ºóÐÞ¸ÄÊý¾Ý¿â£¬Èç¹ûÕâ¸ö»º´æ£¬ÔÚ1·ÖÖÓÄÚÖ»ÊDZ»·ÃÎÊÁË1´Î£¬ÄÇôֻÓÐÄÇ1´Î£¬»º´æÊÇÒª±»ÖØÐ¼ÆËãµÄ¡£
3£©Êý¾Ý¿âÓ뻺´æË«Ð´²»Ò»ÖÂÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺²¢·¢ÇëÇóµÄʱºò£¬Êý¾Ý·¢ÉúÁ˱ä¸ü£¬ÏÈɾ³ýÁË»º´æ£¬È»ºóҪȥÐÞ¸ÄÊý¾Ý¿â£¬´Ëʱ»¹Ã»Ð޸ġ£ÁíÒ»¸öÇëÇó¹ýÀ´£¬È¥¶Á»º´æ£¬·¢ÏÖ»º´æ¿ÕÁË£¬È¥²éѯÊý¾Ý¿â£¬²éµ½ÁËÐÞ¸ÄǰµÄ¾ÉÊý¾Ý£¬·Åµ½ÁË»º´æÖС£
·½°¸£ºÊý¾Ý¿âÓ뻺´æ¸üÐÂÓë¶ÁÈ¡²Ù×÷½øÐÐÒì²½´®Ðл¯¡££¨ÒýÈë¶ÓÁУ©
¸üÐÂÊý¾ÝµÄʱºò£¬½«ÏàÓ¦²Ù×÷·¢Ë͵½Ò»¸öjvmÄÚ²¿µÄ¶ÓÁÐÖС£¶ÁÈ¡Êý¾ÝµÄʱºò£¬Èç¹û·¢ÏÖÊý¾Ý²»ÔÚ»º´æÖУ¬ÄÇô½«ÖØÐ¶ÁÈ¡Êý¾ÝµÄ²Ù×÷Ò²·¢Ë͵½Í¬Ò»¸öjvmÄÚ²¿µÄ¶ÓÁÐÖС£¶ÓÁÐÏû·ÑÕß´®ÐÐÄõ½¶ÔÓ¦µÄ²Ù×÷£¬È»ºóÒ»ÌõÒ»ÌõµÄÖ´ÐС£ÕâÑùµÄ»°£¬Ò»¸öÊý¾Ý±ä¸üµÄ²Ù×÷£¬ÏÈÖ´ÐÐɾ³ý»º´æ£¬È»ºóÔÙÈ¥¸üÐÂÊý¾Ý¿â£¬µ«ÊÇ»¹Ã»Íê³É¸üС£´ËʱÈç¹ûÒ»¸ö¶ÁÇëÇó¹ýÀ´£¬¶Áµ½Á˿յĻº´æ£¬ÄÇô¿ÉÒÔÏȽ«»º´æ¸üеÄÇëÇó·¢Ë͵½¶ÓÁÐÖУ¬´Ëʱ»áÔÚ¶ÓÁÐÖлýѹ£¬È»ºóͬ²½µÈ´ý»º´æ¸üÐÂÍê³É¡£
ÕâÀïÓÐÁ½¸ö¿ÉÒÔÓÅ»¯µÄµã£º
Ò»¸ö¶ÓÁÐÖУ¬Æäʵ¶à¸ö¶Á»º´æ£¬¸üлº´æµÄÇëÇó´®ÔÚÒ»ÆðÊÇûÒâÒåµÄ£¬¶øÇÒÈç¹û¶Áͬһ»º´æµÄ´óÁ¿ÇëÇóµ½À´Ê±£¬»áÒÀ´Î½øÈë¶ÓÁеȴý£¬ÕâÑù»áµ¼Ö¶ÓÁÐ×îºóÒ»¸öµÄÇëÇóÏìӦʱ¼ä³¬Ê±¡£Òò´Ë¿ÉÒÔ×ö¹ýÂË£¬Èç¹û·¢ÏÖ¶ÓÁÐÖÐÒѾÓÐÒ»¸ö¶Á»º´æ£¬¸üлº´æµÄÇëÇóÁË£¬ÄÇô¾Í²»ÓÃÔٷŸöÐÂÇëÇó²Ù×÷½øÈ¥ÁË£¬Ö±½ÓµÈ´ýÇ°ÃæµÄ¸üвÙ×÷ÇëÇóÍê³É¼´¿É¡£Èç¹ûÇëÇó»¹Ôڵȴýʱ¼ä·¶Î§ÄÚ£¬²»¶ÏÂÖѯ·¢ÏÖ¿ÉÒÔÈ¡µ½ÖµÁË£¬ÄÇô¾ÍÖ±½Ó·µ»Ø;
Èç¹ûÇëÇóµÈ´ýµÄʱ¼ä³¬¹ýÒ»¶¨Ê±³¤£¬ÄÇôÕâÒ»´ÎÖ±½Ó´ÓÊý¾Ý¿âÖжÁÈ¡µ±Ç°µÄ¾ÉÖµ¡£
Èç¹ûÇëÇóÁ¿Ìرð´óµÄʱºò£¬¿ÉÒÔÓöà¸ö¶ÓÁУ¬Ã¿¸ö¶ÓÁжÔÓ¦Ò»¸öÏ̡߳£Ã¿¸öÇëÇóÀ´Ê±¿ÉÒÔ¸ù¾ÝÇëÇóµÄ±êʶid½øÐÐhash·ÓɽøÈëµ½²»Í¬µÄ¶ÓÁС£
×îºó£¬Ò»¶¨Òª×ö¸ù¾Ýʵ¼ÊÒµÎñϵͳµÄÔËÐÐÇé¿ö£¬È¥½øÐÐһЩѹÁ¦²âÊÔ£¬ºÍÄ£ÄâÏßÉÏ»·¾³£¬È¥¿´¿´×æµÄʱºò£¬ÄÚ´æ¶ÓÁпÉÄܻἷѹ¶àÉÙ¸üвÙ×÷£¬¿ÉÄܻᵼÖÂ×îºóÒ»¸ö¸üвÙ×÷¶ÔÓ¦µÄ¶ÁÇëÇ󣬻áhang¶àÉÙʱ¼ä£¬Èç¹û¶ÁÇëÇóÔÚ200ms·µ»Ø£¬Èç¹ûÄã¼ÆËã¹ýºó£¬ÄÄÅÂÊÇ×æµÄʱºò£¬»ýѹ10¸ö¸üвÙ×÷£¬×î¶àµÈ´ý200ms£¬ÄÇ»¹¿ÉÒԵġ£Èç¹ûÒ»¸öÄÚ´æ¶ÓÁпÉÄÜ»ýѹµÄ¸üвÙ×÷ÌØ±ð¶à£¬ÄÇôÄã¾ÍÒª¼Ó»úÆ÷£¬ÈÃÿ¸ö»úÆ÷Éϲ¿ÊðµÄ·þÎñʵÀý´¦Àí¸üÉÙµÄÊý¾Ý£¬ÄÇôÿ¸öÄÚ´æ¶ÓÁÐÖлýѹµÄ¸üвÙ×÷¾Í»áÔ½ÉÙ¡£Æäʵ¸ù¾Ý֮ǰµÄÏîÄ¿¾Ñ飬һ°ãÀ´ËµÊý¾ÝµÄдƵÂÊÊǺܵ͵ģ¬Òò´Ëʵ¼ÊÉÏÕý³£À´Ëµ£¬ÔÚ¶ÓÁÐÖлýѹµÄ¸üвÙ×÷Ó¦¸ÃÊǺÜÉٵġ£
¾Ù¸öÀý×Ó£ºÒ»Ãë¾Í100¸öд²Ù×÷¡£µ¥Ì¨»úÆ÷£¬20¸öÄÚ´æ¶ÓÁУ¬Ã¿¸öÄÚ´æ¶ÓÁУ¬¿ÉÄܾͻýѹ5¸öд²Ù×÷£¬Ã¿¸öд²Ù×÷ÐÔÄܲâÊÔºó£¬Ò»°ãÔÚ20ms×óÓÒ¾ÍÍê³É£¬ÄÇôÕë¶Ôÿ¸öÄÚ´æ¶ÓÁÐÖеÄÊý¾ÝµÄ¶ÁÇëÇó£¬Ò²¾Í×î¶àhangÒ»»á¶ù£¬200msÒÔÄڿ϶¨ÄÜ·µ»ØÁË¡£Èç¹û°ÑдQPSÀ©´ó10±¶£¬µ«ÊǾ¹ý¸Õ²ÅµÄ²âË㣬¾ÍÖªµÀ£¬µ¥»úÖ§³ÅдQPS¼¸°ÙûÎÊÌ⣬ÄÇô¾ÍÀ©ÈÝ»úÆ÷£¬À©ÈÝ10±¶µÄ»úÆ÷£¬10̨»úÆ÷£¬Ã¿¸ö»úÆ÷20¸ö¶ÓÁУ¬200¸ö¶ÓÁС£´ó²¿·ÖµÄÇé¿öÏ£¬Ó¦¸ÃÊÇÕâÑùµÄ£¬´óÁ¿µÄ¶ÁÇëÇó¹ýÀ´£¬¶¼ÊÇÖ±½Ó×ß»º´æÈ¡µ½Êý¾ÝµÄ£¬ÉÙÁ¿Çé¿öÏ£¬¿ÉÄÜÓöµ½¶Á¸úÊý¾Ý¸üгåÍ»µÄÇé¿ö£¬ÈçÉÏËùÊö£¬ÄÇô´Ëʱ¸üвÙ×÷Èç¹ûÏÈÈë¶ÓÁУ¬Ö®ºó¿ÉÄÜ»á˲¼äÀ´Á˶ÔÕâ¸öÊý¾Ý´óÁ¿µÄ¶ÁÇëÇ󣬵«ÊÇÒòΪ×öÁËÈ¥ÖØµÄÓÅ»¯£¬ËùÒÔÒ²¾ÍÒ»¸ö¸üлº´æµÄ²Ù×÷¸úÔÚËüºóÃæ¡£
4£©´óÐÍ»º´æÈ«Á¿¸üÐÂÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺»º´æÊý¾ÝºÜ´óʱ£¬¿ÉÄܵ¼ÖÂredisµÄÍÌÍÂÁ¿¾Í»á¼±¾çϽµ£¬ÍøÂçºÄ·ÑµÄ×ÊÔ´´ó¡£Èç¹û²»Î¬¶È»¯£¬¾Íµ¼Ö¶à¸öά¶ÈµÄÊý¾Ý»ìºÏÔÚÒ»¸ö»º´ævalueÖС£¶øÇÒ²»Í¬Î¬¶ÈµÄÊý¾Ý£¬¿ÉÄܸüÐÂµÄÆµÂʶ¼´ó²»Ò»Ñù¡£ÄÃÉÌÆ·ÏêÇéÒ³À´Ëµ£¬Èç¹ûÏÖÔÚÖ»Êǽ«1000¸öÉÌÆ·µÄ·ÖÀàÅúÁ¿µ÷ÕûÁËһϣ¬µ«ÊÇÈç¹ûÉÌÆ··ÖÀàµÄÊý¾ÝºÍÉÌÆ·±¾ÉíµÄÊý¾Ý»ìÔÓÔÚÒ»Æð¡£ÄÇô¿ÉÄܵ¼ÖÂÐèÒª½«°üÀ¨ÉÌÆ·ÔÚÄڵĴ󻺴ævalueÈ¡³öÀ´£¬½øÐиüУ¬ÔÙд»ØÈ¥£¬¾Í»áºÜ¿Óµù£¬ºÄ·Ñ´óÁ¿µÄ×ÊÔ´£¬redisѹÁ¦Ò²ºÜ´ó
·½°¸£º»º´æÎ¬¶È»¯¡£¾Ù¸öÀý×Ó£ºÉÌÆ·ÏêÇéÒ³·ÖÈý¸öά¶È£ºÉÌÆ·Î¬¶È£¬ÉÌÆ··ÖÀàά¶È£¬ÉÌÆ·µêÆÌά¶È¡£½«Ã¿¸öά¶ÈµÄÊý¾Ý¶¼´æÒ»·Ý£¬±ÈÈç˵ÉÌÆ·Î¬¶ÈµÄÊý¾Ý´æÒ»·Ý£¬ÉÌÆ··ÖÀàµÄÊý¾Ý´æÒ»·Ý£¬ÉÌÆ·µêÆÌµÄÊý¾Ý´æÒ»·Ý¡£ÄÇôÔÚ²»Í¬µÄά¶ÈÊý¾Ý¸üеÄʱºò£¬Ö»ÒªÈ¥¸üжÔÓ¦µÄά¶È¾Í¿ÉÒÔÁË¡£´ó´ó¼õÇáÁËredisµÄѹÁ¦¡£
5£©Í¨¹ý¶à¼¶»º´æ£¬´ïµ½¸ß²¢·¢¼«Ö£¬Í¬Ê±¸ø»º´æ¼Ü¹¹×îºóµÄ°²È«±£»¤²ã¡£¾ßÌå¿ÉÒÔ²ÎÕÕÉÏһƪÎÄÕ¡¾ÒÚ¼¶Á÷Á¿µÄÉÌÆ·ÏêÇéÒ³¼Ü¹¹·ÖÎö¡¿¡£
6£©·Ö²¼Ê½²¢·¢»º´æÖؽ¨µÄ³åÍ»ÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺¼ÙÈçÊý¾ÝÔÚËùÓеĻº´æÖж¼²»´æÔÚÁË£¨LRUË㷨ŪµôÁË£©£¬¾ÍÐèÒªÖØÐ²éѯÊý¾ÝдÈ뻺´æ¡£¶ÔÓÚ·Ö²¼Ê½µÄÖØ½¨»º´æ£¬ÔÚ²»Í¬µÄ»úÆ÷ÉÏ£¬²»Í¬µÄ·þÎñʵÀýÖУ¬È¥×öÉÏÃæµÄÊÂÇ飬¾Í»á³öÏÖ¶à¸ö»úÆ÷·Ö²¼Ê½Öؽ¨È¥¶ÁÈ¡ÏàͬµÄÊý¾Ý£¬È»ºóдÈ뻺´æÖС£
·½°¸£º·Ö²¼Ê½Ëø£ºÈç¹ûÄãÓжà¸ö»úÆ÷ÔÚ·ÃÎÊͬһ¸ö¹²Ïí×ÊÔ´£¬ÄÇôÕâ¸öʱºò£¬Èç¹ûÄãÐèÒª¼Ó¸öËø£¬Èöà¸ö·Ö²¼Ê½µÄ»úÆ÷ÔÚ·ÃÎʹ²Ïí×ÊÔ´µÄʱºò´®ÐÐÆðÀ´¡£·Ö²¼Ê½Ëøµ±È»ÓкܶàÖÖ²»Í¬µÄʵÏÖ·½°¸£¬redis·Ö²¼Ê½Ëø£¬zookeeper·Ö²¼Ê½Ëø¡£
zookeeper·Ö²¼Ê½ËøµÄ½â¾ö²¢·¢³åÍ»µÄ·½°¸
£¨1£©±ä¸ü»º´æÖؽ¨ÒÔ¼°¿Õ»º´æÇëÇóÖØ½¨£¬¸üÐÂredis֮ǰ£¬¶¼ÐèÒªÏÈ»ñÈ¡¶ÔÓ¦ÉÌÆ·idµÄ·Ö²¼Ê½Ëø
£¨2£©Äõ½·Ö²¼Ê½ËøÖ®ºó£¬ÐèÒª¸ù¾Ýʱ¼ä°æ±¾È¥±È½Ïһϣ¬Èç¹û×Ô¼ºµÄ°æ±¾ÐÂÓÚredisÖеİ汾£¬ÄÇô¾Í¸üУ¬·ñÔò¾Í²»¸üÐÂ
£¨3£©Èç¹ûÄò»µ½·Ö²¼Ê½Ëø£¬ÄÇô¾ÍµÈ´ý£¬²»¶ÏÂÖѯµÈ´ý£¬Ö±µ½×Ô¼º»ñÈ¡µ½·Ö²¼Ê½µÄËø
7£©»º´æÀäÆô¶¯µÄÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺ÐÂϵͳµÚÒ»´ÎÉÏÏߣ¬´ËʱÔÚ»º´æÀï¿ÉÄÜÊÇûÓÐÊý¾ÝµÄ¡£»òÕßredis»º´æÈ«Å̱ÀÀ£ÁË£¬Êý¾ÝÒ²¶ªÁË¡£µ¼ÖÂËùÓÐÇëÇó´òµ½ÁËmysql¡£µ¼ÖÂmysqlÖ±½Ó¹Òµô¡£
·½°¸£º»º´æÔ¤ÈÈ¡£
Ìáǰ¸øredisÖйàÈ벿·ÖÊý¾Ý£¬ÔÙÌṩ·þÎñ
¿Ï¶¨²»¿ÉÄܽ«ËùÓÐÊý¾Ý¶¼Ð´Èëredis£¬ÒòΪÊý¾ÝÁ¿Ì«´óÁË£¬µÚÒ»ºÄ·ÑµÄʱ¼äÌ«³¤ÁË£¬µÚ¶þ¸ù±¾redisÈÝÄɲ»ÏÂËùÓеÄÊý¾Ý£¬ÐèÒª¸ù¾Ýµ±ÌìµÄ¾ßÌå·ÃÎÊÇé¿ö£¬ÊµÊ±Í³¼Æ³ö·ÃÎÊÆµÂʽϸߵÄÈÈÊý¾Ý£¬È»ºó½«·ÃÎÊÆµÂʽϸߵÄÈÈÊý¾ÝдÈëredisÖУ¬¿Ï¶¨ÊÇÈÈÊý¾ÝÒ²±È½Ï¶à£¬ÎÒÃÇÒ²µÃ¶à¸ö·þÎñ²¢ÐжÁÈ¡Êý¾Ýȥд£¬²¢Ðеķֲ¼Ê½µÄ»º´æÔ¤ÈÈ¡£
8£©¿Ö²ÀµÄ»º´æÑ©±ÀÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺»º´æ·þÎñ´óÁ¿µÄ×ÊÔ´È«²¿ºÄ·ÑÔÚ·ÃÎÊredisºÍÔ´·þÎñÎÞ¹û£¬×îºó×Ô¼º±»ÍÏËÀ£¬ÎÞ·¨Ìṩ·þÎñ¡£
·½°¸£ºÏà¶ÔÀ´Ëµ£¬¿¼ÂǵıȽÏÍêÉÆµÄÒ»Ì×·½°¸£¬·ÖΪÊÂǰ£¬ÊÂÖУ¬ÊºóÈý¸ö²ã´Îȥ˼¿¼ÔõôÀ´Ó¦¶Ô»º´æÑ©±ÀµÄ³¡¾°¡£
ÊÂǰ£º¸ß¿ÉÓüܹ¹¡£Ö÷´Ó¼Ü¹¹£¬²Ù×÷Ö÷½Úµã£¬¶Áд£¬Êý¾Ýͬ²½µ½´Ó½Úµã£¬Ò»µ©Ö÷½Úµã¹Òµô£¬´Ó½Úµã¸úÉÏ¡£
ÊÂÖУº¶à¼¶»º´æ¡£redis clusterÒѾ³¹µ×±ÀÀ£ÁË£¬»º´æ·þÎñʵÀýµÄehcacheµÄ»º´æ»¹ÄÜÆðµ½×÷Óá£
ʺó£ºredisÊý¾Ý¿ÉÒÔ»Ö¸´£¬×öÁ˱¸·Ý£¬redisÊý¾Ý±¸·ÝºÍ»Ö¸´£¬redisÖØÐÂÆô¶¯ÆðÀ´¡£
9£©»º´æ´©Í¸ÎÊÌâµÄ½â¾ö·½°¸
ÎÊÌ⣺»º´æÖÐûÓÐÕâÑùµÄÊý¾Ý£¬Êý¾Ý¿âÖÐҲûÓÐÕâÑùµÄÊý¾Ý¡£ÓÉÓÚ»º´æÊDz»ÃüÖÐʱ±»¶¯Ð´µÄ£¬²¢ÇÒ³öÓÚÈÝ´í¿¼ÂÇ£¬Èç¹û´Ó´æ´¢²ã²é²»µ½Êý¾ÝÔò²»Ð´È뻺´æ£¬Õ⽫µ¼ÖÂÕâ¸ö²»´æÔÚµÄÊý¾Ýÿ´ÎÇëÇó¶¼Òªµ½´æ´¢²ãÈ¥²éѯ£¬Ê§È¥ÁË»º´æµÄÒâÒå¡£ÔÚÁ÷Á¿´óʱ£¬¿ÉÄÜDB¾Í¹ÒµôÁË£¬ÒªÊÇÓÐÈËÀûÓò»´æÔÚµÄkeyƵ·±¹¥»÷ÎÒÃǵÄÓ¦Óã¬Õâ¾ÍÊÇ©¶´¡£
·½°¸£ºÓкܶàÖÖ·½·¨¿ÉÒÔÓÐЧµØ½â¾ö»º´æ´©Í¸ÎÊÌ⣬×î³£¼ûµÄÔòÊDzÉÓò¼Â¡¹ýÂËÆ÷£¬½«ËùÓпÉÄÜ´æÔÚµÄÊý¾Ý¹þÏ£µ½Ò»¸ö×ã¹»´óµÄbitmapÖУ¬Ò»¸öÒ»¶¨²»´æÔÚµÄÊý¾Ý»á±»
Õâ¸öbitmapÀ¹½Øµô£¬´Ó¶ø±ÜÃâÁË¶Ôµ×²ã´æ´¢ÏµÍ³µÄ²éѯѹÁ¦¡£ÁíÍâÒ²ÓÐÒ»¸ö¸üΪ¼òµ¥´Ö±©µÄ·½·¨£¨ÎÒÃDzÉÓõľÍÊÇÕâÖÖ£©£¬Èç¹ûÒ»¸ö²éѯ·µ»ØµÄÊý¾ÝΪ¿Õ£¨²»¹ÜÊÇÊý
¾Ý²»´æÔÚ£¬»¹ÊÇϵͳ¹ÊÕÏ£©£¬ÎÒÃÇÈÔÈ»°ÑÕâ¸ö¿Õ½á¹û½øÐлº´æ£¬µ«ËüµÄ¹ýÆÚʱ¼ä»áºÜ¶Ì£¬×²»³¬¹ýÎå·ÖÖÓ¡£
»º´æ»÷´©ÎÊÌâ
»º´æ»÷´©£¬ÊÇָij¸ö¼«¶È ¡° Èȵ㠡± Êý¾ÝÔÚij¸öʱ¼äµã¹ýÆÚʱ£¬Ç¡ºÃÔÚÕâ¸öʱ¼äµã¶ÔÕâ¸ö KEY ÓдóÁ¿µÄ²¢·¢ÇëÇó¹ýÀ´£¬ÕâЩÇëÇó·¢ÏÖ»º´æ¹ýÆÚÒ»°ã¶¼»á´Ó
DB ¼ÓÔØÊý¾Ý²¢»ØÉèµ½»º´æ£¬µ«ÊÇÕâ¸öʱºò´ó²¢·¢µÄÇëÇó¿ÉÄÜ»á˲¼ä DB ѹ¿å¡£
ÏÈÀ´ÉèÏëÏÂÃæÕâôһ¸ö³¡¾°¡£Êý¾ÝÔ´ÔÚ MySQL Êý¾Ý¿âÖУ¬»º´æµÄÊý¾Ý·ÅÔÚ¹²Ïí×ÖµäÖУ¬³¬Ê±Ê±¼äΪ 1
·ÖÖÓ¡£ÔÚÕâ 1 ·ÖÖÓÄÚµÄʱ¼äÀËùÓеÄÇëÇó¶¼´Ó»º´æÖлñÈ¡Êý¾Ý£¬MySQL ûÓÐÈκεÄѹÁ¦¡£µ«ÊÇ£¬Ò»µ©µ½´ï
1 ·ÖÖÓ£¬Ò²¾ÍÊÇ»º´æÊý¾ÝʧЧµÄÄÇÒ»¿Ì£¬Èç¹ûÕýºÃÓдóÁ¿µÄ²¢·¢ÇëÇó½øÀ´£¬ÔÚ»º´æÖÐûÓвéѯµ½½á¹û£¬¾ÍÒª´¥·¢²éѯÊý¾ÝÔ´µÄº¯Êý£¬ÄÇôÕâЩÇëÇóÈ«²¿¶¼½«È¥²éѯ
MySQL Êý¾Ý¿â£¬ Ö±½ÓÔì³ÉÊý¾Ý¿â·þÎñÆ÷¿¨¶Ù£¬ÉõÖÁ¿¨ËÀ¡£
¶ÔÓÚһЩÉèÖÃÁ˹ýÆÚʱ¼äµÄ KEY £¬Èç¹ûÕâЩ KEY ¿ÉÄÜ»áÔÚijЩʱ¼äµã±»³¬¸ß²¢·¢µØ·ÃÎÊ£¬ÊÇÒ»Öַdz£
¡° Èȵ㠡± µÄÊý¾Ý¡£Õâ¸öʱºò£¬ÐèÒª¿¼ÂÇÕâ¸ö¸öÎÊÌâ¡£
ÈçºÎ±ÜÃ⻺´æ»÷´©£¿
1 ¡¢Ö÷¶¯¸üлº´æ£ºÄ¬ÈÏ»º´æÊDZ»¶¯¸üеġ£Ö»ÓÐÔÚÖÕ¶ËÇëÇó·¢ÏÖ»º´æÊ§Ð§Ê±£¬Ëü²Å»áÈ¥Êý¾Ý¿â²éѯеÄÊý¾Ý¡£ÄÇô£¬Èç¹ûÎÒÃǰѻº´æµÄ¸üУ¬´Ó±»¶¯¸ÄΪÖ÷¶¯£¬Ò²¾Í¿ÉÒÔÖ±½ÓÈÆ¿ª»º´æ·ç
±©µÄÎÊÌâÁË£¬ÔÚ OpenResty ÖУ¬ÎÒÃÇ¿ÉÒÔʹÓà ngx.timer.every À´´´½¨Ò»¸ö¶¨Ê±Æ÷È¥¶¨Ê±¸üС£
ȱµã£ºÃ¿Ò»¸ö»º´æ¶¼Òª¶ÔÓ¦Ò»¸öÖÜÆÚÐÔµÄÈÎÎñ£»¶øÇÒ»º´æ¹ýÆÚʱ¼äºÍ¼Æ»®ÈÎÎñµÄÖÜÆÚʱ¼ä»¹Òª¶ÔÓ¦ºÃ£¬Èç¹ûÕâÖмä³öÏÖÁËʲôç¢Â©£¬
Öն˾ͿÉÄÜ Ò»Ö±»ñÈ¡µ½µÄ¶¼ÊÇ¿ÕÊý¾Ý
2 ¡¢Ê¹Óû¥³âËø£ºÇëÇó·¢ÏÖ»º´æ²»´æÔÚºó£¬È¥²éѯ DB ǰ£¬Ê¹ÓÃËø£¬±£Ö¤ÓÐÇÒÖ»ÓÐÒ»¸öÇëÇóÈ¥²éѯ DB
£¬²¢¸üе½»º´æ¡£Á÷³ÌÈçÏ£º
»ñÈ¡Ëø£¬Ö±µ½³É¹¦»ò³¬Ê±¡£Èç¹û³¬Ê±£¬ÔòÅ׳öÒì³££¬·µ»Ø¡£Èç¹û³É¹¦£¬¼ÌÐøÏòÏÂÖ´ÐС£
ÔÙÈ¥»º´æÖС£Èç¹û´æÔÚÖµ£¬ÔòÖ±½Ó·µ»Ø£»Èç¹û²»´æÔÚ£¬Ôò¼ÌÐøÍùÏÂÖ´ÐÐÈç¹û³É¹¦»ñÈ¡µ½ËøµÄ»°£¬¾Í¿ÉÒÔ±£Ö¤Ö»ÓÐÒ»¸öÇëÇóÈ¥Êý¾ÝÔ´¸üÐÂÊý¾Ý£¬²¢¸üе½»º´æÖÐÁË¡£
²éѯ DB £¬²¢¸üе½»º´æÖУ¬·µ»ØÖµ¡£ |