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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ö²¼Ê½Ö®¾ñÔñ·Ö²¼Ê½Ëø¡ª¡ª¶à¸ö·½Î»±È½Ï
 
×÷Õߣº¹Â¶ÀÑÌ
  1229  次浏览      27
2022-2-14
 
±à¼­ÍƼö:
±¾ÎĽéÉÜÁËΪʲôʹÓ÷ֲ¼Ê½Ëø¡¢µ¥»úÇéÐαȽϡ¢¼¯ÈºÇéÐαȽϡ¢ËøµÄÆäËûÌØÐԱȽϡ£
±¾ÎÄÀ´×Ô51CTO£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­¡¢ÍƼö¡£

ÒýÑÔ

ΪʲôдÕâÆªÎÄÕÂ?

Ä¿Ç°ÍøÉϴ󲿷ֵĻùÓÚzookeeper£¬ºÍredisµÄ·Ö²¼Ê½ËøµÄÎÄÕ¶¼²»¹»È«Ã档Ҫô¾ÍÊÇÌØÒâ±Ü¿ª¼¯ÈºµÄÇé¿ö£¬ÒªÃ´¾ÍÊÇ¿¼ÂDz»È«£¬¶ÁÕß¿´×Å»¹ÊÇÒ»Á³ÃÔ㡣̹°×˵£¬ÕâÖÖÀÏÌâ²Ä£¬ºÜÄÑд³öд´Ò⣬²©Ö÷ÄÚÐÄÕ½Õ½¾¤¾¤£¬ÈçÂı¡±ù£¬ÎÄÖÐÓÐʲô²»ÑϽ÷Ö®´¦£¬»¶Ó­ÅúÆÀ¡£

²©Ö÷µÄÕâÆªÎÄÕ£¬²»ÉÏ´úÂ룬ֻ½²·ÖÎö¡£

(1)ÔÚredis·½Ã棬ÓпªÔ´redissonµÄjar°ü¹©ÄãʹÓá£

(2)ÔÚzookeeper·½Ã棬ÓпªÔ´µÄcuratorµÄjar°ü¹©ÄãʹÓÃ

ÒòΪÒѾ­ÓпªÔ´jar°ü¹©ÄãʹÓã¬Ã»ÓбØÒªÔÙÈ¥×Ô¼º·â×°Ò»¸ö£¬´ó¼Ò³öÃŰٶÈÒ»¸öapi¼´¿É£¬²»ÐèÒªÔÙÂÞÁÐÒ»¶ÑʵÏÖ´úÂë¡£

ÐèҪ˵Ã÷µÄÊÇ£¬GoogleÓÐÒ»¸öÃûΪChubbyµÄ´ÖÁ£¶È·Ö²¼ËøµÄ·þÎñ£¬È»¶ø£¬Google Chubby²¢²»ÊÇ¿ªÔ´µÄ£¬ÎÒÃÇÖ»ÄÜͨ¹ýÆäÂÛÎÄºÍÆäËûÏà¹ØµÄÎĵµÖÐÁ˽â¾ßÌåµÄϸ½Ú¡£ÖµµÃÇìÐÒµÄÊÇ£¬Yahoo£¡½è¼øChubbyµÄÉè¼ÆË¼Ï뿪·¢ÁËzookeeper£¬²¢½«Æä¿ªÔ´£¬Òò´Ë±¾ÎIJ»ÌÖÂÛChubby¡£ÖÁÓÚTair£¬Êǰ¢À↑ԴµÄÒ»¸ö·Ö²¼Ê½K-V´æ´¢·½°¸¡£ÎÒÃÇÔÚ¹¤×÷Öлù±¾ÉÏredisʹÓõıȽ϶࣬ÌÖÂÛTairËùʵÏֵķֲ¼Ê½Ëø£¬²»¾ßÓдú±íÐÔ¡£

Òò´Ë£¬Ö÷Òª·ÖÎöµÄ»¹ÊÇredisºÍzookeeperËùʵÏֵķֲ¼Ê½Ëø¡£

ÎÄÕ½ṹ

±¾ÎÄ½è¼øÁËÁ½Æª¹úÍâ´óÉñµÄÎÄÕ£¬redisµÄ×÷ÕßantirezµÄ¡¶

Is Redlock safe?

¡·ÒÔ¼°·Ö²¼Ê½ÏµÍ³×¨¼ÒMartinµÄ¡¶

How to do distributed locking

