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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
΢·þÎñϵͳÖеÄÊý¾ÝÒ»ÖÂÐÔ£¬Äã¶¼»áÁËÂð
 
×÷Õߣº¿´É½
  1597  次浏览      28
 2022-1-25
 
±à¼­ÍƼö:

±¾ÎÄÖ÷Òª×ܽáÁ˱¾µØÊÂÎñ¡¢È«¾ÖÊÂÎñ¡¢×îÖÕÒ»ÖÂÐԵȷ½Ê½ÊµÏÖÊý¾Ý×ÔÇ¢¡£Öصã½éÉÜÁËʵÏÖ×îÖÕÒ»ÖÂÐԵļ¯ÖÐģʽ£º¿É¿¿Ê¼þģʽ¡¢TCC ģʽ¡¢SAGA ģʽµÈ¡£Êý¾ÝµÄÒ»ÖÂÐÔÒ»Ö±ÊǸöÄÑÌâ£¬Ëæ×Å΢·þÎñ»¯Ö®ºó£¬Êý¾ÝÒ»ÖÂÐÔ¸ü¼ÓÀ§ÄÑ£¬ÓÐÀ§ÄѲ»Å£¬Ö»Òª²»·ÅÆú£¬×Ü»á½â¾öµÄ ¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉLinda±à¼­¡¢ÍƼö¡£

´Óµ¥Ìå¼Ü¹¹µ½·Ö²¼Ê½¼Ü¹¹£¬´Ó¾Þʯ¼Ü¹¹µ½Î¢·þÎñ¼Ü¹¹¡£ÏµÍ³Ö®¼äµÄ½»»¥Ô½À´Ô½¸´ÔÓ£¬ÏµÍ³¼äµÄÊý¾Ý½»»¥Á¿¼¶Ò²ÊÇÖ¸Êý¼¶Ôö³¤¡£×÷Ϊһ¸öϵͳ£¬ÎÒÃÇÒª±£Ö¤Âß¼­µÄ×ÔÇ¢ºÍÊý¾ÝµÄ×ÔÇ¢¡£

Êý¾Ý×ÔÇ¢ÓÐÁ½·½ÃæÒªÇó£º

Å׿ª´úÂ룬Êý¾ÝÄܹ»×Ô¼ºÑéÖ¤×Ô¼ºµÄ׼ȷÐÔ£¬Ò²¾ÍÊÇÊý¾Ý±Ë´ËÖ®¼ä²»Ã¬¶Ü

ËùÓÐÊý¾Ý׼ȷÇÒ·ûºÏÆÚÍû

ΪÁËʵÏÖÕâÁ½µã£¬ÐèҪʵÏÖÊý¾ÝµÄÒ»ÖÂÐÔ£¬ÎªÁËʵÏÖÒ»ÖÂÐÔ£¬¾ÍÐèÒªÓõ½ÊÂÎñ¡£

ÐèҪעÒâһϣ¬±¾ÎÄËùÉè¼ÆµÄÊý¾ÝÒ»ÖÂÐÔ£¬²»ÊǶàÊý¾Ý¸±±¾Ö®¼ä±£³ÖÊý¾ÝÒ»ÖÂÐÔ£¬¶øÊÇϵͳ֮¼äµÄÒµÎñÊý¾Ý±£³ÖÒ»ÖÂÐÔ¡£

±¾µØÊÂÎñ

ÔÚÔçÆÚµÄϵͳÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý¹ØÏµÐÍÊý¾Ý¿âµÄÊÂÎñ±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ¡£ÕâÖÖÊÂÎñÓÐËĸö»ù±¾ÒªËØ£ºACID¡£

A£¨Atomicity£¬Ô­×ÓÐÔ£©£ºÕû¸öÊÂÎñÖеÄËùÓвÙ×÷£¬ÒªÃ´È«²¿Íê³É£¬ÒªÃ´È«²¿Ê§°Ü£¬²»¿ÉÄÜÍ£ÖÍÔÚÖмäij¸ö»·½Ú¡£ÊÂÎñÔÚÖ´Ðйý³ÌÖз¢Éú´íÎ󣬻ᱻ»Ø¹ö£¨Rollback£©µ½ÊÂÎñ¿ªÊ¼Ç°µÄ״̬£¬¾ÍÏñÕâ¸öÊÂÎñ´ÓÀ´Ã»ÓÐÖ´ÐйýÒ»Ñù¡£

C£¨Consistency£¬Ò»ÖÂÐÔ£©£ºÒ»¸öÊÂÎñ¿ÉÒÔ·âװ״̬¸Ä±ä£¨³ý·ÇËüÊÇÒ»¸öÖ»¶ÁµÄ£©¡£ÊÂÎñ±ØÐëʼÖÕ±£³Öϵͳ´¦ÓÚÒ»ÖµÄ״̬£¬²»¹ÜÔÚÈκθø¶¨µÄʱ¼ä²¢·¢ÊÂÎñÓжàÉÙ¡£

I£¨Isolation£¬¸ôÀëÐÔ£©£º¸ôÀë״ִ̬ÐÐÊÂÎñ£¬Ê¹ËüÃǺÃÏñÊÇϵͳÔÚ¸ø¶¨Ê±¼äÄÚÖ´ÐеÄΨһ²Ù×÷¡£Èç¹ûÓÐÁ½¸öÊÂÎñ£¬ÔËÐÐÔÚÏàͬµÄʱ¼äÄÚ£¬Ö´ÐÐÏàͬµÄ¹¦ÄÜ£¬ÊÂÎñµÄ¸ôÀëÐÔ½«È·±£Ã¿Ò»ÊÂÎñÔÚϵͳÖÐÈÏΪֻÓиÃÊÂÎñÔÚʹÓÃϵͳ¡£ÕâÖÖÊôÐÔÓÐʱ³ÆÎª´®Ðл¯£¬ÎªÁË·ÀÖ¹ÊÂÎñ²Ù×÷¼äµÄ»ìÏý£¬±ØÐë´®Ðл¯»òÐòÁл¯ÇëÇó£¬Ê¹µÃÔÚͬһʱ¼ä½öÓÐÒ»¸öÇëÇóÓÃÓÚͬһÊý¾Ý¡£

D£¨Durability£¬³Ö¾ÃÐÔ£©£ºÔÚÊÂÎñÍê³ÉÒԺ󣬸ÃÊÂÎñ¶ÔÊý¾Ý¿âËù×÷µÄ¸ü¸Ä±ã³Ö¾ÃµÄ±£´æÔÚÊý¾Ý¿âÖ®ÖУ¬²¢²»»á±»»Ø¹ö¡£

ÕâËĸöÒªËØÊǹØÏµÐÍÊý¾Ý¿âµÄ¸ù±¾¡£ÎÞÂÛϵͳ¶àô¸´ÔÓ£¬Ö»ÒªÊ¹ÓÃͬһ¸ö¹ØÏµÐÍÊý¾Ý¿â£¬ÎÒÃǾͿÉÒÔ½èÖúÊÂÎñ±£Ö¤Êý¾ÝÒ»ÖÂÐÔ¡£»ùÓÚ¶Ô¹ØÏµÐÍÊý¾Ý¿âµÄÐÅÈΣ¬ÎÒÃÇ¿ÉÒÔÈÏΪ±¾µØÊÂÎñÊǿɿ¿µÄ£¬¿ª·¢¹ý³ÌÖв»ÐèÒª¶îÍâµÄ¹¤×÷¡£´Ó¼Ü¹¹µÄ½Ç¶È£¬¹ØÏµÐÍÊý¾Ý¿âÒ²ÊÇÒ»¸öµ¥¶ÀµÄϵͳ£¬ÄǹØÏµÐÍÊý¾Ý¿âÓëÓ¦ÓÃÖ®¼äÒ²ÊÇÐγÉÁË·Ö²¼Ê½¡£ËùÒÔÎÒÃÇÏÈÑо¿Ò»ÏÂÕâÖÖ¼òµ¥µÄ·Ö²¼Ê½ÏµÍ³ÈçºÎʵÏÖ ACID¡£

