±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚjuejin.im,Ö÷Òª´Ó»ù´¡µ½ÔÀí£¬¼¯Èºµ½²¿ÊðµÈµÈ·½Ãæ½éÉܵĵġ£ |
|
1. redis½éÉÜ
redisÊÇÒ»¸ö»ùÓÚÄÚ´æµÄK-V´æ´¢Êý¾Ý¿â¡£Ö§³Ö´æ´¢µÄÀàÐÍÓÐstring,list,set,zset(sorted
set),hashµÈ¡£ÕâЩÊý¾ÝÀàÐͶ¼Ö§³Öpush/pop¡¢add/remove¼°È¡½»¼¯²¢¼¯ºÍ²î¼¯¼°¸ü·á¸»µÄ²Ù×÷£¬¶øÇÒÕâЩ²Ù×÷¶¼ÊÇÔ×ÓÐԵġ£redisÖ§³Ö¸÷ÖÖ²»Í¬·½Ê½µÄÅÅÐò¡£±£Ö¤Ð§ÂʵÄÇé¿öÏ£¬Êý¾Ý»º´æÔÚÄÚ´æÖС£Í¬Ê±redisÌṩÁ˳־û¯²ßÂÔ£¬²»Í¬µÄ²ßÂÔ´¥·¢Í¬²½µ½´ÅÅÌ»òÕß°ÑÐ޸IJÙ×÷дÈë×·¼ÓµÄ¼Ç¼Îļþ£¬ÔÚ´Ë»ù´¡ÉÏʵÏÖÁËmaster-slave¡£
ËüÊÇÒ»¸ö¸ßÐÔÄܵĴ洢ϵͳ£¬ÄÜÖ§³Ö³¬¹ý 100K+ ÿÃëµÄ¶ÁдƵÂÊ¡£Í¬Ê±»¹Ö§³ÖÏûÏ¢µÄ·¢²¼/¶©ÔÄ£¬´Ó¶øÈÃÄãÔÚ¹¹½¨¸ßÐÔÄÜÏûÏ¢¶ÓÁÐϵͳʱ¶àÁËÁíÒ»ÖÖÑ¡Ôñ¡£
RedisÖ§³ÖÖ÷´Óͬ²½¡£Êý¾Ý¿ÉÒÔ´ÓÖ÷·þÎñÆ÷ÏòÈÎÒâÊýÁ¿µÄ´Ó·þÎñÆ÷ÉÏͬ²½£¬´Ó·þÎñÆ÷¿ÉÒÔÊǹØÁªÆäËû´Ó·þÎñÆ÷µÄÖ÷·þÎñÆ÷¡£ÕâʹµÃRedis¿ÉÖ´Ðе¥²ãÊ÷¸´ÖÆ¡£´æÅÌ¿ÉÒÔÓÐÒâÎÞÒâµÄ¶ÔÊý¾Ý½øÐÐд²Ù×÷¡£ÓÉÓÚÍêȫʵÏÖÁË·¢²¼/¶©ÔÄ»úÖÆ£¬Ê¹µÃ´ÓÊý¾Ý¿âÔÚÈκεط½Í¬²½Ê÷ʱ£¬¿É¶©ÔÄÒ»¸öƵµÀ²¢½ÓÊÕÖ÷·þÎñÆ÷ÍêÕûµÄÏûÏ¢·¢²¼¼Ç¼¡£Í¬²½¶Ô¶ÁÈ¡²Ù×÷µÄ¿ÉÀ©Õ¹ÐÔºÍÊý¾ÝÈßÓàºÜÓаïÖú¡£
2. Ö÷´Ó
redisÖ§³Ömaster-slaveģʽ£¬Ò»Ö÷¶à´Ó£¬redis server¿ÉÒÔÉèÖÃÁíÍâ¶à¸öredis
serverΪslave£¬´Ó»úͬ²½Ö÷»úµÄÊý¾Ý¡£ÅäÖú󣬶Áд·ÖÀ룬Ö÷»ú¸ºÔð¶Áд·þÎñ£¬´Ó»úÖ»¸ºÔð¶Á¡£¼õÇáÖ÷»úµÄѹÁ¦¡£redisʵÏÖµÄÊÇ×îÖÕ»áÒ»ÖÂÐÔ£¬¾ßÌåÑ¡ÔñǿһÖÂÐÔ»¹ÊÇÈõÒ»ÖÂÐÔ£¬È¡¾öÓÚÒµÎñ³¡¾°¡£
redis Ö÷´Óͬ²½ÓÐÁ½ÖÖ·½Ê½£¨»òÕßËùÁ½¸ö½×¶Î£©£ºÈ«Í¬²½ºÍ²¿·Öͬ²½¡£
Ö÷´Ó¸Õ¸ÕÁ¬½ÓµÄʱºò£¬½øÐÐȫͬ²½£»È«Í¬²½½áÊøºó£¬½øÐв¿·Öͬ²½¡£µ±È»£¬Èç¹ûÓÐÐèÒª£¬slave ÔÚÈκÎʱºò¶¼¿ÉÒÔ·¢Æðȫͬ²½¡£redis
²ßÂÔÊÇ£¬ÎÞÂÛÈçºÎ£¬Ê×ÏȻ᳢ÊÔ½øÐв¿·Öͬ²½£¬Èç²»³É¹¦£¬ÒªÇó´Ó»ú½øÐÐȫͬ²½£¬²¢Æô¶¯ BGSAVE¡¡BGSAVE
½áÊøºó£¬´«Êä RDB Îļþ£»Èç¹û³É¹¦£¬ÔÊÐí´Ó»ú½øÐв¿·Öͬ²½£¬²¢´«Êä»ýѹ¿Õ¼äÖеÄÊý¾Ý¡£¼òµ¥À´Ëµ£¬Ö÷´Óͬ²½¾ÍÊÇ
RDB ÎļþµÄÉÏ´«ÏÂÔØ£»Ö÷»úÓÐС²¿·ÖµÄÊý¾ÝÐ޸ģ¬¾Í°ÑÐ޸ļǼ´«²¥¸øÃ¿¸ö´Ó»ú¡£
3. redis¼¯Èº
Ö÷´Óģʽ´æÔÚµÄÎÊÌâÊÇ£¬masterå´»úÖ®ºó£¬´Ó»úÖ»ÄܶÁ£¬²»¿Éд£¬²»Äܱ£Ö¤¸ß¿ÉÓá£redis¼¯Èº¼¼ÊõÊǹ¹½¨¸ßÐÔÄÜÍøÕ¾¼Ü¹¹µÄÖØÒªÊֶΣ¬ÊÔÏëÔÚÍøÕ¾³ÐÊܸ߲¢·¢·ÃÎÊѹÁ¦µÄͬʱ£¬»¹ÐèÒª´Óº£Á¿Êý¾ÝÖвéѯ³öÂú×ãÌõ¼þµÄÊý¾Ý£¬²¢¿ìËÙÏìÓ¦£¬ÎÒÃDZØÈ»Ïëµ½µÄÊǽ«Êý¾Ý½øÐÐÇÐÆ¬£¬°ÑÊý¾Ý¸ù¾ÝijÖÖ¹æÔò·ÅÈë¶à¸ö²»Í¬µÄ·þÎñÆ÷½Úµã£¬À´½µµÍµ¥½Úµã·þÎñÆ÷µÄѹÁ¦¡£
Redis Cluster²ÉÓÃÎÞÖÐÐĽṹ£¬Ã¿¸ö½Úµã±£´æÊý¾ÝºÍÕû¸ö¼¯Èº×´Ì¬,ÿ¸ö½Úµã¶¼ºÍÆäËûËùÓнڵãÁ¬½Ó¡£½ÚµãÖ®¼äʹÓÃgossipÐÒé´«²¥ÐÅÏ¢ÒÔ¼°·¢ÏÖнڵ㡣
Redis ¼¯ÈºÊÇÒ»¸ö·Ö²¼Ê½£¨distributed£©¡¢ÈÝ´í£¨fault-tolerant£©µÄ Redis
ʵÏÖ£¬¼¯Èº¿ÉÒÔʹÓõŦÄÜÊÇÆÕͨµ¥»ú Redis ËùÄÜʹÓõŦÄܵÄÒ»¸ö×Ó¼¯£¨subset£©¡£
Redis ¼¯ÈºÖв»´æÔÚÖÐÐÄ£¨central£©½Úµã»òÕß´úÀí£¨proxy£©½Úµã£¬¼¯ÈºµÄÆäÖÐÒ»¸öÖ÷ÒªÉè¼ÆÄ¿±êÊÇ´ïµ½ÏßÐÔ¿ÉÀ©Õ¹ÐÔ£¨linear
scalability£©¡£
Redis ¼¯ÈºÎªÁ˱£Ö¤Ò»ÖÂÐÔ£¨consistency£©¶øÎþÉüÁËÒ»²¿·ÖÈÝ´íÐÔ£ºÏµÍ³»áÔÚ±£Ö¤¶ÔÍøÂç¶ÏÏߣ¨net
split£©ºÍ½ÚµãʧЧ£¨node failure£©¾ßÓÐÓÐÏÞ£¨limited£©µÖ¿¹Á¦µÄǰÌáÏ£¬¾¡¿ÉÄܵر£³ÖÊý¾ÝµÄÒ»ÖÂÐÔ¡£
4. °²×°²¿Êð
redis°²×°½ÏΪ¼òµ¥£¬¹ÙÍøÏÂÔØÑ¹Ëõ°ü½âѹ¡£¼¯ÈºÄ£Ê½ÐèÒªrubyµÄ±àÒë»·¾³£¬¼¯Èº×îСµÄÅäÖÃΪ3̨master£¬Ð¡ÓÚ3ÔòÆô¶¯¼¯Èº±¨´í¡£
redis°æ±¾£º3.2.4
4.1 Ö÷´ÓÄ£Ê½ÍØÆËͼ