¡·£¬ÔÙ¼ÓÉÏ×Ô¼ºÎ¢±¡µÄ¼û½â´Ó¶øÐγÉÕâÆªÎÄÕ£¬ÎÄÕµÄĿ¼½á¹¹ÈçÏ£º

(1)ΪʲôʹÓ÷ֲ¼Ê½Ëø

(2)µ¥»úÇéÐαȽÏ

(3)¼¯ÈºÇéÐαȽÏ

(4)ËøµÄÆäËûÌØÐԱȽÏ

ÕýÎÄ

ÏÈÉϽáÂÛ£º

zookeeper¿É¿¿ÐÔ±Èredisǿ̫¶à£¬Ö»ÊÇЧÂʵÍÁ˵㣬Èç¹û²¢·¢Á¿²»ÊÇÌØ±ð´ó£¬×·Çó¿É¿¿ÐÔ£¬***zookeeper¡£ÎªÁËЧÂÊ£¬Ôò***redisʵÏÖ¡£

ΪʲôʹÓ÷ֲ¼Ê½Ëø£¿

ʹÓ÷ֲ¼Ê½ËøµÄÄ¿µÄ£¬ÎÞÍâºõ¾ÍÊDZ£Ö¤Í¬Ò»Ê±¼äÖ»ÓÐÒ»¸ö¿Í»§¶Ë¿ÉÒÔ¶Ô¹²Ïí×ÊÔ´½øÐвÙ×÷¡£

µ«ÊÇMartinÖ¸³ö£¬¸ù¾ÝËøµÄÓÃ;»¹¿ÉÒÔϸ·ÖΪÒÔÏÂÁ½Àࣺ

(1)ÔÊÐí¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´

ÕâÖÖÇé¿öÏ£¬¶Ô¹²Ïí×ÊÔ´µÄ²Ù×÷Ò»¶¨ÊÇÃݵÈÐÔ²Ù×÷£¬ÎÞÂÛÄã²Ù×÷¶àÉٴζ¼²»»á³öÏÖ²»Í¬½á¹û¡£ÔÚÕâÀïʹÓÃËø£¬ÎÞÍâºõ¾ÍÊÇΪÁ˱ÜÃâÖØ¸´²Ù×÷¹²Ïí×ÊÔ´´Ó¶øÌá¸ßЧÂÊ¡£

(2)Ö»ÔÊÐíÒ»¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´

ÕâÖÖÇé¿öÏ£¬¶Ô¹²Ïí×ÊÔ´µÄ²Ù×÷Ò»°ãÊÇ·ÇÃݵÈÐÔ²Ù×÷¡£ÔÚÕâÖÖÇé¿öÏ£¬Èç¹û³öÏÖ¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´£¬¾Í¿ÉÄÜÒâζ×ÅÊý¾Ý²»Ò»Ö£¬Êý¾Ý¶ªÊ§¡£

***»ØºÏ£¬µ¥»úÇéÐαȽÏ

(1)redis

ÏÈ˵¼ÓËø£¬¸ù¾Ýredis¹ÙÍøÎĵµµÄÃèÊö£¬Ê¹ÓÃÏÂÃæµÄÃüÁî¼ÓËø

SET resource_name my_random_value NX PX 30000

my_random_valueÊÇÓɿͻ§¶ËÉú³ÉµÄÒ»¸öËæ»ú×Ö·û´®£¬Ï൱ÓÚÊǿͻ§¶Ë³ÖÓÐËøµÄ±êÖ¾

NX±íʾֻÓе±resource_name¶ÔÓ¦µÄkeyÖµ²»´æÔÚµÄʱºò²ÅÄÜSET³É¹¦£¬Ï൱ÓÚÖ»ÓÐ***¸öÇëÇóµÄ¿Í»§¶Ë²ÅÄÜ»ñµÃËø

PX 30000±íʾÕâ¸öËøÓÐÒ»¸ö30ÃëµÄ×Ô¶¯¹ýÆÚʱ¼ä¡£

ÖÁÓÚ½âËø£¬ÎªÁË·ÀÖ¹¿Í»§¶Ë1»ñµÃµÄËø£¬±»¿Í»§¶Ë2¸øÊÍ·Å,²ÉÓÃÏÂÃæµÄLua½Å±¾À´ÊÍ·ÅËø

if redis.call("get",KEYS[1]) == ARGV[1] then

return redis.call("del",KEYS[1])

else

return 0

