Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Redis ClusterÉîÈëÓëʵ¼ù
 
  2386  次浏览      28
 2018-1-29  
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ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¶¼ÐèÒªÉèÖ㬷ñÔò·¢ÉúÖ÷´ÓÇл»Ê±£¬¾Í»áÓöµ½ÊÚȨÎÊÌ⣬¿ÉÒÔÄ£Äâ²¢¹Û²ìÈÕÖ¾¡£

   
2386 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