¡¡¡¡´ø¹ýÆÚ»úÖƵı¯¹ÛËøºÍÀÖ¹ÛËø±¾ÖÊÉ϶¼ÊôÓÚ¿ÉÇÀÕ¼µÄ·Ö²¼Ê½Ëø£¬Ï൱ÓÚÊǽ«paxosÒª½â¾öµÄÎÊÌâÍË»¯Îªµ¥Acceptor£¬Òò´ËʵÏÖÆðÀ´·Ç³£¼òµ¥¡£¿É¹ýÆڵı¯¹ÛËøºÍÀÖ¹ÛËøΨһµÄÇø±ð¾ÍÊÇÇ°ÕßÔÚÉêÇëËøµÄʱºòÓпÉÄÜÉêÇëʧ°Ü£¬¶øºóÕßÉêÇëËøʱÓÀÔ¶²»»áʧ°Ü¡£Á½ÖÖ·½°¸¾ßÌåµÄ±íÏÖÓÅÁÓ¸úÒµÎñÐèÇóÓйأ¬²»ÂÛÒ»¿ªÊ¼Ñ¡ÔñµÄÊÇÄÄÒ»ÖÖ£¬¶¼·Ç³£ÈÝÒ×Çл»µ½ÁíÒ»ÖÖ¡£
¡¡¡¡ÎÒÔÚʾÀýÖÐʵÏÖÁËÒ»¸ö¼òµ¥µÄÀÖ¹ÛËø£¬ÔÚÌá½»Ð޸ĵÄʱºòÓÃÒ»¸ölua½Å±¾×öÔ×Ó¼ì²é¾ÍÄܼòµ¥ÊµÏÖ¡£Èç¹ûҪʵÏÖ´ø¹ýÆÚ»úÖƵı¯¹ÛËø£¬ÐèÒª±£Ö¤Ó¦ÓòãÓмòµ¥µÄʱÖÓͬ²½»úÖÆ£¬¶øÇÒÔÚÉêÇëËøµÄʱºòҲҪдһ¸ölua½Å±¾¡£
¡¡¡¡ÔÚÓ¦ÓòãÒ²×öÁ˶ÔÓ¦Ð޸ģ¬µ÷ÓÃÊý¾Ý·ÃÎʲãAPI¿ÉÒÔ°´ÈçÏÂÕâÖÖ·½Ê½µ÷Óá£Ö®ËùÒÔÓÃÁËRTTI£¬ÊÇ¿¼Âǵ½ÓпÉÄÜ»á¸Ä³É±¯¹ÛËøʵÏÖ£¬ÔÚDisposeµÄʱºò»á×Ô¶¯release lock¡£ÏÖÔÚpure·þÎñÓëimpure·þÎñ¶ÔÊý¾Ý·þÎñµ÷ÓõĽӿÚÊDz»Ò»ÑùµÄ£¬ÎÒÃÇÉõÖÁ»¹¿ÉÒÔ»ùÓÚÕâÒ»µãÔڵײã×öһЩÀ©Õ¹£¬×îµäÐ͵ıÈÈç¶Áд·ÖÀë¡£µ±È»£¬ÕâЩ¶¼ÊÇÒýÈëÖ÷´ÓÖ®ºóÒª¿¼ÂǵÄÎÊÌâÁË¡£
1 using (var structFstAccesser = await GetStructFstAccesser()) 2 { 3 using (var structSndAccesser = await GetStructSndAccesser()) 4 { 5 var fieldFst = await structFstAccesser.LoadFieldFstAsync(); 6 var fieldSnd = await structSndAccesser.LoadFieldSndAsync(); structFstAccesser.UpdateFieldFst(fieldFst); 11 structSndAccesser.UpdateFieldSnd(fieldSnd); SubmitChanges(structFstAccesser, structSndAccesser); ; 17 } 18 }
View Code
¡¡¡¡ÓÐÁËÕâÑùÒ»¸ö¼òÒ×µÄËø»úÖÆ£¬ÎÒÃÇ¿ÉÒÔ±£Ö¤µ¥redisʵÀýÄÚµÄÒ»ÖÂÐÔ¡£
ÒýÈëеÄÎÊÌâ¡¡¡¡ÓÐÁËÎÞ״̬·þÎñµÄ¸ÅÄÎÒÃǵļܹ¹ÖоͿÉÒÔÖ𲽸ɵôÀàËÆÇг¡¾°¹ÜÀíÕâÖÖµ¥µã½ø³Ì¡£ÎÞ״̬·þÎñÊǸ߿ÉÓõģ¬Ò²¾ÍÊÇ˵£¬ÈÎÒâ¹ÒµôÒ»¸ö£¬ÈÔÈ»ÄܳÖÐøÌṩ·þÎñ¡£
¡¡¡¡Õû¸öÓÎÏ··þÎñ¶ËÀíÂÛÉÏÓ¦¸Ã¾ßÓÐÕûÌå³ÖÐøÌṩ·þÎñµÄÄÜÁ¦¡£Ò²¾ÍÊÇ˵£¬Ëæ±ã¹ÒµôÒ»¸ö½Úµã£¬²»ÐèҪͣ·þ¡£³¡¾°·þÎñ¹ÒµôÒ»¸ö½Úµã£¬²»»áÓ°ÏìÆäËûÈκηþÎñ£¬Ö»ÊÇÍæ¼Ò¶ÌÆÚÄÚÎÞ·¨½øÐг¡¾°Ïà¹Ø²Ù×÷Á˶øÒÑ¡£
¡¡¡¡¶øÎÒÃǼû¹ýµÄ´ó¶àÊý¼Ü¹¹£¬´¦´¦½Ôµ¥µã£¬ÕâÍêÈ«²»ÄܽпÉÓõļܹ¹¡£ÓеÄʱºòÒ»¸ö·þÎñ¶ËÅܵĺúõģ¬ÓÐÈËÓ²ÊÇÒª¶îÍâ¼ÓÒ»¸öÈ«¾Öµ¥µã£¬¶øÇÒÀíÓÉÊǸüÈÝÒ×¹ÜÀí£¬ÈÃÈË¿ÞЦ²»µÃ¡£·Ö²¼Ê½ÏµÍ³Öж¯²»¶¯¾ÍÏë¼Óµ¥µã£¬ÕâÊDz¡£¬µÃÖΡ£ÅжÏÒ»Õû¸öÓÎÏ··þÎñ¶ËÊÇ·ñ¾ßÓпÉÓÃÐԺܼòµ¥£¬Ëæ±ãkillµôÒ»¸ö½Úµã£¬Èç¹û·þÎñ¶ËÈÔÈ»ÄܳÖÐøÌṩ·þÎñ£¬¼´Ê¹ÊDz¿·ÖclientÊܵ½ÁËÓ°Ï죬ҲÄܳÆΪÊÇ¿ÉÓõġ£
¡¡¡¡µ«ÊÇ£¬ÏÖÔÚÂß¼·þÎñ¾ßÓпÉÓÃÐÔÁË£¬¿ÉÊÇÊý¾Ý·þÎñ»¹Ã»ÓоßÓпÉÓÃÐÔ£¬Êý¾Ý·þÎñÒÀÀµÓÚÒ»¸öredisʵÀý£¬Õâ¸öredisʵÀý·´¶ø³ÉΪÁËÕû¸ö·þÎñ¶ËÖеĵ¥µã¡£
¡¡¡¡ÐҺã¬redisÏñÆäËû´ó¶àÊý¹¤Òµ¼¶»º´æ»ù´¡ÉèÊ©Ò»Ñù£¬ÒѾÌṩÁË×ã¹»ÓõĿÉÓÃÐÔ»úÖÆ¡£µ«ÊÇ£¬ÔÚÌÖÂÛredisµÄ¿ÉÓÃÐÔ»úÖÆ֮ǰ£¬ÎÒÃÇÏȽâ¾öÒ»ÏÂÊý¾Ý·þÎñµÄÒ»¸öÒÅÁôÎÊÌ⣬ÄǾÍÊÇÈçºÎ¹¹½¨Ò»¸ö¿ÉÒÔÀ©Õ¹µÄÈ«¾ÖÊý¾Ý·þÎñ¡£
4.2 Êý¾Ý·þÎñµÄÀ©Õ¹
¡¡¡¡redisÊÇÒ»ÖÖstateful service£¬¼ÌÐøÓ¦ÓÃ֮ǰµÄCAPÔÔò£¬redisÊÇÇãÏòÓÚAPµÄ¡£Ö®ºóÎÒÃÇ¿ÉÒÔ¿´µ½£¬redisµÄ¸÷ÖÖÀ©Õ¹£¬Êµ¼ÊÉ϶¼ÊÇ»ùÓÚÕâ¸öÔÔòÀ´×öµÄ¡£
4.2.1 ·ÖƬ·½°¸
¶¨ÒåÎÊÌâ
¡¡¡¡ÎÒÃÇÓöµ½µÄÎÊÌâÊÇ£¬Èç¹û½«Êý¾Ý·þÎñ¶¨Î»ÎªÈ«¾Ö·þÎñ£¬ÄǽöÓõ¥ÊµÀýµÄredis¾ÍÄÑÒÔÓ¦¶Ô¶à±äµÄ¸ºÔØÇé¿ö¡£±Ï¾¹redisÊǵ¥Ï̵߳ġ£
¡¡¡¡
¡¡¡¡´Ómysqlһ·ÓùýÀ´µÄͬѧÕâʱ¶¼»áÏ°¹ßÐÔµØˮƽ²ð·Ö£¬redisÖÐÒ²ÊÇÀàËƵÄÔÀí£¬½«ÕûÌåµÄÊý¾Ý½øÐÐÇз֣¬Ã¿Ò»²¿·ÖÊÇÒ»¸ö·ÖƬshard£¬²»Í¬µÄshardά»¤µÄkey¼¯ºÏÊDz»Í¬µÄ¡£
¡¡¡¡ÄÇô£¬ÎÊÌâµÄʵÖʾÍÊÇÈçºÎ»ùÓÚ¶à¸öredisʵÀýÉè¼ÆÈ«¾ÖͳһµÄÊý¾Ý·þÎñ¡£Í¬Ê±£¬ÓÐÒ»¸öÔ¼ÊøÌõ¼þ£¬ÄǾÍÊÇÎÒÃÇΪÁËÐÔÄÜÐèÒªÎþÉüÈ«¾ÖÒ»ÖÂÐÔ¡£Ò²¾ÍÊÇ˵£¬Êý¾Ý·þÎñ½øÐзÖƬÀ©Õ¹µÄÇ°ÌáÊÇ£¬²»Ìṩ¿ç·ÖƬÊÂÎñµÄ±£ÕÏ¡£redis clusterҲûÓÐÌṩÀàËÆÖ§³Ö£¬ÒòΪ·Ö²¼Ê½ÊÂÎñ±¾À´¾Í¸úredisµÄ¶¨Î»ÊÇÓгåÍ»µÄ¡£
¡¡¡¡Òò´Ë£¬ÎÒÃÇÖ®ºóµÄÌÖÂÛ»áÓÐÒ»¸öÔ¤ÉèÇ°Ì᣺²»Í¬shardÖеÄÊý¾ÝÒ»¶¨ÊÇÑϸñ¸ôÀëµÄ£¬±ÈÈçÊDz»Í¬×é·þµÄÊý¾Ý£¬»òÕßÊÇÍêÈ«²»Ïà¸ÉµÄÊý¾Ý¡£ÒªÏëʵÏÖ¿çshardµÄÊý¾Ý½»»¥£¬±ØÐëÒÀÀµ¸üÉϲãµÄе÷»úÖƱ£Ö¤£¬µ×²ã²»×öÈκγÐŵ¡£
¡¡¡¡ÕâÑù£¬ÎÒÃǵķÖƬÊý¾Ý·þÎñ¾ÍÄÜͨ¹ý֮ǰÌáµ½µÄ¼òÒ×Ëø»úÖÆÌṩµ¥Æ¬ÄÚµÄÒ»ÖÂÐÔ±£Ö¤£¬¶ø²»ÔÙÌṩȫ¾ÖµÄÒ»ÖÂÐÔ±£Ö¤¡£
¡¡¡¡»ùÓÚͬÑùµÄÔÒò£¬ÎÒÃǵķÖƬ·½°¸Ò²²»»áÔÚ·ÖƬ¼ä×öÀàËÆ·Ö²¼Ê½´æ´¢ÏµÍ³µÄÊý¾ÝÈßÓà»úÖÆ¡£
·ÖƬ·½°¸½â¾öÁËʲôÎÊÌâ
¡¡