ÔÚÖ´ÐÐÕâ¶ÎLUA½Å±¾µÄʱºò£¬KEYS[1]µÄֵΪresource_name£¬ARGV[1]µÄֵΪmy_random_value¡£Ô­Àí¾ÍÊÇÏÈ»ñÈ¡Ëø¶ÔÓ¦µÄvalueÖµ£¬±£Ö¤ºÍ¿Í»§¶Ë´©½øÈ¥µÄmy_random_valueÖµÏàµÈ£¬ÕâÑù¾ÍÄܱÜÃâ×Ô¼ºµÄËø±»ÆäËûÈËÊÍ·Å¡£ÁíÍ⣬²ÉÈ¡Lua½Å±¾²Ù×÷±£Ö¤ÁËÔ­×ÓÐÔ.Èç¹û²»ÊÇÔ­×ÓÐÔ²Ù×÷£¬ÔòÓÐÁËÏÂÊöÇé¿ö³öÏÖ£º

·ÖÎö:ÕâÌ×redis¼Ó½âËø»úÖÆ¿´ÆðÀ´ºÜ***£¬È»¶øÓÐÒ»¸öÎÞ·¨±ÜÃâµÄÓ²ÉË£¬¾ÍÊǹýÆÚʱ¼äÈçºÎÉèÖá£Èç¹û¿Í»§¶ËÔÚ²Ù×÷¹²Ïí×ÊÔ´µÄ¹ý³ÌÖУ¬ÒòΪ³¤ÆÚ×èÈûµÄÔ­Òò£¬µ¼ÖÂËø¹ýÆÚ£¬ÄÇô½ÓÏÂÀ´·ÃÎʹ²Ïí×ÊÔ´¾Í²»°²È«¡£

¿ÉÊÇ£¬ÓеÄÈË»á˵

ÄÇ¿ÉÒÔÔÚ¿Í»§¶Ë²Ù×÷Íê¹²Ïí×ÊÔ´ºó£¬ÅжÏËøÊÇ·ñÒÀÈ»¹é¸Ã¿Í»§¶ËËùÓУ¬Èç¹ûÒÀÈ»¹é¿Í»§¶ËËùÓУ¬ÔòÌá½»×ÊÔ´£¬ÊÍ·ÅËø¡£Èô²»¹é¿Í»§¶ËËùÓУ¬Ôò²»Ìá½»×ÊÔ´°¡£¡

OK,Õâô×ö£¬Ö»ÄܽµµÍ¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´·¢ÉúµÄ¸ÅÂÊ£¬²¢²»Äܽâ¾öÎÊÌâ¡£

ΪÁË·½±ã¶ÁÕßÀí½â£¬²©Ö÷¾ÙÒ»¸öÒµÎñ³¡¾°¡£

ÒµÎñ³¡¾°£ºÎÒÃÇÓÐÒ»¸öÄÚÈÝÐÞ¸ÄÒ³Ãæ£¬ÎªÁ˱ÜÃâ³öÏÖ¶à¸ö¿Í»§¶ËÐÞ¸Äͬһ¸öÒ³ÃæµÄÇëÇ󣬲ÉÓ÷ֲ¼Ê½Ëø¡£Ö»ÓлñµÃËøµÄ¿Í»§¶Ë£¬²ÅÄÜÐÞ¸ÄÒ³Ãæ¡£ÄÇôÕý³£ÐÞ¸ÄÒ»´ÎÒ³ÃæµÄÁ÷³ÌÈçÏÂͼËùʾ£º

×¢Òâ¿´£¬ÉÏÃæµÄ²½Öè(3)-->²½Öè(4.1)²¢²»ÊÇÔ­×ÓÐÔ²Ù×÷¡£Ò²¾Í˵£¬Äã¿ÉÄܳöÏÖÔÚ²½Öè(3)µÄʱºò·µ»ØµÄÊÇÓÐЧÕâ¸ö±ê־룬µ«ÊÇÔÚ´«Êä¹ý³ÌÖУ¬ÒòΪÑÓʱµÈÔ­Òò£¬ÔÚ²½Öè(4.1)µÄʱºò£¬ËøÒѾ­³¬Ê±Ê§Ð§ÁË¡£ÄÇô£¬Õâ¸öʱºòËø¾Í»á±»ÁíÒ»¸ö¿Í»§¶ËËø»ñµÃ¡£¾Í³öÏÖÁËÁ½¸ö¿Í»§¶Ë¹²Í¬²Ù×÷¹²Ïí×ÊÔ´µÄÇé¿ö¡£