Ê×ÏÈ£¬A£¨Ô­×ÓÐÔ£©ºÍ D£¨³Ö¾ÃÐÔ£©ÊDZ˴ËÖ®¼äÃܲ»¿É·ÖµÄÁ½¸öÊôÐÔ£ºÔ­×ÓÐÔ±£Ö¤ÁËÊÂÎñµÄËùÓвÙ×÷£¬ÒªÃ´È«²¿Íê³É£¬ÒªÃ´È«²¿Ê§°Ü£¬²»¿ÉÄÜÍ£ÖÍÔÚÖмäij¸ö»·½Ú£»³Ö¾ÃÐÔ±£Ö¤ÁËÒ»µ©ÊÂÎñÍê³É£¬¸ÃÊÂÎñ¶ÔÊý¾Ý¿âËù×÷µÄ¸ü¸Ä±ã³Ö¾ÃµÄ±£´æÔÚÊý¾Ý¿âÖ®ÖУ¬²»»áÒòΪÈκÎÔ­Òò¶øµ¼ÖÂÆäÐ޸ĵÄÄÚÈݱ»³·Ïú»ò¶ªÊ§¡£

ÖÚËùÖÜÖª£¬Êý¾Ý±ØÐëдÈëµ½´ÅÅ̺ó²ÅÄܱ£Ö¤³Ö¾Ã»¯£¬½ö½ö±£´æÔÚÄÚ´æÖУ¬Ò»µ©³öÏÖϵͳ±ÀÀ£¡¢Ö÷»ú¶ÏµçµÈÇé¿ö£¬Êý¾Ý¾Í»á¶ªÊ§¡£ËùÒÔ£¬¹Ø¼üÊÇ¡°Ð´Èë´ÅÅÌ¡±ÒªÊµÏÖÔ­×ÓÐԺͳ־ÃÐÔ£¬È»¶øÕâ¸ö¶¯×÷´æÔÚÖмä̬£ºÕýÔÚдÈë¡£ËùÒÔ£¬ÏÖ´úµÄ¹ØÏµÐÍÊý¾Ý¿âͨ³£²ÉÓÃ×·¼ÓÈÕÖ¾¼Ç¼µÄ·½Ê½¡£½«ÐÞ¸ÄÊý¾ÝËùÐèµÄÈ«²¿ÐÅÏ¢£¨°üÀ¨ÐÞ¸ÄʲôÊý¾Ý¡¢Êý¾ÝÎïÀíÉÏλÓÚÄĸöÄÚ´æÒ³ºÍ´ÅÅÌ¿éÖС¢´Óʲôֵ¸Ä³Éʲôֵ£¬µÈµÈ£©£¬ÒÔ˳Ðò×·¼ÓµÄÐÎʽ¼Ç¼µ½´ÅÅÌÖС£Ö»ÓÐÔÚÈÕÖ¾¼Ç¼ȫ²¿ÂäÅÌ£¬Êý¾Ý¿âÔÚÈÕÖ¾Öп´µ½´ú±íÊÂÎñ³É¹¦Ìá½»µÄ¡°Ìá½»¼Ç¼¡±ºó£¬²Å»á¸ù¾ÝÈÕÖ¾ÉϵÄÐÅÏ¢¶ÔÕæÕýµÄÊý¾Ý½øÐÐÐ޸ġ£ÐÞ¸ÄÍê³Éºó£¬ÔÙÔÚÈÕÖ¾ÖмÓÈëÒ»Ìõ¡°½áÊø¼Ç¼¡±±íʾÊÂÎñÒÑÍê³É³Ö¾Ã»¯£¬ÕâÖÖÊÂÎñʵÏÖ·½·¨±»³ÆÎª¡°Ìá½»ÈÕÖ¾¡±¡£

ÎÒÃÇÄܹ»Í¨¹ýÈÕÖ¾±£Ö¤Ò»¸öÊÂÎñµÄÔ­×ÓÐԺͳ־ÃÐÔ£¬ÄÇÈç¹û³öÏÖ¶à¸öÊÂÎñ·ÃÎÊͬһ¸ö×ÊÔ´ÄØ£¿×÷Ϊ³ÌÐòÔ³¶¼ÖªµÀ£¬¶à¸öÏß³Ì/½ø³Ì·ÃÎÊͬһ¸ö×ÊÔ´£¬Õâ¸ö×ÊÔ´¾Í³ÆÎªÁÙ½ç×ÊÔ´£¬ÏëÒª½â¾öÁÙ½ç×ÊÔ´Õ¼ÓóåÍ»µÄ·½Ê½ºÜ¼òµ¥£¬¾ÍÊǼÓËø¡£¹ØÏµÐÍÊý¾Ý¿âΪÎÒÃÇ×¼±¸ÁËÈýÖÖËø£º

Ð´Ëø£¨Write Lock£©£ºÍ¬Ò»¸öʱ¿Ì£¬Ö»ÓÐÓÐÒ»¸öÊÂÎñ¶ÔÊý¾Ý¼ÓÐ´Ëø£¬ËùÒÔÐ´ËøÒ²±»³ÆÎªÅÅËüËø£¨exclusive Lock£©¡£Êý¾Ý±»¼ÓÁËÐ´Ëøºó£¬ÆäËûÊÂÎñ²»ÄÜдÈëÊý¾Ý£¬Ò²²»ÄÜ¶ÔÆäÌí¼Ó¶ÁËø£¨×¢Ò⣬ÊDz»ÄܼӶÁËø£¬µ«ÊÇ¿ÉÒÔ¶ÁÈ¡Êý¾Ý£©¡£

¶ÁËø£¨Read Lock£©£ºÍ¬Ò»Ê±¿Ì£¬¶à¸öÊÂÎñ¿ÉÒÔ¶ÔÊý¾ÝÌí¼Ó¶ÁËø£¬ËùÒÔ¶ÁËøÒ²±»³ÆÎª¹²ÏíËø£¨Shared Lock£©¡£Êý¾Ý¿â±»Ìí¼Ó¶ÁËøºó£¬Êý¾Ý²»Äܱ»Ìí¼ÓÐ´Ëø¡£

·¶Î§Ëø£¨Range Lock£©£º¶ÔÒ»¸ö·¶Î§µÄÊý¾ÝÌí¼ÓÐ´Ëø£¬Õâ¸ö·¶Î§µÄÊý¾Ý²»Äܱ»Ð´Èë¡£Ò²¿ÉÒÔËã×÷Ð´ËøµÄÅúÁ¿ÐÐΪ¡£

¸ù¾ÝÕâÈýÖÖËøµÄ²»Í¬×éºÏ£¬ÎÒÃÇ¿ÉÒÔʵÏÖËÄÖÖ²»Í¬µÄÊÂÎñ¸ôÀë¼¶±ð£º

¿É´®Ðл¯£¨Serializable£©£ºÐ´ÈëµÄʱºò¼ÓÐ´Ëø£¬¶ÁÈ¡µÄʱºò¼Ó¶ÁËø£¬·¶Î§¶ÁдµÄʱºò¼Ó·¶Î§Ëø¡£

¿ÉÖØ¸´¶È£¨Repeatable Read£©£ºÐ´ÈëµÄʱºò¼ÓÐ´Ëø£¬¶ÁÈ¡µÄʱºò¼Ó¶ÁËø£¬·¶Î§¶ÁдµÄʱºò²»¼ÓËø£¬ÕâÑù»á³öÏÖ¶ÁÈ¡Ïàͬ·¶Î§Êý¾ÝµÄʱºò£¬·µ»Ø½á¹û²»Í¬£¬¼´»Ã¶Á£¨Phantom Read£©¡£

¶ÁÒÑÌá½»£¨Read Committed£©£ºÐ´ÈëµÄʱºò¼ÓÐ´Ëø£¬¶ÁÈ¡µÄʱºò¼Ó¶ÁËø£¬¶ÁÈ¡Íê³ÉºóÁ¢ÂíÊͷŶÁËø¡£ÕâÑù»á³öÏÖͬһ¸öÊÂÎñ¶à´Î¶ÁÈ¡ÏàͬÊý¾Ý£¬·µ»Ø½á¹û²»Í¬£¬¼´²»¿ÉÖØ¸´¶Á£¨Non-Repeatable Read£©¡£

¶ÁδÌá½»£¨Read Uncommitted£©£ºÐ´ÈëµÄʱºò¼ÓÐ´Ëø£¬¶ÁÈ¡µÄʱºò²»¼ÓËø¡£ÕâÑù¾Í»á¶ÁÈ¡µ½ÁíÒ»¸ö»¹Î´Ìá½»µÄÊÂÎñдÈëµÄÊý¾Ý£¬¼´Ôà¶Á£¨Dirty Read£©¡£