Ö÷´ÓÄ£Ê½ÍØÆËͼ
Ö÷´Óģʽ²ÉÓÃÒ»Ö÷Èý´Ó£¬Ö÷´Ó¶¼ÅäÖÃauthÈÏÖ¤£¬¶Áд·ÖÀë¡£
Ö÷ҪʵÑéµÄ¶¯×÷£º
1£©¶à¸öapp ͬʱд£¬²â¶¨Ð´ËÙÂÊ£»
2£©¶à¸öapp ͬʱд£¬Í¬Ê±ÓжÁµÄ½ø³Ì£¬²â¶¨¶ÁдËÙÂÊ£»
3£©masterÖ÷»úå´»ú£¬appÒÀÈ»½øÐжÁд¡£
4.2 clusterÍØÆËͼÈçÏÂ

cluster
¼¯ÈºÄ£Ê½²ÉÓÃËÄÖ÷ËÄ´Ó£¬Ò²ÊDzÉÓöÁд·ÖÀë¡£
Ö÷ҪʵÑéµÄ¶¯×÷£º
1£©ÓÐÒ»¸ömasterå´»ú£¬¹Û²ìÈÕÖ¾£¬ÐµÄslave³ÉΪmaster£»
2£©masterå´»úºó£¬ÖØÐÂÆô¶¯£¬master³ÉΪslave£»
3£©¼¯ÈºÈ«²¿å´»ú£¬redisÖ÷»úÖØÆô£¬Êý¾Ýδ¶ªÊ§¡£
5. ÔÀí
5.1 Ò»ÖÂÐÔ
filesnapshot:ĬÈÏredisÊÇ»áÒÔ¿ìÕÕµÄÐÎʽ½«Êý¾Ý³Ö¾Ã»¯µ½´ÅÅÌ,ÔÚÅäÖÃÎļþÖеĸñʽÊÇ£ºsave
N M±íʾÔÚNÃëÖ®ÄÚ£¬redisÖÁÉÙ·¢ÉúM´ÎÐÞ¸ÄÔòredis×¥¿ìÕÕµ½´ÅÅÌ¡£
¹¤×÷ÔÀí£ºµ±redisÐèÒª×ö³Ö¾Ã»¯Ê±£¬redis»áforkÒ»¸ö×Ó½ø³Ì£»×Ó½ø³Ì½«Êý¾Ýдµ½´ÅÅÌÉÏÒ»¸öÁÙʱRDBÎļþÖУ»µ±×Ó½ø³ÌÍê³ÉдÁÙʱÎļþºó£¬½«ÔÀ´µÄRDBÌæ»»µô£¬ÕâÑùµÄºÃ´¦¾ÍÊÇ¿ÉÒÔcopy-on-write¡£
Append-only£ºfilesnapshotting·½·¨ÔÚredisÒì³£ËÀµôʱ£¬ ×î½üµÄÊý¾Ý»á¶ªÊ§£¨¶ªÊ§Êý¾ÝµÄ¶àÉÙÊÓÄãsave²ßÂÔµÄÅäÖã©£¬ËùÒÔÕâÊÇËü×î´óµÄȱµã£¬µ±ÒµÎñÁ¿ºÜ´óʱ£¬¶ªÊ§µÄÊý¾ÝÊǺܶàµÄ¡£Append-only·½·¨¿É
ÒÔ×öµ½È«²¿Êý¾Ý²»¶ªÊ§£¬µ«redisµÄÐÔÄܾÍÒª²îЩ¡£AOF¾Í¿ÉÒÔ×öµ½È«³Ì³Ö¾Ã»¯£¬Ö»ÐèÒªÔÚÅäÖÃÎļþÖпªÆô£¨Ä¬ÈÏÊÇno£©£¬appendonly
yes¿ªÆôAOFÖ®ºó£¬redisÿִÐÐÒ»¸öÐÞ¸ÄÊý¾ÝµÄÃüÁ¶¼»á°ÑËüÌí¼Óµ½aofÎļþÖУ¬µ±redisÖØÆôʱ£¬½«»á¶ÁÈ¡AOFÎļþ½øÐС°ÖØ·Å¡±ÒÔ»Ö¸´µ½
redis¹Ø±ÕǰµÄ×îºóʱ¿Ì¡£
AOFÎļþˢеķ½Ê½£¬ÓÐÈýÖÖ£¬²Î¿¼ÅäÖòÎÊýappendfsync £º
appendfsync alwaysÿÌá½»Ò»¸öÐÞ¸ÄÃüÁî¶¼µ÷ÓÃfsyncˢе½AOFÎļþ£¬·Ç³£·Ç³£Âý£¬µ«Ò²·Ç³£°²È«£»
appendfsync everysecÿÃëÖÓ¶¼µ÷ÓÃfsyncˢе½AOFÎļþ£¬ºÜ¿ì£¬µ«¿ÉÄܻᶪʧһÃëÒÔÄÚµÄÊý¾Ý£»
appendfsync noÒÀ¿¿OS½øÐÐˢУ¬redis²»Ö÷¶¯Ë¢ÐÂAOF£¬ÕâÑù×î¿ì£¬µ«°²È«ÐԾͲĬÈϲ¢ÍƼöÿÃëˢУ¬ÕâÑùÔÚËٶȺͰ²È«É϶¼×öµ½Á˼æ¹Ë¡£
SlaveͬÑù¿ÉÒÔ½ÓÊÜÆäËüSlavesµÄÁ¬½ÓºÍͬ²½ÇëÇó£¬ÕâÑù¿ÉÒÔÓÐЧµÄ·ÖÔØMasterµÄͬ²½Ñ¹Á¦¡£Òò´ËÎÒÃÇ¿ÉÒÔ½«RedisµÄReplication¼Ü¹¹ÊÓΪͼ½á¹¹¡£
Master ServerÊÇÒÔ·Ç×èÈûµÄ·½Ê½ÎªSlavesÌṩ·þÎñ¡£ËùÒÔÔÚMaster-Slaveͬ²½ÆÚ¼ä£¬¿Í»§¶ËÈÔÈ»¿ÉÒÔÌá½»²éѯ»òÐÞ¸ÄÇëÇó¡£
Slave ServerͬÑùÊÇÒÔ·Ç×èÈûµÄ·½Ê½Íê³ÉÊý¾Ýͬ²½¡£ÔÚͬ²½ÆÚ¼ä£¬Èç¹ûÓпͻ§¶ËÌá½»²éѯÇëÇó£¬RedisÔò·µ»ØÍ¬²½Ö®Ç°µÄÊý¾Ý¡£
ΪÁË·ÖÔØMasterµÄ¶Á²Ù×÷ѹÁ¦£¬Slave·þÎñÆ÷¿ÉÒÔΪ¿Í»§¶ËÌṩֻ¶Á²Ù×÷µÄ·þÎñ£¬Ð´·þÎñÈÔÈ»±ØÐëÓÉMasterÀ´Íê³É¡£¼´±ãÈç´Ë£¬ÏµÍ³µÄÉìËõÐÔ»¹Êǵõ½Á˺ܴóµÄÌá¸ß¡£
Master¿ÉÒÔ½«Êý¾Ý±£´æ²Ù×÷½»¸øSlavesÍê³É£¬´Ó¶ø±ÜÃâÁËÔÚMasterÖÐÒªÓжÀÁ¢µÄ½ø³ÌÀ´Íê³É´Ë²Ù×÷¡£
RedisÔÚmasterÊÇ·Ç×èÈûģʽ£¬Ò²¾ÍÊÇ˵ÔÚslaveÖ´ÐÐÊý¾Ýͬ²½µÄʱºò£¬masterÊÇ¿ÉÒÔ½ÓÊܿͻ§¶ËµÄÇëÇóµÄ£¬²¢²»Ó°Ïìͬ²½Êý¾ÝµÄÒ»ÖÂÐÔ£¬È»¶øÔÚslave¶ËÊÇ×èÈûģʽµÄ£¬slaveÔÚͬ²½masterÊý¾Ýʱ£¬²¢²»Äܹ»ÏìÓ¦¿Í»§¶ËµÄ²éѯ¡£
5.2 ReplicationµÄ¹¤×÷ÔÀí
(1)Slave·þÎñÆ÷Á¬½Óµ½Master·þÎñÆ÷¡£
(2)Slave·þÎñÆ÷·¢ËÍSYCNÃüÁî¡£
(3)Master·þÎñÆ÷±¸·ÝÊý¾Ý¿âµ½.rdbÎļþ¡£
(4)Master·þÎñÆ÷°Ñ.rdbÎļþ´«Ê䏸Slave·þÎñÆ÷¡£
(5)Slave·þÎñÆ÷°Ñ.rdbÎļþÊý¾Ýµ¼Èëµ½Êý¾Ý¿âÖС£
ÔÚSlaveÆô¶¯²¢Á¬½Óµ½MasterÖ®ºó£¬Ëü½«Ö÷¶¯·¢ËÍÒ»¸öSYNCÃüÁî¡£´ËºóMaster½«Æô¶¯ºǫ́´æÅ̽ø³Ì£¬Í¬Ê±ÊÕ¼¯ËùÓнÓÊÕµ½µÄÓÃÓÚÐÞ¸ÄÊý¾Ý¼¯
µÄÃüÁÔÚºǫ́½ø³ÌÖ´ÐÐÍê±Ïºó£¬Master½«´«ËÍÕû¸öÊý¾Ý¿âÎļþµ½Slave£¬ÒÔÍê³ÉÒ»´ÎÍêȫͬ²½¡£¶øSlave·þÎñÆ÷ÔÚ½ÓÊÕµ½Êý¾Ý¿âÎļþÊý¾ÝÖ®ºó½«Æä
´æÅ̲¢¼ÓÔØµ½ÄÚ´æÖС£´Ëºó£¬Master¼ÌÐø½«ËùÓÐÒѾÊÕ¼¯µ½µÄÐÞ¸ÄÃüÁºÍеÄÐÞ¸ÄÃüÁîÒÀ´Î´«Ë͸øSlaves£¬Slave½«ÔÚ±¾´ÎÖ´ÐÐÕâЩÊý¾ÝÐÞ¸ÄÃüÁ´Ó¶ø´ïµ½×îÖÕµÄÊý¾Ýͬ²½¡£Èç¹ûMasterºÍSlaveÖ®¼äµÄÁ´½Ó³öÏÖ¶ÏÁ¬ÏÖÏó£¬Slave¿ÉÒÔ×Ô¶¯ÖØÁ¬Master£¬µ«ÊÇÔÚÁ¬½Ó³É¹¦Ö®ºó£¬Ò»´ÎÍêȫͬ²½½«±»×Ô¶¯Ö´ÐС£
5.3 Ò»ÖÂÐÔ¹þÏ£
¼¯ÈºÒªÊµÏÖµÄÄ¿µÄÊÇÒª½«²»Í¬µÄ key ·ÖÉ¢·ÅÖõ½²»Í¬µÄ redis ½Úµã£¬ÕâÀïÎÒÃÇÐèÒªÒ»¸ö¹æÔò»òÕßËã·¨£¬Í¨³£µÄ×ö·¨ÊÇ»ñÈ¡
key µÄ¹þÏ£Öµ£¬È»ºó¸ù¾Ý½ÚµãÊýÀ´ÇóÄ££¬µ«ÕâÖÖ×ö·¨ÓÐÆäÃ÷ÏԵı׶ˣ¬µ±ÎÒÃÇÐèÒªÔö¼Ó»ò¼õÉÙÒ»¸ö½Úµãʱ£¬»áÔì³É´óÁ¿µÄ
key ÎÞ·¨ÃüÖУ¬ÕâÖÖ±ÈÀýÊÇÏ൱¸ßµÄ£¬ËùÒÔ¾ÍÓÐÈËÌá³öÁËÒ»ÖÂÐÔ¹þÏ£µÄ¸ÅÄî¡£
Ò»ÖÂÐÔ¹þÏ£ÓÐËĸöÖØÒªÌØÕ÷£º
¾ùºâÐÔ£ºÒ²ÓÐÈ˰ÑËü¶¨ÒåΪƽºâÐÔ£¬ÊÇÖ¸¹þÏ£µÄ½á¹ûÄܹ»¾¡¿ÉÄÜ·Ö²¼µ½ËùÓеĽڵãÖÐÈ¥£¬ÕâÑù¿ÉÒÔÓÐЧµÄÀûÓÃÿ¸ö½ÚµãÉϵÄ×ÊÔ´¡£
µ¥µ÷ÐÔ£º¶ÔÓÚµ¥µ÷ÐÔÓкܶà·ÒëÈÃÎҷdz£µÄ²»½â£¬¶øÎÒÏëÒªµÄÊǵ±½ÚµãÊýÁ¿±ä»¯Ê±¹þÏ£µÄ½á¹ûÓ¦¾¡¿ÉÄܵı£»¤ÒÑ·ÖÅäµÄÄÚÈݲ»»á±»ÖØÐ·ÖÅɵ½ÐµĽڵ㡣
·ÖÉ¢ÐԺ͸ºÔØ£ºÕâÁ½¸öÆäʵÊDz¶àµÄÒâ˼£¬¾ÍÊÇÒªÇóÒ»ÖÂÐÔ¹þÏ£Ëã·¨¶Ô key ¹þÏ£Ó¦¾¡¿ÉÄܵıÜÃâÖØ¸´¡£
Redis ¼¯ÈºÖÐÄÚÖÃÁË 16384 ¸ö¹þÏ£²Û£¬µ±ÐèÒªÔÚ Redis ¼¯ÈºÖзÅÖÃÒ»¸ö key-value
ʱ£¬redis ÏÈ¶Ô key ʹÓà crc16 Ëã·¨Ëã³öÒ»¸ö½á¹û£¬È»ºó°Ñ½á¹û¶Ô 16384 ÇóÓàÊý£¬ÕâÑùÿ¸ö
key ¶¼»á¶ÔÓ¦Ò»¸ö±àºÅÔÚ 0-16383 Ö®¼äµÄ¹þÏ£²Û£¬redis »á¸ù¾Ý½ÚµãÊýÁ¿´óÖ¾ùµÈµÄ½«¹þÏ£²ÛÓ³Éäµ½²»Í¬µÄ½Úµã¡£
ʹÓùþÏ£²ÛµÄºÃ´¦¾ÍÔÚÓÚ¿ÉÒÔ·½±ãµÄÌí¼Ó»òÒÆ³ý½Úµã¡£
µ±ÐèÒªÔö¼Ó½Úµãʱ£¬Ö»ÐèÒª°ÑÆäËû½ÚµãµÄijЩ¹þÏ£²ÛŲµ½Ð½ڵã¾Í¿ÉÒÔÁË£»
µ±ÐèÒªÒÆ³ý½Úµãʱ£¬Ö»ÐèÒª°ÑÒÆ³ý½ÚµãÉϵĹþÏ£²ÛŲµ½ÆäËû½Úµã¾ÍÐÐÁË£»
µ±ÉèÖÃÁËÖ÷´Ó¹ØÏµºó£¬slave ÔÚµÚÒ»´ÎÁ¬½Ó»òÕßÖØÐÂÁ¬½Ó master ʱ£¬slave ¶¼»á·¢ËÍÒ»Ìõͬ²½Ö¸Áî¸ø
master£»
master ½Óµ½Ö¸Áîºó£¬¿ªÊ¼Æô¶¯ºǫ́±£´æ½ø³Ì±£´æÊý¾Ý£¬½Ó×ÅÊÕ¼¯ËùÓеÄÊý¾ÝÐÞ¸ÄÖ¸Áî¡£ºǫ́±£´æÍêÁË£¬master
¾Í°ÑÕâ·ÝÊý¾Ý·¢Ë͸ø slave£¬slave ÏȰÑÊý¾Ý±£´æµ½´ÅÅÌ£¬È»ºó°ÑËü¼ÓÔØµ½ÄÚ´æÖУ¬master
½ÓמͰÑÊÕ¼¯µÄÊý¾ÝÐÞ¸ÄÖ¸ÁîÒ»ÐÐÒ»Ðеķ¢¸ø slave£¬slave ½ÓÊÕµ½Ö®ºóÖØÐÂÖ´ÐиÃÖ¸ÁÕâÑù¾ÍʵÏÖÁËÊý¾Ýͬ²½¡£
slave ÔÚÓë master ʧȥÁªÏµºó£¬×Ô¶¯µÄÖØÐÂÁ¬½Ó¡£Èç¹û master ÊÕµ½Á˶à¸ö slave
µÄͬ²½ÇëÇó£¬Ëü»áÖ´Ðе¥¸öºǫ́±£´æÀ´ÎªËùÓÐµÄ slave ·þÎñ¡£
5.4 ½ÚµãʧЧ¼ì²â
ÒÔÏÂÊǽڵãʧЧ¼ì²éµÄʵÏÖ·½·¨£º
µ±Ò»¸ö½ÚµãÏòÁíÒ»¸ö½Úµã·¢ËÍ PING ÃüÁµ«ÊÇÄ¿±ê½ÚµãδÄÜÔÚ¸ø¶¨µÄʱÏÞÄÚ·µ»Ø PING ÃüÁîµÄ»Ø¸´Ê±£¬ÄÇô·¢ËÍÃüÁîµÄ½Úµã»á½«Ä¿±ê½Úµã±ê¼ÇΪPFAIL
£¨possible failure£¬¿ÉÄÜÒÑʧЧ£©¡£
µÈ´ý PING ÃüÁî»Ø¸´µÄʱÏÞ³ÆÎª¡°½Úµã³¬Ê±Ê±ÏÞ£¨node timeout£©¡±£¬ÊÇÒ»¸ö½ÚµãÑ¡Ïnode-wise
setting£©¡£
ÿ´Îµ±½Úµã¶ÔÆäËû½Úµã·¢ËÍ PING ÃüÁîµÄʱºò£¬Ëü¶¼»áËæ»úµØ¹ã²¥Èý¸öËüËùÖªµÀµÄ½ÚµãµÄÐÅÏ¢£¬ÕâЩÐÅÏ¢ÀïÃæµÄÆäÖÐÒ»Ïî¾ÍÊÇ˵Ã÷½ÚµãÊÇ·ñÒѾ±»±ê¼ÇΪ
PFAIL »òÕß FAIL ¡£
µ±½Úµã½ÓÊÕµ½ÆäËû½Úµã·¢À´µÄÐÅϢʱ£¬Ëü»á¼ÇÏÂÄÇЩ±»ÆäËû½Úµã±ê¼ÇΪʧЧµÄ½Úµã¡£Õâ³ÆÎªÊ§Ð§±¨¸æ£¨failure
report£©¡£
Èç¹û½ÚµãÒѾ½«Ä³¸ö½Úµã±ê¼ÇΪ PFAIL £¬²¢ÇÒ¸ù¾Ý½ÚµãËùÊÕµ½µÄʧЧ±¨¸æÏÔʽ£¬¼¯ÈºÖÐµÄ´ó²¿·ÖÆäËûÖ÷½ÚµãÒ²ÈÏΪÄǸö½Úµã½øÈëÁËʧЧ״̬£¬ÄÇô½Úµã»á½«ÄǸöʧЧ½ÚµãµÄ״̬±ê¼ÇΪ
FAIL ¡£
Ò»µ©Ä³¸ö½Úµã±»±ê¼ÇΪ FAIL £¬¹ØÓÚÕâ¸ö½ÚµãÒÑʧЧµÄÐÅÏ¢¾Í»á±»¹ã²¥µ½Õû¸ö¼¯Èº£¬ËùÓнÓÊÕµ½ÕâÌõÐÅÏ¢µÄ½Úµã¶¼»á½«Ê§Ð§½Úµã±ê¼ÇΪ
FAIL ¡£
¼òµ¥À´Ëµ£¬Ò»¸ö½ÚµãÒª½«ÁíÒ»¸ö½Úµã±ê¼ÇΪʧЧ£¬±ØÐëÏÈѯÎÊÆäËû½ÚµãµÄÒâ¼û£¬²¢Çҵõ½´ó²¿·ÖÖ÷½ÚµãµÄͬÒâ²ÅÐС£ÒòΪ¹ýÆÚµÄʧЧ±¨¸æ»á±»ÒƳý£¬ËùÒÔÖ÷½ÚµãÒª½«Ä³¸ö½Úµã±ê¼ÇΪ
FAIL µÄ»°£¬±ØÐëÒÔ×î½ü½ÓÊÕµ½µÄʧЧ±¨¸æ×÷Ϊ¸ù¾Ý¡£
ÔÚÒÔÏÂÁ½ÖÖÇé¿öÖУ¬½ÚµãµÄ FAIL ״̬»á±»ÒƳý£º
Èç¹û±»±ê¼ÇΪ FAIL µÄÊǴӽڵ㣬ÄÇôµ±Õâ¸ö½ÚµãÖØÐÂÉÏÏßʱ£¬ FAIL ±ê¼Ç¾Í»á±»ÒƳý¡£±£³Ö£¨retaning£©´Ó½ÚµãµÄ
FAIL ״̬ÊÇûÓÐÒâÒåµÄ£¬ÒòΪËü²»´¦ÀíÈκβۣ¬Ò»¸ö´Ó½ÚµãÊÇ·ñ´¦ÓÚ FAIL ״̬£¬¾ö¶¨ÁËÕâ¸ö´Ó½ÚµãÔÚÓÐÐèҪʱÄÜ·ñ±»ÌáÉýΪÖ÷½Úµã¡£
Èç¹ûÒ»¸öÖ÷½Úµã±»´òÉÏ FAIL ±ê¼ÇÖ®ºó£¬¾¹ýÁ˽ڵ㳬ʱʱÏÞµÄËı¶Ê±¼ä£¬ÔÙ¼ÓÉÏÊ®ÃëÖÓÖ®ºó£¬Õë¶ÔÕâ¸öÖ÷½ÚµãµÄ²ÛµÄ¹ÊÕÏ×ªÒÆ²Ù×÷ÈÔδÍê³É£¬²¢ÇÒÕâ¸öÖ÷½ÚµãÒÑ¾ÖØÐÂÉÏÏߵϰ£¬ÄÇÃ´ÒÆ³ý¶ÔÕâ¸ö½ÚµãµÄ
FAIL ±ê¼Ç¡£
ÔÚµÚ¶þÖÖÇé¿öÖУ¬Èç¹û¹ÊÕÏ×ªÒÆÎ´ÄÜ˳ÀûÍê³É£¬²¢ÇÒÖ÷½ÚµãÖØÐÂÉÏÏߣ¬ÄÇô¼¯Èº¾Í¼ÌÐøÊ¹ÓÃÔÀ´µÄÖ÷½Úµã£¬´Ó¶øÃâÈ¥¹ÜÀíÔ±½éÈëµÄ±ØÒª¡£
5.5 ´Ó½ÚµãÑ¡¾Ù
Ò»µ©Ä³¸öÖ÷½Úµã½øÈë FAIL ״̬£¬Èç¹ûÕâ¸öÖ÷½ÚµãÓÐÒ»¸ö»ò¶à¸ö´Ó½Úµã´æÔÚ£¬ÄÇôÆäÖÐÒ»¸ö´Ó½Úµã»á±»Éý¼¶ÎªÐµÄÖ÷½Úµã£¬¶øÆäËû´Ó½ÚµãÔò»á¿ªÊ¼¶ÔÕâ¸öеÄÖ÷½Úµã½øÐи´ÖÆ¡£
еÄÖ÷½ÚµãÓÉÒÑÏÂÏßÖ÷½ÚµãÊôϵÄËùÓдӽڵãÖÐ×ÔÐÐÑ¡¾Ù²úÉú£¬ÒÔÏÂÊÇÑ¡¾ÙµÄÌõ¼þ£º
Õâ¸ö½ÚµãÊÇÒÑÏÂÏßÖ÷½ÚµãµÄ´Ó½Úµã¡£
ÒÑÏÂÏßÖ÷½Úµã¸ºÔð´¦ÀíµÄ²ÛÊýÁ¿·Ç¿Õ¡£
´Ó½ÚµãµÄÊý¾Ý±»ÈÏΪÊǿɿ¿µÄ£¬Ò²¼´ÊÇ£¬Ö÷´Ó½ÚµãÖ®¼äµÄ¸´ÖÆÁ¬½Ó£¨replication link£©µÄ¶ÏÏßʱ³¤²»Äܳ¬¹ý½Úµã³¬Ê±Ê±ÏÞ£¨node
timeout£©³ËÒÔREDIS_CLUSTER_SLAVE_VALIDITY_MULT ³£Á¿µÃ³öµÄ»ý¡£
Èç¹ûÒ»¸ö´Ó½ÚµãÂú×ãÁËÒÔÉϵÄËùÓÐÌõ¼þ£¬ÄÇôÕâ¸ö´Ó½Úµã½«Ïò¼¯ÈºÖÐµÄÆäËûÖ÷½Úµã·¢ËÍÊÚȨÇëÇó£¬Ñ¯ÎÊËüÃÇ£¬ÊÇ·ñÔÊÐí×Ô¼º£¨´Ó½Úµã£©Éý¼¶ÎªÐµÄÖ÷½Úµã¡£
Èç¹û·¢ËÍÊÚȨÇëÇóµÄ´Ó½ÚµãÂú×ãÒÔÏÂÊôÐÔ£¬ÄÇôÖ÷½Úµã½«Ïò´Ó½Úµã·µ»Ø FAILOVER_AUTH_GRANTED
ÊÚȨ£¬Í¬Òâ´Ó½ÚµãµÄÉý¼¶ÒªÇó£º
·¢ËÍÊÚȨÇëÇóµÄÊÇÒ»¸ö´Ó½Úµã£¬²¢ÇÒËüËùÊôµÄÖ÷½Úµã´¦ÓÚ FAIL ״̬¡£
ÔÚÒÑÏÂÏßÖ÷½ÚµãµÄËùÓдӽڵãÖУ¬Õâ¸ö´Ó½ÚµãµÄ½Úµã ID ÔÚÅÅÐòÖÐÊÇ×îСµÄ¡£
´Ó½Úµã´¦ÓÚÕý³£µÄÔËÐÐ״̬£ºËüûÓб»±ê¼ÇΪ FAIL ״̬£¬Ò²Ã»Óб»±ê¼ÇΪ PFAIL ״̬¡£
Ò»µ©Ä³¸ö´Ó½ÚµãÔÚ¸ø¶¨µÄʱÏÞÄڵõ½´ó²¿·ÖÖ÷½ÚµãµÄÊÚȨ£¬Ëü¾Í»á¿ªÊ¼Ö´ÐÐÒÔϹÊÕÏ×ªÒÆ²Ù×÷£º
ͨ¹ý PONG Êý¾Ý°ü£¨packet£©¸æÖªÆäËû½Úµã£¬Õâ¸ö½ÚµãÏÖÔÚÊÇÖ÷½ÚµãÁË¡£
ͨ¹ý PONG Êý¾Ý°ü¸æÖªÆäËû½Úµã£¬Õâ¸ö½ÚµãÊÇÒ»¸öÒÑÉý¼¶µÄ´Ó½Úµã£¨promoted slave£©¡£
½Ó¹Ü£¨claiming£©ËùÓÐÓÉÒÑÏÂÏßÖ÷½Úµã¸ºÔð´¦ÀíµÄ¹þÏ£²Û¡£
ÏÔʽµØÏòËùÓнڵã¹ã²¥Ò»¸ö PONG Êý¾Ý°ü£¬¼ÓËÙÆäËû½Úµãʶ±ðÕâ¸ö½ÚµãµÄ½ø¶È£¬¶ø²»Êǵȴý¶¨Ê±µÄ PING
/ PONG Êý¾Ý°ü¡£
ËùÓÐÆäËû½Úµã¶¼»á¸ù¾ÝеÄÖ÷½Úµã¶ÔÅäÖýøÐÐÏàÓ¦µÄ¸üУ¬ÌØ±ðµØ£º
a. ËùÓб»ÐµÄÖ÷½Úµã½Ó¹ÜµÄ²Û»á±»¸üС£
b. ÒÑÏÂÏßÖ÷½ÚµãµÄËùÓдӽڵã»á²ì¾õµ½ PROMOTED ±êÖ¾£¬²¢¿ªÊ¼¶ÔеÄÖ÷½Úµã½øÐи´ÖÆ¡£
c.Èç¹ûÒÑÏÂÏßµÄÖ÷½ÚµãÖØÐ»ص½ÉÏÏß״̬£¬ÄÇôËü»á²ì¾õµ½ PROMOTED ±êÖ¾£¬²¢½«×ÔÉíµ÷ÕûΪÏÖÈÎÖ÷½ÚµãµÄ´Ó½Úµã¡£
ÔÚ¼¯ÈºµÄÉúÃüÖÜÆÚÖУ¬Èç¹ûÒ»¸ö´øÓÐ PROMOTED ±êʶµÄÖ÷½ÚµãÒòΪijЩÔÒòת±ä³ÉÁ˴ӽڵ㣬ÄÇô¸Ã½Úµã½«¶ªÊ§ËüËù´øÓеÄ
PROMOTED ±êʶ¡£
6. ×ܽá
Redis¼¯Èº¾ßÓи߿ÉÓã¬Ò×ÓÚÇ¨ÒÆ£¬´æÈ¡ËÙ¶È¿ìµÈÌØµã¡£Ò²¿ÉÒÔ×÷ΪÏûÏ¢¶ÓÁÐʹÓã¬Ö§³Öpub/subģʽ£¬¾ßÌåÓÅȱµã×ܽáÈçÏ£º
Ê×ÏÈÓŵã:
redis ÔÚÖ÷½ÚµãÏÂÏߺ󣬴ӽڵã»á×Ô¶¯ÌáÉýΪÖ÷½Úµã£¬Ìṩ·þÎñ
redis å´»ú½Úµã»Ö¸´ºó£¬×Ô¶¯»áÌí¼Óµ½¼¯ÈºÖУ¬±ä³É´Ó½Úµã
¶¯Ì¬À©Õ¹ºÍɾ³ý½Úµã£¬rehash slotµÄ·ÖÅ䣬»ùÓÚͰµÄÊý¾Ý·Ö²¼·½Ê½´ó´ó½µµÍÁËÇ¨ÒÆ³É±¾£¬Ö»Ð轫Êý¾ÝͰ´ÓÒ»¸öRedis
NodeÇ¨ÒÆµ½ÁíÒ»¸öRedis Node¼´¿ÉÍê³ÉÇ¨ÒÆ¡£
Redis ClusterʹÓÃÒì²½¸´ÖÆ¡£
ÆäȱµãΪ:
ÓÉÓÚredisµÄ¸´ÖÆÊ¹ÓÃÒì²½»úÖÆ£¬ÔÚ×Ô¶¯¹ÊÕÏ×ªÒÆµÄ¹ý³ÌÖУ¬¼¯Èº¿ÉÄܻᶪʧдÃüÁȻ¶ø redis
¼¸ºõÊÇͬʱִÐÐ(½«ÃüÁî»Ö¸´·¢Ë͸ø¿Í»§¶Ë£¬ÒÔ¼°½«ÃüÁî¸´ÖÆµ½´Ó½Úµã)ÕâÁ½¸ö²Ù×÷£¬ËùÒÔʵ¼ÊÖУ¬ÃüÁʧµÄ´°¿Ú·Ç³£Ð¡¡£
ÆÕͨµÄÖ÷´Óģʽ֧³Öauth¼ÓÃÜÈÏÖ¤£¬ËäÈ»±È½ÏÈõ£¬µ«Ð´»òÕß¶Á¶¼ÒªÍ¨¹ýÃÜÂëÑéÖ¤£¬cluster¶ÔÃÜÂëÖ§³Ö²»Ì«ÓѺã¬Èç¹û¶Ô¼¯ÈºÉèÖÃÃÜÂ룬ÄÇôrequirepassºÍmasterauth¶¼ÐèÒªÉèÖ㬷ñÔò·¢ÉúÖ÷´ÓÇл»Ê±£¬¾Í»áÓöµ½ÊÚȨÎÊÌ⣬¿ÉÒÔÄ£Äâ²¢¹Û²ìÈÕÖ¾¡£ |