´ó¼Ò¿ÉÒÔ˼¿¼Ò»Ï£¬ÎÞÂÛÄãÈçºÎ²ÉÓÃÈκβ¹³¥ÊֶΣ¬Äã¶¼Ö»ÄܽµµÍ¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´µÄ¸ÅÂÊ£¬¶øÎÞ·¨±ÜÃâ¡£ÀýÈ磬ÄãÔÚ²½Öè(4.1)µÄʱºòÒ²¿ÉÄÜ·¢Éú³¤Ê±¼äGCÍ£¶Ù£¬È»ºóÔÚÍ£¶ÙµÄʱºò£¬Ëø³¬Ê±Ê§Ð§£¬´Ó¶øËøÒ²ÓпÉÄܱ»ÆäËû¿Í»§¶Ë»ñµÃ¡£ÕâЩ´ó¼Ò¿ÉÒÔ×ÔÐÐ˼¿¼ÍÆÇá£

(2)zookeeper

Ïȼòµ¥ËµÏÂÔ­Àí£¬¸ù¾ÝÍøÉÏÎĵµÃèÊö£¬zookeeperµÄ·Ö²¼Ê½ËøÔ­ÀíÊÇÀûÓÃÁËÁÙʱ½Úµã(EPHEMERAL)µÄÌØÐÔ¡£

µ±znode±»ÉùÃ÷ΪEPHEMERALµÄºó£¬Èç¹û´´½¨znodeµÄÄǸö¿Í»§¶Ë±ÀÀ£ÁË£¬ÄÇôÏàÓ¦µÄznode»á±»×Ô¶¯É¾³ý¡£ÕâÑù¾Í±ÜÃâÁËÉèÖùýÆÚʱ¼äµÄÎÊÌâ¡£

¿Í»§¶Ë³¢ÊÔ´´½¨Ò»¸öznode½Úµã£¬±ÈÈç/lock¡£ÄÇô***¸ö¿Í»§¶Ë¾Í´´½¨³É¹¦ÁË£¬Ï൱ÓÚÄõ½ÁËËø£»¶øÆäËüµÄ¿Í»§¶Ë»á´´½¨Ê§°Ü£¨znodeÒÑ´æÔÚ£©£¬»ñÈ¡ËøÊ§°Ü¡£

·ÖÎö:ÕâÖÖÇé¿öÏ£¬ËäÈ»±ÜÃâÁËÉèÖÃÁËÓÐЧʱ¼äÎÊÌ⣬Ȼ¶ø»¹ÊÇÓпÉÄܳöÏÖ¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´µÄ¡£

´ó¼ÒÓ¦¸ÃÖªµÀ£¬zookeeperÈç¹û³¤Ê±¼ä¼ì²â²»µ½¿Í»§¶ËµÄÐÄÌøµÄʱºò(Sessionʱ¼ä)£¬¾Í»áÈÏΪSession¹ýÆÚÁË£¬ÄÇôÕâ¸öSessionËù´´½¨µÄËùÓеÄephemeralÀàÐ͵Äznode½Úµã¶¼»á±»×Ô¶¯É¾³ý¡£

ÕâÖÖʱºò»áÓÐÈçÏÂÇéÐγöÏÖ

ÈçÉÏͼËùʾ£¬¿Í»§¶Ë1·¢ÉúGCÍ£¶ÙµÄʱºò£¬zookeeper¼ì²â²»µ½ÐÄÌø£¬Ò²ÊÇÓпÉÄܳöÏÖ¶à¸ö¿Í»§¶Ëͬʱ²Ù×÷¹²Ïí×ÊÔ´µÄÇéÐΡ£µ±È»£¬Äã¿ÉÒÔ˵£¬ÎÒÃÇ¿ÉÒÔͨ¹ýJVMµ÷ÓÅ£¬±ÜÃâGCÍ£¶Ù³öÏÖ¡£µ«ÊÇ×¢ÒâÁË£¬ÎÒÃÇËù×öµÄÒ»ÇУ¬Ö»Äܾ¡¿ÉÄܱÜÃâ¶à¸ö¿Í»§¶Ë²Ù×÷¹²Ïí×ÊÔ´£¬ÎÞ·¨ÍêÈ«Ïû³ý¡£

µÚ¶þ»ØºÏ£¬¼¯ÈºÇéÐαȽÏ

ÎÒÃÇÔÚÉú²úÖУ¬Ò»°ã¶¼ÊÇÓü¯ÈºÇéÐΣ¬ËùÒÔ***»ØºÏÌÖÂ۵ĵ¥»úÇéÐΡ£ËãÊǸø´ó¼ÒÈÈÈÈÉí¡£