È«¾ÖÊÂÎñ

Ëæ×Åϵͳ¹æÄ£²»¶ÏÀ©´ó£¬ÒµÎñÁ¿²»¶ÏÔö¼Ó¡£µ¥ÌåÓ¦Óò»ÔÙÂú×ãÐèÇó£¬ÎÒÃÇ»á²ð·Öϵͳ£¬È»ºó²ð·ÖÊý¾Ý¿â¡£´Ëʱ£¬Í¬Ò»¸öÇëÇóÖУ¬¾Í»á³öÏÖͬʱ·ÃÎʶà¸öÊý¾Ý¿âµÄÇé¿ö¡£ÎªÁ˽â¾öÕâÖÖÇé¿öµÄÊý¾ÝÒ»ÖÂÐÔÎÊÌ⣬X/Open ×éÖ¯ÔÚ 1991 Ä꣨ÄǸöʱºòÎÒ»¹Ð¡£©Ìá³öÁËÒ»Ì× X/Open XA µÄ´¦ÀíÊÂÎñµÄ¼Ü¹¹¡£XA µÄºËÐÄÄÚÈÝÊǶ¨ÒåÁËÈ«¾ÖµÄÊÂÎñ¹ÜÀíÆ÷£¨Transaction Manager£¬ÓÃÓÚЭµ÷È«¾ÖÊÂÎñ£©ºÍ¾Ö²¿µÄ×ÊÔ´¹ÜÀíÆ÷£¨Resource Manager£¬ÓÃÓÚÇý¶¯±¾µØÊÂÎñ£©Ö®¼äµÄͨÐŽӿڣ¬ÔÚÒ»¸öÊÂÎñ¹ÜÀíÆ÷ºÍ¶à¸ö×ÊÔ´¹ÜÀíÆ÷£¨Resource Manager£©Ö®¼äÐγÉͨÐÅÇÅÁº£¬Í¨¹ýЭµ÷¶à¸öÊý¾ÝÔ´µÄÒ»Ö¶¯×÷£¬ÊµÏÖÈ«¾ÖÊÂÎñµÄͳһÌá½»»òÕßͳһ»Ø¹ö¡£Óë XA ¼Ü¹¹ÅäÌ×µÄÊÇÁ½½×¶ÎÌύЭÒ飨2PC£¬Two Phase Commitment Protocol£©¡£ÔÚÕâ¸öЭÒéÖУ¬×î¹Ø¼üµÄµã¾ÍÊÇ£¬¶à¸öÊý¾Ý¿âµÄ»î¶¯£¬¾ùÓÉÒ»¸öÊÂÎñЭµ÷Æ÷µÄ×é¼þÀ´¿ØÖÆ¡£¾ßÌåµÄ·ÖΪ 5 ¸ö²½Ö裺

Ó¦ÓóÌÐòµ÷ÓÃÊÂÎñ¹ÜÀíÆ÷ÖеÄÌá½»·½·¨

ÊÂÎñ¹ÜÀíÆ÷½«ÁªÂçÊÂÎñÖÐÉæ¼°µÄÿ¸öÊý¾Ý¿â£¬²¢Í¨ÖªËüÃÇ×¼±¸Ìá½»ÊÂÎñ£¨ÕâÊǵÚÒ»½×¶ÎµÄ¿ªÊ¼£©

½ÓÊÕµ½×¼±¸Ìá½»ÊÂÎñ֪ͨºó£¬Êý¾Ý¿â±ØÐëÈ·±£ÄÜÔÚ±»ÒªÇóÌá½»ÊÂÎñʱÌá½»ÊÂÎñ£¬»òÔÚ±»ÒªÇ󻨹öÊÂÎñʱ»Ø¹öÊÂÎñ¡£Èç¹ûÊý¾Ý¿âÎÞ·¨×¼±¸ÊÂÎñ£¬Ëü»áÒÔÒ»¸ö·ñ¶¨ÏìÓ¦À´»ØÓ¦ÊÂÎñ¹ÜÀíÆ÷¡£

ÊÂÎñ¹ÜÀíÆ÷ÊÕ¼¯À´×Ô¸÷Êý¾Ý¿âµÄËùÓÐÏìÓ¦¡£

ÔÚµÚ¶þ½×¶Î£¬ÊÂÎñ¹ÜÀíÆ÷½«ÊÂÎñµÄ½á¹û֪ͨ¸øÃ¿¸öÊý¾Ý¿â¡£Èç¹ûÈÎÒ»Êý¾Ý¿â×ö³ö·ñ¶¨ÏìÓ¦£¬ÔòÊÂÎñ¹ÜÀíÆ÷»á½«Ò»¸ö»Ø¹öÃüÁî·¢Ë͸øÊÂÎñÖÐÉæ¼°µÄËùÓÐÊý¾Ý¿â¡£Èç¹ûÊý¾Ý¿â¶¼×ö³ö¿Ï¶¨ÏìÓ¦£¬ÔòÊÂÎñ¹ÜÀíÆ÷»áָʾËùÓеÄ×ÊÔ´¹ÜÀíÆ÷Ìá½»ÊÂÎñ¡£Ò»µ©Í¨ÖªÊý¾Ý¿âÌá½»£¬´ËºóµÄÊÂÎñ¾Í²»ÄÜʧ°ÜÁË¡£Í¨¹ýÒԿ϶¨µÄ·½Ê½ÏìÓ¦µÚÒ»½×¶Î£¬Ã¿¸ö×ÊÔ´¹ÜÀíÆ÷¾ùÒÑÈ·±££¬Èç¹ûÒÔºó֪ͨËüÌá½»ÊÂÎñ£¬ÔòÊÂÎñ²»»áʧ°Ü¡£

Á½½×¶ÎÌύЭÒéʵÏÖ¼òµ¥£¬µ«´æÔÚ¼¸¸öÃ÷ÏÔȱÏÝ£º

µ¥µãÎÊÌ⣺ÊÂÎñ¹ÜÀíÆ÷ÔÚÁ½¶ÎÌá½»ÖоßÓоÙ×ãÇáÖØµÄ×÷Óã¬ÊÂÎñ¹ÜÀíÆ÷µÈ´ý×ÊÔ´¹ÜÀíÆ÷»Ø¸´Ê±¿ÉÒÔÓг¬Ê±»úÖÆ£¬ÔÊÐí×ÊÔ´¹ÜÀíÆ÷å´»ú£¬µ«×ÊÔ´¹ÜÀíÆ÷µÈ´ýÊÂÎñ¹ÜÀíÆ÷Ö¸ÁîʱÎÞ·¨×ö³¬Ê±´¦Àí¡£Ò»µ©å´»úµÄ²»ÊÇÆäÖÐij¸ö×ÊÔ´¹ÜÀíÆ÷£¬¶øÊÇÊÂÎñ¹ÜÀíÆ÷µÄ»°£¬ËùÓÐ×ÊÔ´¹ÜÀíÆ÷¶¼»áÊܵ½Ó°Ïì¡£Èç¹ûÊÂÎñ¹ÜÀíÆ÷һֱûÓлָ´£¬Ã»ÓÐÕý³£·¢ËÍ Commit »òÕß Rollback µÄÖ¸ÁÄÇËùÓÐ×ÊÔ´¹ÜÀíÆ÷¶¼±ØÐëÒ»Ö±µÈ´ý¡£

ÐÔÄÜÎÊÌ⣺Á½¶ÎÌá½»¹ý³ÌÖУ¬ËùÓÐ×ÊÔ´¹ÜÀíÆ÷Ï൱ÓÚ±»°ó¶¨³ÉΪһ¸öͳһµ÷¶ÈµÄÕûÌ壬ÆÚ¼äÒª¾­¹ýÁ½´ÎÔ¶³Ì·þÎñµ÷Óã¬Èý´ÎÊý¾Ý³Ö¾Ã»¯£¨×¼±¸½×¶ÎÐ´ÖØ×öÈÕÖ¾£¬ÊÂÎñ¹ÜÀíÆ÷×ö״̬³Ö¾Ã»¯£¬Ìá½»½×¶ÎÔÚÈÕ־дÈë Commit Record£©£¬Õû¸ö¹ý³Ì½«³ÖÐøµ½×ÊÔ´¹ÜÀíÆ÷¼¯ÈºÖÐ×îÂýµÄÄÇÒ»¸ö´¦Àí²Ù×÷½áÊøÎªÖ¹£¬Õâ¾ö¶¨ÁËÁ½¶ÎʽÌá½»µÄÐÔÄÜͨ³£¶¼½Ï²î¡£

