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