(1)redis

ΪÁËredisµÄ¸ß¿ÉÓã¬Ò»°ã¶¼»á¸øredisµÄ½Úµã¹ÒÒ»¸öslave,È»ºó²ÉÓÃÉÚ±øÄ£Ê½½øÐÐÖ÷±¸Çл»¡£µ«ÓÉÓÚRedisµÄÖ÷´Ó¸´ÖÆ£¨replication£©ÊÇÒì²½µÄ£¬Õâ¿ÉÄÜ»á³öÏÖÔÚÊý¾Ýͬ²½¹ý³ÌÖУ¬masterå´»ú£¬slaveÀ´²»¼°Í¬²½Êý¾Ý¾Í±»Ñ¡Îªmaster£¬´Ó¶øÊý¾Ý¶ªÊ§¡£¾ßÌåÁ÷³ÌÈçÏÂËùʾ:

(1)¿Í»§¶Ë1´ÓMaster»ñÈ¡ÁËËø¡£

(2)Masterå´»úÁË£¬´æ´¢ËøµÄkey»¹Ã»ÓÐÀ´µÃ¼°Í¬²½µ½SlaveÉÏ¡£

(3)SlaveÉý¼¶ÎªMaster¡£

(4)¿Í»§¶Ë2´ÓеÄMaster»ñÈ¡µ½Á˶ÔӦͬһ¸ö×ÊÔ´µÄËø¡£

ΪÁËÓ¦¶ÔÕâ¸öÇéÐΣ¬ redisµÄ×÷ÕßantirezÌá³öÁËRedLockËã·¨£¬²½ÖèÈçÏÂ(¸ÃÁ÷³Ì³ö×Ô¹Ù·½Îĵµ)£¬¼ÙÉèÎÒÃÇÓÐN¸ömaster½Úµã(¹Ù·½ÎĵµÀォNÉèÖóÉ5£¬Æäʵ´óµÈÓÚ3¾ÍÐÐ)

(1)»ñÈ¡µ±Ç°Ê±¼ä£¨µ¥Î»ÊǺÁÃ룩¡£

(2)ÂÖÁ÷ÓÃÏàͬµÄkeyºÍËæ»úÖµÔÚN¸ö½ÚµãÉÏÇëÇóËø£¬ÔÚÕâÒ»²½À¿Í»§¶ËÔÚÿ¸ömasterÉÏÇëÇóËøÊ±£¬»áÓÐÒ»¸öºÍ×ܵÄËøÊÍ·Åʱ¼äÏà±ÈСµÄ¶àµÄ³¬Ê±Ê±¼ä¡£±ÈÈçÈç¹ûËø×Ô¶¯ÊÍ·Åʱ¼äÊÇ10ÃëÖÓ£¬ÄÇÿ¸ö½ÚµãËøÇëÇóµÄ³¬Ê±Ê±¼ä¿ÉÄÜÊÇ5-50ºÁÃëµÄ·¶Î§£¬Õâ¸ö¿ÉÒÔ·ÀÖ¹Ò»¸ö¿Í»§¶ËÔÚij¸öå´µôµÄmaster½ÚµãÉÏ×èÈû¹ý³¤Ê±¼ä£¬Èç¹ûÒ»¸ömaster½Úµã²»¿ÉÓÃÁË£¬ÎÒÃÇÓ¦¸Ã¾¡¿ì³¢ÊÔÏÂÒ»¸ömaster½Úµã¡£

(3)¿Í»§¶Ë¼ÆËãµÚ¶þ²½ÖлñÈ¡ËøËù»¨µÄʱ¼ä£¬Ö»Óе±¿Í»§¶ËÔÚ´ó¶àÊýmaster½ÚµãÉϳɹ¦»ñÈ¡ÁËËø£¨ÔÚÕâÀïÊÇ3¸ö£©£¬¶øÇÒ×ܹ²ÏûºÄµÄʱ¼ä²»³¬¹ýËøÊÍ·Åʱ¼ä£¬Õâ¸öËø¾ÍÈÏΪÊÇ»ñÈ¡³É¹¦ÁË¡£

(4)Èç¹ûËø»ñÈ¡³É¹¦ÁË£¬ÄÇÏÖÔÚËø×Ô¶¯ÊÍ·Åʱ¼ä¾ÍÊÇ×î³õµÄËøÊÍ·Åʱ¼ä¼õȥ֮ǰ»ñÈ¡ËøËùÏûºÄµÄʱ¼ä¡£