Ò»ÖÂÐÔ·çÏÕ£º¾¡¹ÜÌá½»½×¶Îʱ¼äºÜ¶Ì£¬µ«ÕâÈÔÊÇÒ»¶ÎÃ÷È·´æÔÚµÄΣÏÕÆÚ¡£Èç¹ûÊÂÎñ¹ÜÀíÆ÷ÔÚ·¢³ö×¼±¸Ö¸Áîºó£¬¸ù¾ÝÊÕµ½¸÷¸ö×ÊÔ´¹ÜÀíÆ÷·¢»ØµÄÐÅϢȷ¶¨ÊÂÎñ״̬ÊÇ¿ÉÒÔÌá½»µÄ£¬ÊÂÎñ¹ÜÀíÆ÷»áÏȳ־û¯ÊÂÎñ״̬£¬²¢Ìá½»×Ô¼ºµÄÊÂÎñ£¬Èç¹ûÕâʱºòÍøÂç¶Ï¿ª£¬ÎÞ·¨ÔÙͨ¹ýÍøÂçÏòËùÓÐ×ÊÔ´¹ÜÀíÆ÷·¢³ö Commit Ö¸ÁîµÄ»°£¬¾Í»áµ¼Ö²¿·ÖÊý¾Ý£¨ÊÂÎñ¹ÜÀíÆ÷µÄ£©ÒÑÌá½»£¬µ«²¿·ÖÊý¾Ý£¨×ÊÔ´¹ÜÀíÆ÷µÄ£©¼ÈδÌá½»£¬Ò²Ã»Óа취»Ø¹ö£¬²úÉúÁËÊý¾Ý²»Ò»ÖµÄÎÊÌâ¡£

Äܹ»·¢ÏÖÎÊÌ⣬¾ÍÄܹ»Ïëµ½°ì·¨½â¾ö¡£ÎÒÃǸßÖÐÀÏʦ˵ÁË£¬Ö»ÒªÒâʶ²»»¬ÆÂ£¬°ì·¨×ܱÈÀ§ÄѶࡣËùÒÔÓÖ·¢Õ¹³öÁËÈý½×¶ÎÌύЭÒ飨3PC£¬Three Phase Commitment Protocol£©£¬Äܹ»»º½âµ¥µãÎÊÌâºÍ×¼±¸½×¶ÎµÄÐÔÄÜÎÊÌâ¡£Õâ¸öЭÒé°Ñ 2PC ÖеÄ×¼±¸½×¶Î²ð·ÖΪ CanCommit ºÍ PreCommit£¬°ÑÌá½»½×¶Î¸ÄÃûΪ DoCommit¡£CanCommit ÊÇѯÎʽ׶Σ¬ÈÃÿ¸ö×ÊÔ´¹ÜÀíÆ÷¸ù¾Ý×ÔÉíÇé¿öÅжϸÃÊÂÎñÊÇ·ñÓпÉÄÜÍê³É¡£

3PC ±¾ÖÊÊÇͨ¹ýÒ»´ÎÎÊѯ£¬Èç¹û´ó¼Ò¶¼Ëµ×Ô¼º¿ÉÒÔ£¬ÄdzÉʵĿÉÄÜÐԺܴ󣬼õÉÙÁË×¼±¸½×¶ÎÖ±½ÓËø¶¨×ÊÔ´µÄÖØ²Ù×÷¡£ÓÉÓÚÊÂÎñʧ°Ü»Ø¹ö¸ÅÂʱäСµÄÔ­Òò£¬ÔÚÈý¶ÎʽÌá½»ÖУ¬Èç¹ûÔÚ PreCommit ½×¶ÎÖ®ºó·¢ÉúÁËÊÂÎñ¹ÜÀíÆ÷å´»ú£¬¼´×ÊÔ´¹ÜÀíÆ÷ûÓÐÄܵȵ½ DoCommit µÄÏûÏ¢µÄ»°£¬Ä¬ÈϵIJÙ×÷²ßÂÔ½«ÊÇÌá½»ÊÂÎñ¶ø²»ÊǻعöÊÂÎñ»òÕß³ÖÐøµÈ´ý£¬Õâ¾ÍÏ൱ÓÚ±ÜÃâÁËÊÂÎñ¹ÜÀíÆ÷µ¥µãÎÊÌâµÄ·çÏÕ¡£

·Ö²¼Ê½ÊÂÎñ

˵µ½·Ö²¼Ê½ÊÂÎñ£¬²»µÃ²»Ìá CAP ÀíÂÛ£ºÈκηֲ¼Ê½ÏµÍ³Ö»¿ÉͬʱÂú×ãÒ»ÖÂÐÔ£¨Consistency£©¡¢¿ÉÓÃÐÔ£¨Availability£©¡¢·ÖÇøÈÝ´íÐÔ£¨Partition tolerance£©ÖеÄÁ½µã£¬Ã»·¨ÈýÕß¼æ¹Ë¡£

Ò»ÖÂÐÔ£¨Consistency£©£ºÊý¾ÝÔÚÈκÎʱ¿Ì¡¢Èκηֲ¼Ê½½ÚµãÖÐËù¿´µ½µÄ¶¼ÊÇ·ûºÏÔ¤ÆÚµÄ¡£

¿ÉÓÃÐÔ£¨Availability£©£ºÏµÍ³²»¼ä¶ÏµØÌṩ·þÎñµÄÄÜÁ¦£¬¿ÉÓÃÐÔÊÇÓɿɿ¿ÐÔ£¨Reliability£©ºÍ¿Éά»¤ÐÔ£¨Serviceability£©¼ÆËãµÃ³öµÄ±ÈÀýÖµ¡£¿É¿¿ÐÔͨ¹ýƽ¾ùÎÞ¹ÊÕÏʱ¼ä£¨Mean Time Between Failure£¬MTBF£©À´¶ÈÁ¿£»¿Éά»¤ÐÔͨ¹ýƽ¾ù¿ÉÐÞ¸´Ê±¼ä£¨Mean Time To Repair£¬MTTR£©À´¶ÈÁ¿¡£¿ÉÓÃÐÔºâÁ¿ÏµÍ³¿ÉÒÔÕý³£Ê¹ÓõÄʱ¼äÓë×Üʱ¼äÖ®±È£¬¹«Ê½Îª£ºA=MTBF/(MTBF+MTTR)¡£

·ÖÇøÈÝ´íÐÔ£¨Partition Tolerance£©£º·Ö²¼Ê½»·¾³Öв¿·Ö½ÚµãÒòÍøÂçÔ­Òò¶ø±Ë´ËʧÁªºó£¬ÏµÍ³ÈÔÄÜÕýÈ·µØÌṩ·þÎñµÄÄÜÁ¦¡£

CAP ÀíÂÛ¶¨ÒåÊǾ­¹ý¼¸´ÎÐ޸ĵģ¬Ð޸ĺóµÄ¶¨Òå±¾ÖÊûÓÐÇø±ð£¬Ö»ÊÇÔÚÂß¼­Éϸü¼ÓÑϽ÷¡£±¾ÎÄΪÁ˺ÃÀí½â£¬Ê¹ÓÃÁË×îÈÝÒ×ÈôóÖÚ½ÓÊÕ²¢Àí½âµÄ¶¨Òå¡£

¼ÈÈ» CAP ²»Äܼæ¹Ë£¬ÄÇÎÒÃÇÀ´¿´¿´È±ÉÙÆäÖÐÒ»»·»á³öÏÖʲôÇé¿ö£º

Ñ¡Ôñ CA ·ÅÆú P£º¼´ÎÒÃÇÈÏÎªÍøÂç¿É¿¿²»»á³öÏÖ·ÖÇøÇé¿ö£¬ÕâÖÖ¿É¿¿ÊǸ÷¸ö½ÚµãÖ®¼ä²»»á³öÏÖÍøÂçÑÓ³Ù¡¢ÖжϵÈÇé¿ö£¬ÏÔÈ»ÊDz»³ÉÁ¢µÄ¡£