(5)Èç¹ûËø»ñȡʧ°ÜÁË£¬²»¹ÜÊÇÒòΪ»ñÈ¡³É¹¦µÄËø²»³¬¹ýÒ»°ë£¨N/2+1)»¹ÊÇÒòΪ×ÜÏûºÄʱ¼ä³¬¹ýÁËËøÊÍ·Åʱ¼ä£¬¿Í»§¶Ë¶¼»áµ½Ã¿¸ömaster½ÚµãÉÏÊÍ·ÅËø£¬¼´±ãÊÇÄÇЩËûÈÏΪûÓлñÈ¡³É¹¦µÄËø¡£

·ÖÎö:RedLockË㷨ϸÏëһϻ¹´æÔÚÏÂÃæµÄÎÊÌ⣺

½Úµã±ÀÀ£ÖØÆô£¬»á³öÏÖ¶à¸ö¿Í»§¶Ë³ÖÓÐËø

¼ÙÉèÒ»¹²ÓÐ5¸öRedis½Úµã£ºA, B, C, D, E¡£ÉèÏë·¢ÉúÁËÈçϵÄʼþÐòÁУº

(1)¿Í»§¶Ë1³É¹¦Ëø×¡ÁËA, B, C£¬»ñÈ¡Ëø³É¹¦£¨µ«DºÍEûÓÐËø×¡£©¡£

(2)½ÚµãC±ÀÀ£ÖØÆôÁË£¬µ«¿Í»§¶Ë1ÔÚCÉϼӵÄËøÃ»Óг־û¯ÏÂÀ´£¬¶ªÊ§ÁË¡£

(3)½ÚµãCÖØÆôºó£¬¿Í»§¶Ë2Ëø×¡ÁËC, D, E£¬»ñÈ¡Ëø³É¹¦¡£

ÕâÑù£¬¿Í»§¶Ë1ºÍ¿Í»§¶Ë2ͬʱ»ñµÃÁËËø£¨Õë¶Ôͬһ×ÊÔ´£©¡£

ΪÁËÓ¦¶Ô½ÚµãÖØÆôÒý·¢µÄËøÊ§Ð§ÎÊÌ⣬redisµÄ×÷ÕßantirezÌá³öÁËÑÓ³ÙÖØÆôµÄ¸ÅÄ¼´Ò»¸ö½Úµã±ÀÀ£ºó£¬ÏȲ»Á¢¼´ÖØÆôËü£¬¶øÊǵȴýÒ»¶Îʱ¼äÔÙÖØÆô£¬µÈ´ýµÄʱ¼ä´óÓÚËøµÄÓÐЧʱ¼ä¡£²ÉÓÃÕâÖÖ·½Ê½£¬Õâ¸ö½ÚµãÔÚÖØÆôǰËù²ÎÓëµÄËø¶¼»á¹ýÆÚ£¬ËüÔÚÖØÆôºó¾Í²»»á¶ÔÏÖÓеÄËøÔì³ÉÓ°Ïì¡£ÕâÆäʵҲÊÇͨ¹ýÈËΪ²¹³¥´ëÊ©£¬½µµÍ²»Ò»Ö·¢ÉúµÄ¸ÅÂÊ¡£

ʱ¼äÌøÔ¾ÎÊÌâ

(1)¼ÙÉèÒ»¹²ÓÐ5¸öRedis½Úµã£ºA, B, C, D, E¡£ÉèÏë·¢ÉúÁËÈçϵÄʼþÐòÁУº

(2)¿Í»§¶Ë1´ÓRedis½ÚµãA, B, C³É¹¦»ñÈ¡ÁËËø£¨¶àÊý½Úµã£©¡£ÓÉÓÚÍøÂçÎÊÌ⣬ÓëDºÍEͨÐÅʧ°Ü¡£

(3)½ÚµãCÉϵÄʱÖÓ·¢ÉúÁËÏòÇ°ÌøÔ¾£¬µ¼ÖÂËüÉÏÃæÎ¬»¤µÄËø¿ìËÙ¹ýÆÚ¡£

¿Í»§¶Ë2´ÓRedis½ÚµãC, D, E³É¹¦»ñÈ¡ÁËͬһ¸ö×ÊÔ´µÄËø£¨¶àÊý½Úµã£©¡£

¿Í»§¶Ë1ºÍ¿Í»§¶Ë2ÏÖÔÚ¶¼ÈÏΪ×Ô¼º³ÖÓÐÁËËø¡£

ΪÁËÓ¦¶ÔʼÖÕÌøÔ¾Òý·¢µÄËøÊ§Ð§ÎÊÌ⣬redisµÄ×÷ÕßantirezÌá³öÁËÓ¦¸Ã½ûÖ¹ÈËΪÐÞ¸Äϵͳʱ¼ä£¬Ê¹ÓÃÒ»¸ö²»»á½øÐС°ÌøÔ¾¡±Ê½µ÷ÕûϵͳʱÖÓµÄntpd³ÌÐò¡£ÕâÒ²ÊÇͨ¹ýÈËΪ²¹³¥´ëÊ©£¬½µµÍ²»Ò»Ö·¢ÉúµÄ¸ÅÂÊ¡£

³¬Ê±µ¼ÖÂËøÊ§Ð§ÎÊÌâ

RedLockËã·¨²¢Ã»Óнâ¾ö£¬²Ù×÷¹²Ïí×ÊÔ´³¬Ê±£¬µ¼ÖÂËøÊ§Ð§µÄÎÊÌâ¡£»ØÒäÒ»ÏÂRedLockËã·¨µÄ¹ý³Ì£¬ÈçÏÂͼËùʾ£º

ÈçͼËùʾ£¬ÎÒÃǽ«Æä·ÖΪÉÏÏÂÁ½¸ö²¿·Ö¡£¶ÔÓÚÉϰ벿·Ö¿òͼÀïµÄ²½ÖèÀ´Ëµ£¬ÎÞÂÛÒòΪʲôԭÒò·¢ÉúÁËÑÓ³Ù£¬RedLockËã·¨¶¼ÄÜ´¦Àí£¬¿Í»§¶Ë²»»áÄõ½Ò»¸öËüÈÏΪÓÐЧ£¬Êµ¼ÊȴʧЧµÄËø¡£È»¶ø£¬¶ÔÓÚϰ벿·Ö¿òͼÀïµÄ²½ÖèÀ´Ëµ£¬Èç¹û·¢ÉúÁËÑÓ³Ùµ¼ÖÂËøÊ§Ð§£¬¶¼ÓпÉÄÜʹµÃ¿Í»§¶Ë2Äõ½Ëø¡£Òò´Ë£¬RedLockËã·¨²¢Ã»Óнâ¾ö¸ÃÎÊÌâ¡£

(2)zookeeper

zookeeperÔÚ¼¯Èº²¿ÊðÖУ¬zookeeper½ÚµãÊýÁ¿Ò»°ãÊÇÆæÊý£¬ÇÒÒ»¶¨´óµÈÓÚ3¡£ÎÒÃÇÏÈ»ØÒäһϣ¬zookeeperµÄдÊý¾ÝµÄÔ­Àí¡£

ÈçͼËùʾ£¬ÕâÕÅͼÀÁµÃ»­£¬Ö±½Ó°áÆäËûÎÄÕµÄÁË¡£

ÄÇôдÊý¾ÝÁ÷³Ì²½ÖèÈçÏ£º

1.ÔÚClientÏòFollwer·¢³öÒ»¸öдµÄÇëÇó

2.Follwer°ÑÇëÇó·¢Ë͸øLeader

3.Leader½ÓÊÕµ½ÒÔºó¿ªÊ¼·¢ÆðͶƱ²¢Í¨ÖªFollwer½øÐÐͶƱ

4.Follwer°ÑͶƱ½á¹û·¢Ë͸øLeader£¬Ö»Òª°ëÊýÒÔÉÏ·µ»ØÁËACKÐÅÏ¢£¬¾ÍÈÏΪͨ¹ý

5.Leader½«½á¹û»ã×ܺóÈç¹ûÐèҪдÈ룬Ôò¿ªÊ¼Ð´Èëͬʱ°ÑдÈë²Ù×÷֪ͨ¸øLeader£¬È»ºócommit;

6.Follwer°ÑÇëÇó½á¹û·µ»Ø¸øClient

»¹ÓÐÒ»µã£¬zookeeper²ÉÈ¡µÄÊÇÈ«¾Ö´®Ðл¯²Ù×÷¡£

OK,ÏÖÔÚ¿ªÊ¼·ÖÎö¡£

¼¯ÈºÍ¬²½