Ñ¡Ôñ CP ·ÅÆú A£ºÕâÑù×ö¾ÍÊÇÅׯúÁË¿ÉÓÃÐÔ£¬ÎªÁ˱£Ö¤Êý¾ÝÒ»ÖÂÐÔ£¬Ò»µ©³öÏÖÍøÂçÒì³££¬½ÚµãÖ®¼äµÄÐÅϢͬ²½Ê±¼ä¿ÉÒÔÎÞÏÞÖÆµØÑÓ³¤¡£Ê¹Óà CP ×éºÏµÄÒ»°ãÓÃÓÚ¶ÔÊý¾ÝÖÊÁ¿ÒªÇóºÜ¸ßµÄ³¡ºÏ£¬Ò²¾ÍÊÇΪÁ˱£Ö¤Êý¾ÝÍêȫһÖ£¬ÔÝʱ²»Ìṩ·þÎñ£¬Ö±µ½ÍøÂçÍêÈ«»Ö¸´£¬Õâ¿ÉÄܳÖÐøÒ»¸ö²»È·¶¨µÄʱ¼ä£¬ÓÈÆäÊÇÔÚϵͳÒѾ­±íÏÖ³ö¸ßÑÓ³Ùʱ»òÕßÍøÂç¹ÊÕϵ¼ÖÂʧȥÁ¬½Óʱ¡£

Ñ¡Ôñ AP ·ÅÆú C£ºÒâζ×ÅÒ»µ©·¢ÉúÍøÂç·ÖÇø£¬ÓÅÏÈÌṩ·þÎñ¿ÉÓã¬·ÅÆúÊý¾ÝÒ»ÖÂÐÔ¡£ÕâÊÇĿǰ·Ö²¼Ê½ÏµÍ³µÄÖ÷Á÷Ñ¡Ôñ£¬ÒòÎªÍøÂç±¾Éí¾ÍÊÇÁ´½Ó²»Í¬ÇøÓòµÄ·þÎñÆ÷µÄ£¬ÍøÂçÓÖÊDz»¿É¿¿µÄ£¬ËùÒÔ P ²»Äܱ»ÉáÆú¡£Í¬Ê±£¬ÎÒÃÇʵÏÖ·Ö²¼Ê½ÏµÍ³¾ÍÊÇΪÁËÌá¸ß¿ÉÓÃÐÔ£¬ÕâÊÇÎÒÃǵÄÄ¿µÄ£¬²»ÄÜÉáÆú¡£

ÕâÀïÐèÒªÔÙ˵Ã÷һϣ¬ÎÒÃÇÑ¡Ôñ AP ·ÅÆú C ²»ÊÇ·ÅÆúÊý¾ÝÒ»Ö£¬¶øÊÇÔÝʱ·ÅÆúǿһÖÂÐÔ£¨Strong Consistency£©£¬¶øÊÇÑ¡ÔñÈõÒ»ÖÂÐÔ£¬¼´×îÖÕÒ»ÖÂÐÔ£¨Eventual Consistency£©£ºÏµÍ³ÖеÄËùÓÐÊý¾Ý¸±±¾¾­¹ýÒ»¶Îʱ¼äºó£¬×îÖÕÄܹ»´ïµ½Ò»ÖµÄ״̬¡£ÕâÀïËù˵µÄÒ»¶Îʱ¼ä£¬Ò²ÒªÊÇÓû§¿É½ÓÊÜ·¶Î§ÄÚµÄÒ»¶Îʱ¼ä¡£

×îÖÕÒ»ÖÂÐÔÒ²ÓÐÒ»¸öÀíÂÛÖ§³Å£ºBASE ÀíÂÛ£¨²»µÃ²»Ëµ£¬ÀíÂÛ½çµÄËõÐ´ÕæÅ£°¡£¬ACID ÊÇËᣬCAP ÊÇñ×Ó£¬BASE ÊǼ£¬ÄÚÈÝÖ÷Òª°üÀ¨£º

»ù±¾¿ÉÓã¨Basically Available£©£ºµ±ÏµÍ³ÔÚ³öÏÖ²»¿ÉÔ¤Öª¹ÊÕϵÄʱºò£¬ÔÊÐíËðʧ²¿·Ö¿ÉÓÃÐÔ¡£±ÈÈ磬ÔÊÐíÏìӦʱ¼äÔö³¤£¬ÔÊÐí²¿·Ö·Ç¹Ø¼ü½Ó¿Ú½µ¼¶»òÈ۶ϵȡ£

Èí״̬£¨Soft State£©£ºÈí״̬Ҳ³ÆÎªÈõ״̬£¬ºÍӲ״̬Ïà¶Ô¡£ÊÇÖ¸ÔÊÐíϵͳÖеÄÊý¾Ý´æÔÚÖмä״̬£¬²¢ÈÏΪ¸ÃÖмä״̬µÄ´æÔÚ²»»áÓ°ÏìϵͳµÄÕûÌå¿ÉÓÃÐÔ£¬¼´ÔÊÐíϵͳÔÚ²»Í¬½ÚµãµÄÊý¾Ý¸±±¾Ö®¼ä½øÐÐÊý¾Ýͬ²½µÄ¹ý³Ì´æÔÚÑÓʱ¡£

×îÖÕÒ»ÖÂÐÔ£¨Eventually Consistent£©£º×îÖÕÒ»ÖÂÐÔÇ¿µ÷µÄÊÇϵͳÖÐËùÓеÄÊý¾Ý¸±±¾£¬ÔÚ¾­¹ýÒ»¶Îʱ¼äµÄͬ²½ºó£¬×îÖÕÄܹ»´ïµ½Ò»¸öÒ»ÖµÄ״̬¡£Òò´Ë£¬×îÖÕÒ»ÖÂÐԵı¾ÖÊÊÇÐèҪϵͳ±£Ö¤×îÖÕÊý¾ÝÄܹ»´ïµ½Ò»Ö£¬¶ø²»ÐèҪʵʱ±£Ö¤ÏµÍ³Êý¾ÝµÄǿһÖÂÐÔ¡£

ÔÚ¹¤³Ìʵ¼ùÖУ¬×îÖÕÒ»ÖÂÐÔ·ÖΪ 5 ÖÖ£¬Õâ 5 ÖÖ·½Ê½»á½áºÏʹÓ㬹²Í¬ÊµÏÖ×îÖÕÒ»ÖÂÐÔ£º

Òò¹ûÒ»ÖÂÐÔ£¨Causal consistency£©£ºÈç¹û½Úµã A ÔÚ¸üÐÂÍêij¸öÊý¾Ýºó֪ͨÁ˽ڵã B£¬ÄÇô½Úµã B Ö®ºó¶Ô¸ÃÊý¾ÝµÄ·ÃÎʺÍÐ޸ͼÊÇ»ùÓÚ A ¸üкóµÄÖµ¡£ÓÚ´Ëͬʱ£¬ºÍ½Úµã A ÎÞÒò¹û¹ØÏµµÄ½Úµã C µÄÊý¾Ý·ÃÎÊÔòûÓÐÕâÑùµÄÏÞÖÆ¡£

¶Á¼ºÖ®Ëùд£¨Read your writes£©£º½Úµã A ¸üÐÂÒ»¸öÊý¾Ýºó£¬Ëü×ÔÉí×ÜÊÇÄÜ·ÃÎʵ½×ÔÉí¸üйýµÄ×îÐÂÖµ£¬¶ø²»»á¿´µ½¾ÉÖµ¡£

»á»°Ò»ÖÂÐÔ£¨Session consistency£©£º»á»°Ò»ÖÂÐÔ½«¶ÔϵͳÊý¾ÝµÄ·ÃÎʹý³Ì¿ò¶¨ÔÚÁËÒ»¸ö»á»°µ±ÖУ¬ÏµÍ³Äܱ£Ö¤ÔÚͬһ¸öÓÐЧµÄ»á»°ÖÐʵÏÖ¡°¶Á¼ºÖ®Ëùд¡±µÄÒ»ÖÂÐÔ£¬Ò²¾ÍÊÇ˵£¬Ö´ÐиüвÙ×÷Ö®ºó£¬¿Í»§¶ËÄܹ»ÔÚͬһ¸ö»á»°ÖÐʼÖÕ¶ÁÈ¡µ½¸ÃÊý¾ÝÏîµÄ×îÐÂÖµ¡£

µ¥µ÷¶ÁÒ»ÖÂÐÔ£¨Monotonic read consistency£©£ºÈç¹ûÒ»¸ö½Úµã´ÓϵͳÖжÁÈ¡³öÒ»¸öÊý¾ÝÏîµÄij¸öÖµºó£¬ÄÇôϵͳ¶ÔÓڸýڵãºóÐøµÄÈκÎÊý¾Ý·ÃÎʶ¼²»Ó¦¸Ã·µ»Ø¸ü¾ÉµÄÖµ¡£

µ¥µ÷дһÖÂÐÔ£¨Monotonic write consistency£©£ºÒ»¸öϵͳҪÄܹ»±£Ö¤À´×Ôͬһ¸ö½ÚµãµÄд²Ù×÷±»Ë³ÐòµÄÖ´ÐС£

ÓÐÁËÀíÂÛÖ®ºó£¬ÎÒÃÇÀ´ËµÒ»ÏÂʵÏÖ×îÖÕÒ»ÖÂÐԵļ¸ÖÖģʽ¡£

¿É¿¿Ê¼þģʽ

¿É¿¿Ê¼þģʽÊôÓÚʼþÇý¶¯¼Ü¹¹£ºµ±Ä³¸öʼþ·¢Éúʱ£¬ÀýÈç¸üÐÂÒ»¸öÒµÎñʵÌ壬·þÎñ»áÏòÏûÏ¢´úÀí·¢²¼Ò»¸öʼþ¡£ÏûÏ¢´úÀí»áÏò¶©ÔÄʼþµÄ·þÎñÍÆËÍʼþ£¬µ±¶©ÔÄÕâЩʼþµÄ·þÎñ½ÓÊÕ´Ëʼþʱ£¬¾Í¿ÉÒÔÍê³É×Ô¼ºµÄÒµÎñ£¬Ò²¿ÉÄÜ»áÒý·¢¸ü¶àµÄʼþ·¢²¼¡£

ÎÒÃÇͨ¹ýÒ»¸öÀý×ÓÀ´½âÊÍÒ»ÏÂÕâÖÖģʽ£¬Óû§Ïµ¥³É¹¦ºó£¬¶©µ¥ÏµÍ³ÐèҪ֪ͨ¿â´æÏµÍ³¼õ¿â´æ¡£

¶©µ¥ÏµÍ³¸ù¾ÝÓû§²Ù×÷Íê³Éϵ¥²Ù×÷¡£´Ëʱ»áʹÓÃͬһ¸ö±¾µØÊÂÎñ±£´æ¶©µ¥ÐÅÏ¢ºÍдÈëʼþ¡£

ÁíÍâÒ»¸öÏûÏ¢·þÎñ»áÂÖѯʼþ±í£¬½«×´Ì¬ÊÇ¡°½øÐÐÖС±µÄʼþÒÔÏûÏ¢ÐÎʽ·¢Ë͵½ÏûÏ¢·þÎñÖС£Èç¹û·¢ËÍʧ°Ü£¬ÒòΪÊÇÂÖѯÈÎÎñ£¬»áÔÚÏÂÒ»´ÎÂÖѯµÄʱºòÔٴη¢ËÍ¡££¨´Ë´¦ÓÐһЩÓÅ»¯µã£¬±¾ÀýΪÁ˼ò»¯Ä£ÐÍ£¬²»Õ¹¿ª£©

ÏûÏ¢·þÎñÏò¶©ÔÄϵ¥ÏûÏ¢µÄ¿â´æ·þÎñ·¢ËÍϵ¥³É¹¦ÏûÏ¢£¬¿â´æ·þÎñ¿ªÊ¼´¦Àí¡£´Ëʱ»áÓÐÕâô¼¯ÖÐÇé¿ö£º

¿â´æ·þÎñ¿Û¼õ¿â´æ³É¹¦£¬ÏûÏ¢·þÎñ½ÓÊÕµ½´¦Àí³É¹¦ÏìÓ¦¡£ÏûÏ¢·þÎñ½«ÏìÓ¦½á¹û·µ»Ø¸ø¶©µ¥·þÎñ£¬¶©µ¥·þÎñÖÐʼþ½ÓÊÕÆ÷½«Ê¼þÐÞ¸ÄΪ¡°ÒÑÍê³É¡±¡£

¿â´æ·þÎñ¿Û¼õ¿â´æÊ§°Ü£¬ÏûÏ¢·þÎñ½ÓÊÕµ½´¦Àíʧ°ÜÏìÓ¦¡£´ËʱÏûÏ¢·þÎñ»áÔÙ´ÎÏò¿â´æ·þÎñ·¢ËÍÏûÏ¢£¬Ö±µ½µÃµ½³É¹¦ÏìÓ¦¡£Èç¹ûʧ°Ü´ÎÊý´ïµ½ãÐÖµ£¬¿ÉÒԸ澯֪ͨÈ˹¤½éÈë¡£

ÏûÏ¢·þÎñ¸ø¶©µ¥·þÎñ·µ»Ø½á¹ûʱ£¬·¢Éúʧ°Ü£¬¶©µ¥·þÎñûÓнÓÊÕµ½³É¹¦ÏìÓ¦¡£Õâ¸öʱºò£¬Ê¼þÂÖѯÂß¼­»áÔٴν«Ê¼þ·¢Ë͸øÏûÏ¢·þÎñ¡£ÕâÑù£¬¿â´æ·þÎñ»áÖØ¸´ÊÕµ½¿Û¼õ¿â´æµÄÏûÏ¢£¬ËùÒÔÒªÇó¿â´æ·þÎñ×öºÃÃݵȡ£¿â´æ·þÎñ·¢ÏÖÏûÏ¢ÒѾ­´¦Àí¹ý£¬Ö±½Ó·µ»Ø³É¹¦¡£

ÕâÖÖ¿¿×ųÖÐøÖØÊÔÀ´±£Ö¤¿É¿¿ÐԵĽâ¾ö·½°¸£¬½Ð×ö¡°×î´óŬÁ¦½»¸¶¡±£¨Best-Effort Delivery£©£¬Ò²ÊÇ¡°¿É¿¿¡±Á½¸ö×ÖµÄÀ´Ô´¡£

¿É¿¿Ê¼þģʽ»¹ÓÐÒ»ÖÖ¸üÆÕͨµÄÐÎʽ£¬±»³ÆÎª¡°×î´óŬÁ¦Ò»´ÎÌá½»¡±£¨Best-Effort 1PC£©£¬Ö¸µÄ¾ÍÊǽ«×îÓпÉÄܳö´í»ò×îºËÐĵÄÒµÎñÒÔ±¾µØÊÂÎñµÄ·½Ê½Íê³Éºó£¬²ÉÓò»¶ÏÖØÊԵķ½Ê½£¨²»ÏÞÓÚÏûÏ¢·þÎñ£©À´´Ùʹͬһ¸ö·Ö²¼Ê½ÊÂÎñÖÐµÄÆäËû¹ØÁªÒµÎñÈ«²¿Íê³É¡£ÕÒµ½×î¿ÉÄܳö´íµÄ·½Ê½ÊÇÌáǰ×öºÃ³ö´í¸ÅÂʵÄÏÈÑéÆÀ¹À£¬²ÅÄܹ»ÖªµÀÄÄ¿é×îÈÝÒ׳ö´í¡£ÕÒµ½×îºËÐĵÄÒµÎñµÄ·½Ê½ÊÇÕÒµ½ÄÇÖÖÖ»Òª³É¹¦£¬ÆäËûÒµÎñ±ØÐë³É¹¦µÄÄÇ¿éÒµÎñ¡£

ÕâÀïÎÒÃÇÔÙ²¹³äÁ½¸ö¸ÅÄ

ÒµÎñÒì³££ºÒµÎñÂß¼­²úÉú´íÎóµÄÇé¿ö£¬±ÈÈçÕË»§Óà¶î²»×ã¡¢ÉÌÆ·¿â´æ²»×ãµÈ¡£