client¸øFollwerдÊý¾Ý£¬¿ÉÊÇFollwerÈ´å´»úÁË£¬»á³öÏÖÊý¾Ý²»Ò»ÖÂÎÊÌâô£¿²»¿ÉÄÜ£¬ÕâÖÖʱºò£¬client½¨Á¢½Úµãʧ°Ü£¬¸ù±¾»ñÈ¡²»µ½Ëø¡£

client¸øFollwerдÊý¾Ý£¬Follwer½«ÇëÇóת·¢¸øLeader,Leaderå´»úÁË£¬»á³öÏÖ²»Ò»ÖµÄÎÊÌâô£¿²»¿ÉÄÜ£¬ÕâÖÖʱºò£¬zookeeper»áѡȡеÄleader,¼ÌÐøÉÏÃæµÄÌáµ½µÄдÁ÷³Ì¡£

×ÜÖ®£¬²ÉÓÃzookeeper×÷Ϊ·Ö²¼Ê½Ëø£¬ÄãҪô¾Í»ñÈ¡²»µ½Ëø£¬Ò»µ©»ñÈ¡µ½ÁË£¬±Ø¶¨½ÚµãµÄÊý¾ÝÊÇÒ»Öµģ¬²»»á³öÏÖredisÄÇÖÖÒ첽ͬ²½µ¼ÖÂÊý¾Ý¶ªÊ§µÄÎÊÌâ¡£

ʱ¼äÌøÔ¾ÎÊÌâ

²»ÒÀÀµÈ«¾Öʱ¼ä£¬Ôõô»á´æÔÚÕâÖÖÎÊÌâ

³¬Ê±µ¼ÖÂËøÊ§Ð§ÎÊÌâ

²»ÒÀÀµÓÐЧʱ¼ä£¬Ôõô»á´æÔÚÕâÖÖÎÊÌâ

µÚÈý»ØºÏ£¬ËøµÄÆäËûÌØÐԱȽÏ

(1)redisµÄ¶ÁдÐÔÄܱÈzookeeperǿ̫¶à£¬Èç¹ûÔڸ߲¢·¢³¡¾°ÖУ¬Ê¹ÓÃzookeeper×÷Ϊ·Ö²¼Ê½Ëø£¬ÄÇô»á³öÏÖ»ñÈ¡ËøÊ§°ÜµÄÇé¿ö£¬´æÔÚÐÔÄÜÆ¿¾±¡£

(2)zookeeper¿ÉÒÔʵÏÖ¶ÁÐ´Ëø£¬redis²»ÐС£

(3)zookeeperµÄwatch»úÖÆ,¿Í»§¶ËÊÔͼ´´½¨znodeµÄʱºò£¬·¢ÏÖËüÒѾ­´æÔÚÁË£¬Õâʱºò´´½¨Ê§°Ü,ÄÇô½øÈëÒ»Öֵȴý״̬£¬µ±znode½Úµã±»É¾³ýµÄʱºò£¬zookeeperͨ¹ýwatch»úÖÆÍ¨ÖªËü£¬ÕâÑùËü¾Í¿ÉÒÔ¼ÌÐøÍê³É´´½¨²Ù×÷£¨»ñÈ¡Ëø£©¡£Õâ¿ÉÒÔÈ÷ֲ¼Ê½ËøÔÚ¿Í»§¶ËÓÃÆðÀ´¾ÍÏñÒ»¸ö±¾µØµÄËøÒ»Ñù£º¼ÓËøÊ§°Ü¾Í×èÈûס£¬Ö±µ½»ñÈ¡µ½ËøÎªÖ¹¡£ÕâÌ×»úÖÆ£¬redisÎÞ·¨ÊµÏÖ¡£

×ܽá

OK£¬ÕýÎĆªàÂÁËÒ»´ó¶Ñ¡£ÆäʵֻÊÇÏë±íÃ÷Á½¸ö¹Ûµã£¬ÎÞÂÛÊÇredis»¹ÊÇzookeeper£¬Æäʵ¿É¿¿ÐÔ¶¼´æÔÚÒ»µãÎÊÌâ¡£µ«ÊÇ£¬zookeeperµÄ·Ö²¼Ê½ËøµÄ¿É¿¿ÐÔ±Èredisǿ̫¶à£¡µ«ÊÇ,zookeeper¶ÁдÐÔÄܲ»Èçredis,´æÔÚ×ÅÐÔÄÜÆ¿¾±¡£´ó¼ÒÔÚÉú²úÉÏʹÓ㬿É×ÔÐнøÐÐÆÀ¹ÀʹÓá£

   
1229 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