¼¼ÊõÒì³££º·ÇÒµÎñÂß¼­²úÉúµÄÒì³££¬ÈçÍøÂçÁ¬½ÓÒì³£¡¢ÍøÂ糬ʱµÈ¡£

TCC ģʽ

TCC£¨Try-Confirm-Cancel£©ÊÇÒ»ÖÖÒµÎñÇÖÈëʽ½ÏÇ¿µÄÊÂÎñ·½°¸£¬ÒªÇóÒµÎñ´¦Àí¹ý³Ì±ØÐë²ð·ÖΪ¡°Ô¤ÁôÒµÎñ×ÊÔ´¡±ºÍ¡°È·ÈÏ/ÊÍ·ÅÏû·Ñ×ÊÔ´¡±Á½¸ö×Ó¹ý³Ì£¬ÓÉͳһµÄ·þÎñЭµ÷µ÷¶È²»Í¬ÒµÎñϵͳµÄ×Ó¹ý³Ì¡£·ÖΪÒÔÏÂÈý¸ö½×¶Î£º

Try£º³¢ÊÔÖ´Ðн׶Σ¬Íê³ÉËùÓÐÒµÎñ¿ÉÖ´ÐÐÐԵļì²é£¨±£ÕÏÒ»ÖÂÐÔ£©£¬²¢ÇÒÔ¤ÁôºÃÈ«²¿ÐèÒªÓõ½µÄÒµÎñ×ÊÔ´£¨±£ÕϸôÀëÐÔ£©¡£

Confirm£ºÈ·ÈÏÖ´Ðн׶Σ¬²»½øÐÐÈκÎÒµÎñ¼ì²é£¬Ö±½ÓʹÓà Try ½×¶Î×¼±¸µÄ×ÊÔ´À´Íê³ÉÒµÎñ´¦Àí¡£Confirm ½×¶Î¿ÉÄÜ»áÖØ¸´Ö´ÐУ¬ÐèÒªÂú×ãÃݵÈÐÔ¡£

Cancel£ºÈ¡ÏûÖ´Ðн׶Σ¬ÊÍ·Å Try ½×¶ÎÔ¤ÁôµÄÒµÎñ×ÊÔ´¡£Cancel ½×¶Î¿ÉÄÜ»áÖØ¸´Ö´ÐУ¬ÐèÒªÂú×ãÃݵÈÐÔ¡£

¶©µ¥ÏµÍ³´´½¨ÊÂÎñ£¬Éú³ÉÊÂÎñ ID£¨ÓÃÓÚ×÷Ϊʶ±ðÇëÇóÃݵȵıêʶ£©£¬Í¨¹ý»î¶¯¹ÜÀíÆ÷¼Ç¼»î¶¯ÈÕÖ¾¡£

½øÈë Try ½×¶Î

µ÷ÓÃÕË»§ÏµÍ³£¬¼ì²éÕË»§Óà¶îÊÇ·ñ³ä×㣬Èç¹û³ä×㣬¶³½áÐèÒªµÄ½ð¶î£¬´ËʱÕË»§Óà¶îÊÇÁÙ½ç×ÊÔ´£¬ÐèҪͨ¹ýÅÅËüËø»òÀÖ¹ÛËø±£Ö¤¶³½á²Ù×÷µÄ°²È«ÐÔ¡£

µ÷ÓÃ¿â´æÏµÍ³£¬¼ì²éÉÌÆ·¿â´æÊÇ·ñ³ä×㣬Èç¹û³ä×ã£¬Ëø¶¨ÐèÒªµÄ¿â´æ£¬Ëø¿â²Ù×÷Ò²ÐèÒª¼ÓËø±£Ö¤°²È«

Èç¹ûËùÓÐÒµÎñ·µ»Ø³É¹¦£¬¼Ç¼»î¶¯ÈÕ־Ϊ Confirm£¬½øÈë Confirm ½×¶Î£º

µ÷ÓÃÕË»§ÏµÍ³£¬¿Û¼õ¶³½áµÄ½ð¶î

µ÷ÓÃ¿â´æÏµÍ³£¬¿Û¼õËø¶¨µÄ¿â´æ

µÚ 3 ²½²Ù×÷ÖÐÈç¹ûÈ«²¿Íê³É£¬ÊÂÎñÐû¸æ½áÊø¡£Èç¹ûµÚ 3 ²½ÖÐÈκÎÒ»·½³öÏÖÒì³££¬¶¼»á¸ù¾Ý»î¶¯ÈÕÖ¾ÖеļǼ£¬Öظ´Ö´ÐÐ Confirm ²Ù×÷£¬¼´½øÐÐ×î´óŬÁ¦½»¸¶¡£ËùÒÔ¸÷ÒµÎñϵͳµÄ Confirm ²Ù×÷ÐèҪʵÏÖÃݵÈÐÔ¡£

Èç¹ûµÚ 2 ²½ÓÐÈκÎÒ»·½Ê§°Ü£¨°üÀ¨ÒµÎñÒì³£ºÍ¼¼ÊõÒì³££©£¬½«»î¶¯ÈÕÖ¾¼Ç¼Ϊ Cancel£¬½øÈë Cancel ½×¶Î£º

µ÷ÓÃÕË»§ÏµÍ³£¬ÊͷŶ³½áµÄ½ð¶î

µ÷ÓÃ¿â´æÏµÍ³£¬ÊÍ·ÅËø¶¨µÄ¿â´æ

µÚ 5 ²½²Ù×÷ÖÐÈç¹ûÈ«²¿Íê³É£¬ÊÂÎñÐû¸æÊ§°Ü¡£Èç¹ûµÚ 5 ²½ÖÐÈκÎÒ»·½³öÏÖÒì³££¨°üÀ¨ÒµÎñÒì³£ºÍ¼¼ÊõÒì³££©£¬¶¼»á¸ù¾Ý»î¶¯ÈÕÖ¾ÖеļǼ£¬Öظ´Ö´ÐÐ Cacel ²Ù×÷£¬¼´×î´óŬÁ¦½»¸¶¡£ËùÒÔ¸÷ÒµÎñϵͳµÄ Cancel ²Ù×÷Ò²ÐèҪʵÏÖÃݵÈÐÔ¡£

ÊDz»ÊǸоõ TCC Óë 2PC µÄºÜÏñ£¬Á½ÕßµÄÇø±ðÔÚÓÚ£¬TCC λÓÚÒµÎñ´úÂë²ãÃæ£¬ÊôÓڰ׺У¬2PC λÓÚ»ù´¡ÉèÊ©²ãÃæ£¬ÊôÓںںС£ËùÒÔ TCC Óиü¸ßµÄÁé»îÐÔ£¬¿ÉÒÔ¸ù¾ÝÐèÒª£¬µ÷Õû×ÊÔ´Ëø¶¨µÄÁ£¶È¡£

TCC ÔÚÒµÎñÖ´Ðйý³ÌÖпÉÒÔÔ¤Áô×ÊÔ´£¬½â¾öÁ˿ɿ¿Ê¼þģʽµÄ×ÊÔ´¸ôÀëÎÊÌâ¡£µ«ÊÇ£¬TCC »¹ÓÐÁ½¸öÃ÷ÏÔȱµã£º

TCC ½«»ù´¡ÉèÊ©²ãµÄÂß¼­ÉÏÒÆµ½ÒµÎñ´úÂ룬¶ÔÒµÎñÓкܸߵÄÇÖÈëÐÔ£¬ÐèÒª¸ü¸ßµÄ¿ª·¢³É±¾£¬¿ª·¢³É±¾ÌáÉý£¬Ïà¶ÔÓ¦µÄά»¤³É±¾¡¢¿ª·¢ÈËÔ±µÄËØÖʵȣ¬¶¼»áÓиü¸ßµÄÒªÇó¡£

TCC ÒªÇó×ÊÔ´¿ÉÒÔËø¶¨¡¢Õ¼ÓûòÊÍ·Å£¬µ«ÊÇÓеÄ×ÊÔ´ÊôÓÚÍⲿϵͳ£¬Ã»Óа취ʵÏÖËø¶¨¡£

¼øÓÚÉÏÃæµÄÁ½¸öȱµã£¬ÎÒÃÇ¿´¿´ SAGA ÊÇ·ñ¿ÉÒÔÃÖ²¹¡£

SAGA ģʽ

SAGA ÔÚÓ¢ÎÄÖÐÊÇ¡°³¤Æª¹ÊÊ¡¢³¤Æª¼ÇÐð¡¢Ò»³¤´®Ê¼þ¡±µÄÒâ˼¡£SAGA ģʽµÄÌá³öÔ¶ÔçÓÚ·Ö²¼Ê½ÊÂÎñ¸ÅÄîµÄÌá³ö£¨ÔٴζÔǰ±²´óÀÐÅå·þµÄÎåÌåͶµØ£©£¬ËüÔ´ÓÚ 1987 ÄêÆÕÁÖ˹¶Ù´óѧµÄ Hector Garcia-Molina ºÍ Kenneth Salem ÔÚ ACM ·¢±íµÄһƪÂÛÎÄ¡¶SAGAS¡·¡£ÎÄÖÐÌá³öÁËÒ»ÖÖÌáÉý¡°³¤Ê±¼äÊÂÎñ¡±£¨Long Lived Transaction£©ÔË×÷ЧÂʵķ½·¨£¬´óÖÂ˼·ÊǰÑÒ»¸ö´óÊÂÎñ·Ö½âΪ¿ÉÒÔ½»´íÔËÐеÄһϵÁÐ×ÓÊÂÎñ¼¯ºÏ£¬ºóÀ´·¢Õ¹³É½«Ò»¸ö·Ö²¼Ê½»·¾³ÖеĴóÊÂÎñ·Ö½âΪһϵÁб¾µØÊÂÎñµÄÉè¼ÆÄ£Ê½¡£ÔÚÓеÄÎÄÕÂÖУ¬½«ÕâÖÖģʽ³ÆÎªÒµÎñ²¹³¥Ä£Ê½£¬SAGA ÊǶÔÊÂÎñÐÎʽµÄÃèÊö£¬ÒµÎñ²¹³¥ÊǶÔÊÂÎñÐÐΪµÄÃèÊö£¬Æä±¾ÖÊÊÇÒ»ÑùµÄ¡£

SAGA ģʽÓÐÁ½ÖÖʵÏÖ£º

ÕýÏò»Ö¸´£¨Forward Recovery£©£ºË³ÐòÖ´Ðи÷¸ö×ÓÊÂÎñ£¬Èç¹ûÓöµ½Ä³¸ö×ÓÊÂÎñÖ´ÐÐʧ°Ü£¬½«Ò»Ö±ÖØÊԸòÙ×÷£¬ÖªµÀ³É¹¦£¬È»ºó¼ÌÐøÖ´ÐÐÏÂÒ»¸ö×ÓÊÂÎñ¡£±ÈÈçÓû§Ïµ¥Ö§¸¶³É¹¦ÁË£¬¾ÍÒ»¶¨Òª¿Û¼õ¿â´æ¡£

·´Ïò»Ö¸´£¨Backward Recovery£©£ºË³ÐòÖ´Ðи÷¸ö×ÓÊÂÎñ£¬Èç¹ûÓöµ½Ä³¸ö×ÓÊÂÎñÖ´ÐÐʧ°Ü£¬½«Ö´ÐиÃ×ÓÊÂÎñµÄ²¹³¥²Ù×÷£¨±ÜÃâÒòΪ¼¼ÊõÒì³£Ôì³ÉµÄʧ°Ü£¬²¹³¥²Ù×÷ÐèÒªÃݵȣ©£¬È»ºóµ¹ÐòÖ´ÐÐÒѾ­³É¹¦µÄ×ÓÊÂÎñµÄ²¹³¥²Ù×÷¡£ÕâÖÖÒ»°ãÊÇ¿ÉÈ¡ÏûµÄÅúÁ¿²Ù×÷£¬±ÈÈç³öÐж©Æ±£¬ÐèÒª¹ºÂò·É»úƱ¡¢¶©¾Æµê¡¢ÂòÃÅÆ±£¬Èç¹ûÂòÃÅÆ±Ê§°ÜÁË£¬·É»úƱºÍ¾Æµê¾Í¿ÉÒÔÈ¡ÏûÁË¡£

¸ù¾ÝÕâÁ½ÖÖʵÏÖ£¬SAGA ¿ÉÒÔ·ÖΪÁ½²¿·Ö£º

×ÓÊÂÎñ£¨Normal Transactions£©£º´óÊÂÎñ²ð·ÖÈô¸É¸öСÊÂÎñ£¬½«Õû¸öÊÂÎñ T ·Ö½âΪ n ¸ö×ÓÊÂÎñ£¬ÃüÃûΪ T1¡¢T2¡¢¡­¡¢Tn¡£Ã¿¸ö×ÓÊÂÎñ¶¼Ó¦¸ÃÊÇ»òÕßÄܱ»ÊÓΪÊÇÔ­×ÓÐÐΪ¡£Èç¹û·Ö²¼Ê½ÊÂÎñÄܹ»Õý³£Ìá½»£¬Æä¶ÔÊý¾ÝµÄÓ°Ï죨×îÖÕÒ»ÖÂÐÔ£©Ó¦ÓëÁ¬Ðø°´Ë³Ðò³É¹¦Ìá½» Ti µÈ¼Û¡£

²¹³¥ÊÂÎñ£¨Compensating Transactions£©£ºÃ¿¸ö×ÓÊÂÎñ¶ÔÓ¦µÄ²¹³¥¶¯×÷£¬ÃüÃûΪ C1¡¢C2¡¢¡­¡¢Cn¡£

×ÓÊÂÎñÓë²¹³¥¶¯×÷ÐèÒªÂú×ãһЩÌõ¼þ£º

TiÓë Ci±ØÐë¶ÔÓ¦

²¹³¥¶¯×÷ CiÒ»¶¨»áÖ´Ðгɹ¦£¬¼´ÐèҪʵÏÖ×î´óŬÁ¦½»¸¶¡£

TiÓë CiÐèÒª¾ß±¸ÃݵÈÐÔ

ÎÄÄ©×ܽá

±¾ÎÄÖ÷Òª×ܽáÁ˱¾µØÊÂÎñ¡¢È«¾ÖÊÂÎñ¡¢×îÖÕÒ»ÖÂÐԵȷ½Ê½ÊµÏÖÊý¾Ý×ÔÇ¢¡£Öصã½éÉÜÁËʵÏÖ×îÖÕÒ»ÖÂÐԵļ¯ÖÐģʽ£º¿É¿¿Ê¼þģʽ¡¢TCC ģʽ¡¢SAGA ģʽµÈ¡£Êý¾ÝµÄÒ»ÖÂÐÔÒ»Ö±ÊǸöÄÑÌâ£¬Ëæ×Å΢·þÎñ»¯Ö®ºó£¬Êý¾ÝÒ»ÖÂÐÔ¸ü¼ÓÀ§ÄÑ£¬ÓÐÀ§ÄѲ»Å£¬Ö»Òª²»·ÅÆú£¬×Ü»á½â¾öµÄ¡£

 

   
1597 ´Îä¯ÀÀ       28
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
ÔÆÔ­Éú¼Ü¹¹¸ÅÊö
K8S¸ß¿ÉÓü¯Èº¼Ü¹¹ÊµÏÖ
ÈÝÆ÷ÔÆ¹ÜÀíÖ®K8S¼¯Èº¸ÅÊö
k8s-ÕûÌå¸ÅÊöºÍ¼Ü¹¹
Ê®·ÖÖÓѧ»áÓÃdocker²¿Êð΢·þÎñ
×îпγÌ
ÔÆ¼ÆË㡢΢·þÎñÓë·Ö²¼Ê½¼Ü¹¹
Æóҵ˽ÓÐÔÆÔ­ÀíÓë¹¹½¨
»ùÓÚKubernetesµÄDevOpsʵ¼ù
ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦Ó㨰¢ÀïÔÆ£©
Docker²¿Êð±»²âϵͳÓë×Ô¶¯»¯¿ò¼Üʵ¼ù
³É¹¦°¸Àý
±±¾© ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ùÅàѵ
ij¾ü¹¤Ñо¿µ¥Î» MDA£¨Ä£ÐÍÇý¶¯¼Ü¹¹£©
ÖªÃûÏû·Ñ½ðÈÚ¹«Ë¾ ÁìÓòÇý¶¯Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ
 
 
 
 
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