±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÎÄÕÂÏêϸ½éÉÜÁËÊáÀí·Ö²¼Ê½ÊÂÎñµÄ»ù±¾¸ÅÄîºÍÀíÂÛ»ù´¡£¬È»ºó½éÉܼ¸ÖÖĿǰ³£Óõķֲ¼Ê½ÊÂÎñ½â¾ö·½°¸µÈ¡£
|
|
ʲôÊÇÊÂÎñ£¿
ÊÂÎñÓÉÒ»×é²Ù×÷¹¹³É£¬ÎÒÃÇÏ£ÍûÕâ×é²Ù×÷Äܹ»È«²¿ÕýÈ·Ö´ÐУ¬Èç¹ûÕâÒ»×é²Ù×÷ÖеÄÈÎÒâÒ»¸ö²½Öè·¢Éú´íÎó£¬ÄÇô¾ÍÐèÒª»Ø¹ö֮ǰÒѾÍê³ÉµÄ²Ù×÷¡£Ò²¾ÍÊÇͬһ¸öÊÂÎñÖеÄËùÓвÙ×÷£¬ÒªÃ´È«¶¼ÕýÈ·Ö´ÐУ¬ÒªÃ´È«¶¼²»ÒªÖ´ÐС£
ÊÂÎñµÄËÄ´óÌØÐÔ ACID
˵µ½ÊÂÎñ£¬¾Í²»µÃ²»ÌáÒ»ÏÂÊÂÎñÖøÃûµÄËÄ´óÌØÐÔ¡£Ô×ÓÐÔ
Ô×ÓÐÔÒªÇó£¬ÊÂÎñÊÇÒ»¸ö²»¿É·Ö¸îµÄÖ´Ðе¥Ôª£¬ÊÂÎñÖеÄËùÓвÙ×÷Ҫôȫ¶¼Ö´ÐУ¬ÒªÃ´È«¶¼²»Ö´ÐС£
Ò»ÖÂÐÔ
Ò»ÖÂÐÔÒªÇó£¬ÊÂÎñÔÚ¿ªÊ¼Ç°ºÍ½áÊøºó£¬Êý¾Ý¿âµÄÍêÕûÐÔÔ¼ÊøÃ»Óб»ÆÆ»µ¡£
¸ôÀëÐÔ
ÊÂÎñµÄÖ´ÐÐÊÇÏ໥¶ÀÁ¢µÄ£¬ËüÃDz»»áÏ໥¸ÉÈÅ£¬Ò»¸öÊÂÎñ²»»á¿´µ½ÁíÒ»¸öÕýÔÚÔËÐйý³ÌÖеÄÊÂÎñµÄÊý¾Ý¡£
³Ö¾ÃÐÔ
³Ö¾ÃÐÔÒªÇó£¬Ò»¸öÊÂÎñÍê³ÉÖ®ºó£¬ÊÂÎñµÄÖ´Ðнá¹û±ØÐëÊdz־û¯±£´æµÄ¡£¼´Ê¹Êý¾Ý¿â·¢Éú±ÀÀ££¬ÔÚÊý¾Ý¿â»Ö¸´ºóÊÂÎñÌá½»µÄ½á¹ûÈÔÈ»²»»á¶ªÊ§¡£
×¢Ò⣺ÊÂÎñÖ»Äܱ£Ö¤Êý¾Ý¿âµÄ¸ß¿É¿¿ÐÔ£¬¼´Êý¾Ý¿â±¾Éí·¢ÉúÎÊÌâºó£¬ÊÂÎñÌá½»ºóµÄÊý¾ÝÈÔÈ»Äָܻ´£»¶øÈç¹û²»ÊÇÊý¾Ý¿â±¾ÉíµÄ¹ÊÕÏ£¬ÈçÓ²ÅÌËð»µÁË£¬ÄÇôÊÂÎñÌá½»µÄÊý¾Ý¿ÉÄܾͶªÊ§ÁË¡£ÕâÊôÓÚ¡º¸ß¿ÉÓÃÐÔ¡»µÄ·¶³ë¡£Òò´Ë£¬ÊÂÎñÖ»Äܱ£Ö¤Êý¾Ý¿âµÄ¡º¸ß¿É¿¿ÐÔ¡»£¬¶ø¡º¸ß¿ÉÓÃÐÔ¡»ÐèÒªÕû¸öϵͳ¹²Í¬ÅäºÏʵÏÖ¡£
ÊÂÎñµÄ¸ôÀë¼¶±ð
ÕâÀïÀ©Õ¹Ò»Ï£¬¶ÔÊÂÎñµÄ¸ôÀëÐÔ×öÒ»¸öÏêϸµÄ½âÊÍ¡£
ÔÚÊÂÎñµÄËÄ´óÌØÐÔACIDÖУ¬ÒªÇóµÄ¸ôÀëÐÔÊÇÒ»ÖÖÑϸñÒâÒåÉϵĸôÀ룬Ҳ¾ÍÊǶà¸öÊÂÎñÊÇ´®ÐÐÖ´Ðеģ¬±Ë´ËÖ®¼ä²»»áÊܵ½ÈκθÉÈÅ¡£ÕâȷʵÄܹ»ÍêÈ«±£Ö¤Êý¾ÝµÄ°²È«ÐÔ£¬µ«ÔÚʵ¼ÊÒµÎñϵͳÖУ¬ÕâÖÖ·½Ê½ÐÔÄܲ»¸ß¡£Òò´Ë£¬Êý¾Ý¿â¶¨ÒåÁËËÄÖÖ¸ôÀë¼¶±ð£¬¸ôÀë¼¶±ðºÍÊý¾Ý¿âµÄÐÔÄÜÊdzʷ´±ÈµÄ£¬¸ôÀë¼¶±ðÔ½µÍ£¬Êý¾Ý¿âÐÔÄÜÔ½¸ß£¬¶ø¸ôÀë¼¶±ðÔ½¸ß£¬Êý¾Ý¿âÐÔÄÜÔ½²î¡£
ÊÂÎñ²¢·¢Ö´Ðлá³öÏÖµÄÎÊÌâ
ÎÒÃÇÏÈÀ´¿´Ò»ÏÂÔÚ²»Í¬µÄ¸ôÀë¼¶±ðÏ£¬Êý¾Ý¿â¿ÉÄÜ»á³öÏÖµÄÎÊÌ⣺¸üжªÊ§
µ±ÓÐÁ½¸ö²¢·¢Ö´ÐеÄÊÂÎñ£¬¸üÐÂͬһÐÐÊý¾Ý£¬ÄÇôÓпÉÄÜÒ»¸öÊÂÎñ»á°ÑÁíÒ»¸öÊÂÎñµÄ¸üи²¸Çµô¡£
µ±Êý¾Ý¿âûÓмÓÈκÎËø²Ù×÷µÄÇé¿öÏ»ᷢÉú¡£
Ôà¶Á
Ò»¸öÊÂÎñ¶Áµ½ÁíÒ»¸öÉÐδÌá½»µÄÊÂÎñÖеÄÊý¾Ý¡£
¸ÃÊý¾Ý¿ÉÄܻᱻ»Ø¹ö´Ó¶øÊ§Ð§¡£
Èç¹ûµÚÒ»¸öÊÂÎñÄÃ×ÅʧЧµÄÊý¾ÝÈ¥´¦ÀíÄǾͷ¢Éú´íÎóÁË¡£
²»¿ÉÖØ¸´¶Á
²»¿ÉÖØ¸´¶ÈµÄº¬Ò壺һ¸öÊÂÎñ¶ÔͬһÐÐÊý¾Ý¶ÁÁËÁ½´Î£¬È´µÃµ½Á˲»Í¬µÄ½á¹û¡£Ëü¾ßÌå·ÖΪÈçÏÂÁ½ÖÖÇé¿ö£º
Ðé¶Á£ºÔÚÊÂÎñ1Á½´Î¶Áȡͬһ¼Ç¼µÄ¹ý³ÌÖУ¬ÊÂÎñ2¶Ô¸Ã¼Ç¼½øÐÐÁËÐ޸쬴ӶøÊÂÎñ1µÚ¶þ´Î¶Áµ½Á˲»Ò»ÑùµÄ¼Ç¼¡£
»Ã¶Á£ºÊÂÎñ1ÔÚÁ½´Î²éѯµÄ¹ý³ÌÖУ¬ÊÂÎñ2¶Ô¸Ã±í½øÐÐÁ˲åÈ롢ɾ³ý²Ù×÷£¬´Ó¶øÊÂÎñ1µÚ¶þ´Î²éѯµÄ½á¹û·¢ÉúÁ˱仯¡£
²»¿ÉÖØ¸´¶Á Óë Ôà¶Á µÄÇø±ð£¿
Ôà¶Á¶Áµ½µÄÊÇÉÐδÌá½»µÄÊý¾Ý£¬¶ø²»¿ÉÖØ¸´¶Á¶Áµ½µÄÊÇÒѾÌá½»µÄÊý¾Ý£¬Ö»²»¹ýÔÚÁ½´Î¶ÁµÄ¹ý³ÌÖÐÊý¾Ý±»ÁíÒ»¸öÊÂÎñ¸Ä¹ýÁË¡£
Êý¾Ý¿âµÄËÄÖÖ¸ôÀë¼¶±ð
Êý¾Ý¿âÒ»¹²ÓÐÈçÏÂËÄÖÖ¸ôÀë¼¶±ð£ºRead uncommitted ¶ÁδÌá½»
Ôڸü¶±ðÏ£¬Ò»¸öÊÂÎñ¶ÔÒ»ÐÐÊý¾ÝÐ޸ĵĹý³ÌÖУ¬²»ÔÊÐíÁíÒ»¸öÊÂÎñ¶Ô¸ÃÐÐÊý¾Ý½øÐÐÐ޸쬵«ÔÊÐíÁíÒ»¸öÊÂÎñ¶Ô¸ÃÐÐÊý¾Ý¶Á¡£
Òò´Ë±¾¼¶±ðÏ£¬²»»á³öÏÖ¸üжªÊ§£¬µ«»á³öÏÖÔà¶Á¡¢²»¿ÉÖØ¸´¶Á¡£
Read committed ¶ÁÌá½»
Ôڸü¶±ðÏ£¬Î´Ìá½»µÄдÊÂÎñ²»ÔÊÐíÆäËûÊÂÎñ·ÃÎʸÃÐУ¬Òò´Ë²»»á³öÏÖÔà¶Á£»µ«ÊǶÁÈ¡Êý¾ÝµÄÊÂÎñÔÊÐíÆäËûÊÂÎñµÄ·ÃÎʸÃÐÐÊý¾Ý£¬Òò´Ë»á³öÏÖ²»¿ÉÖØ¸´¶ÁµÄÇé¿ö¡£
Repeatable read ÖØ¸´¶Á
Ôڸü¶±ðÏ£¬¶ÁÊÂÎñ½ûֹдÊÂÎñ£¬µ«ÔÊÐí¶ÁÊÂÎñ£¬Òò´Ë²»»á³öÏÖͬһÊÂÎñÁ½´Î¶Áµ½²»Í¬µÄÊý¾ÝµÄÇé¿ö£¨²»¿ÉÖØ¸´¶Á£©£¬ÇÒдÊÂÎñ½ûÖ¹ÆäËûÒ»ÇÐÊÂÎñ¡£
Serializable ÐòÁл¯
¸Ã¼¶±ðÒªÇóËùÓÐÊÂÎñ¶¼±ØÐë´®ÐÐÖ´ÐУ¬Òò´ËÄܱÜÃâÒ»ÇÐÒò²¢·¢ÒýÆðµÄÎÊÌ⣬µ«Ð§Âʺܵ͡£¸ôÀë¼¶±ðÔ½¸ß£¬Ô½Äܱ£Ö¤Êý¾ÝµÄÍêÕûÐÔºÍÒ»ÖÂÐÔ£¬µ«ÊǶԲ¢·¢ÐÔÄܵÄÓ°ÏìÒ²Ô½´ó¡£¶ÔÓÚ¶àÊýÓ¦ÓóÌÐò£¬¿ÉÒÔÓÅÏÈ¿¼ÂǰÑÊý¾Ý¿âϵͳµÄ¸ôÀë¼¶±ðÉèΪRead
Committed¡£ËüÄܹ»±ÜÃâÔà¶ÁÈ¡£¬¶øÇÒ¾ßÓнϺõIJ¢·¢ÐÔÄÜ¡£¾¡¹ÜËü»áµ¼Ö²»¿ÉÖØ¸´¶Á¡¢»Ã¶ÁºÍµÚ¶þÀඪʧ¸üÐÂÕâЩ²¢·¢ÎÊÌ⣬ÔÚ¿ÉÄܳöÏÖÕâÀàÎÊÌâµÄ¸ö±ð³¡ºÏ£¬¿ÉÒÔÓÉÓ¦ÓóÌÐò²ÉÓñ¯¹ÛËø»òÀÖ¹ÛËøÀ´¿ØÖÆ¡£
ʲôÊÇ·Ö²¼Ê½ÊÂÎñ£¿
µ½´ËΪֹ£¬Ëù½éÉܵÄÊÂÎñ¶¼ÊÇ»ùÓÚµ¥Êý¾Ý¿âµÄ±¾µØÊÂÎñ£¬Ä¿Ç°µÄÊý¾Ý¿â½öÖ§³Öµ¥¿âÊÂÎñ£¬²¢²»Ö§³Ö¿ç¿âÊÂÎñ¡£¶øËæ×Å΢·þÎñ¼Ü¹¹µÄÆÕ¼°£¬Ò»¸ö´óÐÍÒµÎñϵͳÍùÍùÓÉÈô¸É¸ö×Óϵͳ¹¹³É£¬ÕâЩ×ÓϵͳÓÖÓµÓи÷×Ô¶ÀÁ¢µÄÊý¾Ý¿â¡£ÍùÍùÒ»¸öÒµÎñÁ÷³ÌÐèÒªÓɶà¸ö×Óϵͳ¹²Í¬Íê³É£¬¶øÇÒÕâЩ²Ù×÷¿ÉÄÜÐèÒªÔÚÒ»¸öÊÂÎñÖÐÍê³É¡£ÔÚ΢·þÎñϵͳÖУ¬ÕâЩҵÎñ³¡¾°ÊÇÆÕ±é´æÔڵġ£´Ëʱ£¬ÎÒÃǾÍÐèÒªÔÚÊý¾Ý¿âÖ®ÉÏͨ¹ýijÖÖÊֶΣ¬ÊµÏÖÖ§³Ö¿çÊý¾Ý¿âµÄÊÂÎñÖ§³Ö£¬ÕâÒ²¾ÍÊÇ´ó¼Ò³£ËµµÄ¡°·Ö²¼Ê½ÊÂÎñ¡±¡£
ÕâÀï¾ÙÒ»¸ö·Ö²¼Ê½ÊÂÎñµÄµäÐÍÀý×Ó¡ª¡ªÓû§Ïµ¥¹ý³Ì¡£
µ±ÎÒÃǵÄϵͳ²ÉÓÃÁË΢·þÎñ¼Ü¹¹ºó£¬Ò»¸öµçÉÌϵͳÍùÍù±»²ð·Ö³ÉÈçϼ¸¸ö×Óϵͳ£ºÉÌÆ·ÏµÍ³¡¢¶©µ¥ÏµÍ³¡¢Ö§¸¶ÏµÍ³¡¢»ý·ÖϵͳµÈ¡£Õû¸öϵ¥µÄ¹ý³ÌÈçÏ£ºÓû§Í¨¹ýÉÌÆ·ÏµÍ³ä¯ÀÀÉÌÆ·£¬Ëû¿´ÖÐÁËijһÏîÉÌÆ·£¬±ãµã»÷ϵ¥
´Ëʱ¶©µ¥ÏµÍ³»áÉú³ÉÒ»Ìõ¶©µ¥
¶©µ¥´´½¨³É¹¦ºó£¬Ö§¸¶ÏµÍ³Ìṩ֧¸¶¹¦ÄÜ
µ±Ö§¸¶Íê³Éºó£¬ÓÉ»ý·ÖϵͳΪ¸ÃÓû§Ôö¼Ó»ý·ÖÉÏÊö²½Öè2¡¢3¡¢4ÐèÒªÔÚÒ»¸öÊÂÎñÖÐÍê³É¡£¶ÔÓÚ´«Í³µ¥ÌåÓ¦ÓöøÑÔ£¬ÊµÏÖÊÂÎñ·Ç³£¼òµ¥£¬Ö»Ð轫ÕâÈý¸ö²½Öè·ÅÔÚÒ»¸ö·½·¨AÖУ¬ÔÙÓÃSpringµÄ@Transactional×¢½â±êʶ¸Ã·½·¨¼´¿É¡£Springͨ¹ýÊý¾Ý¿âµÄÊÂÎñÖ§³Ö£¬±£Ö¤ÕâЩ²½ÖèҪôȫ¶¼Ö´ÐÐÍê³É£¬ÒªÃ´È«¶¼²»Ö´ÐС£µ«ÔÚÕâ¸ö΢·þÎñ¼Ü¹¹ÖУ¬ÕâÈý¸ö²½ÖèÉæ¼°Èý¸öϵͳ£¬Éæ¼°Èý¸öÊý¾Ý¿â£¬´ËʱÎÒÃDZØÐëÔÚÊý¾Ý¿âºÍÓ¦ÓÃϵͳ֮¼ä£¬Í¨¹ýijÏîºÚ¿Æ¼¼£¬ÊµÏÖ·Ö²¼Ê½ÊÂÎñµÄÖ§³Ö¡£
CAPÀíÂÛ
CAPÀíÂÛ˵µÄÊÇ£ºÔÚÒ»¸ö·Ö²¼Ê½ÏµÍ³ÖУ¬×î¶àÖ»ÄÜÂú×ãC¡¢A¡¢PÖеÄÁ½¸öÐèÇó¡£
CAPµÄº¬Ò壺C£ºConsistency Ò»ÖÂÐÔ
ͬһÊý¾ÝµÄ¶à¸ö¸±±¾ÊÇ·ñʵʱÏàͬ¡£
A£ºAvailability ¿ÉÓÃÐÔ
¿ÉÓÃÐÔ£ºÒ»¶¨Ê±¼äÄÚ & ϵͳ·µ»ØÒ»¸öÃ÷È·µÄ½á¹û Ôò³ÆÎª¸Ãϵͳ¿ÉÓá£
P£ºPartition tolerance ·ÖÇøÈÝ´íÐÔ
½«Í¬Ò»·þÎñ·Ö²¼ÔÚ¶à¸öϵͳÖУ¬´Ó¶ø±£Ö¤Ä³Ò»¸öϵͳ崻ú£¬ÈÔÈ»ÓÐÆäËûϵͳÌṩÏàͬµÄ·þÎñ¡£CAPÀíÂÛ¸æËßÎÒÃÇ£¬ÔÚ·Ö²¼Ê½ÏµÍ³ÖУ¬C¡¢A¡¢PÈý¸öÌõ¼þÖÐÎÒÃÇ×î¶àÖ»ÄÜÑ¡ÔñÁ½¸ö¡£ÄÇôÎÊÌâÀ´ÁË£¬¾¿¾¹Ñ¡ÔñÄÄÁ½¸öÌõ¼þ½ÏΪºÏÊÊÄØ£¿
¶ÔÓÚÒ»¸öÒµÎñϵͳÀ´Ëµ£¬¿ÉÓÃÐԺͷÖÇøÈÝ´íÐÔÊDZØÐëÒªÂú×ãµÄÁ½¸öÌõ¼þ£¬²¢ÇÒÕâÁ½ÕßÊÇÏศÏà³ÉµÄ¡£ÒµÎñϵͳ֮ËùÒÔʹÓ÷ֲ¼Ê½ÏµÍ³£¬Ö÷ÒªÔÒòÓÐÁ½¸ö£ºÌáÉýÕûÌåÐÔÄÜ
µ±ÒµÎñÁ¿ÃÍÔö£¬µ¥¸ö·þÎñÆ÷ÒѾÎÞ·¨Âú×ãÎÒÃǵÄÒµÎñÐèÇóµÄʱºò£¬¾ÍÐèҪʹÓ÷ֲ¼Ê½ÏµÍ³£¬Ê¹Óöà¸ö½ÚµãÌṩÏàͬµÄ¹¦ÄÜ£¬´Ó¶øÕûÌåÉÏÌáÉýϵͳµÄÐÔÄÜ£¬Õâ¾ÍÊÇʹÓ÷ֲ¼Ê½ÏµÍ³µÄµÚÒ»¸öÔÒò¡£
ʵÏÖ·ÖÇøÈÝ´íÐÔ
µ¥Ò»½Úµã »ò ¶à¸ö½Úµã´¦ÓÚÏàͬµÄÍøÂç»·¾³Ï£¬ÄÇô»á´æÔÚÒ»¶¨µÄ·çÏÕ£¬ÍòÒ»¸Ã»ú·¿¶Ïµç¡¢¸ÃµØÇø·¢Éú×ÔÈ»ÔÖº¦£¬ÄÇôҵÎñϵͳ¾ÍÈ«ÃæÌ±»¾ÁË¡£ÎªÁË·ÀÖ¹ÕâÒ»ÎÊÌ⣬²ÉÓ÷ֲ¼Ê½ÏµÍ³£¬½«¶à¸ö×Óϵͳ·Ö²¼ÔÚ²»Í¬µÄµØÓò¡¢²»Í¬µÄ»ú·¿ÖУ¬´Ó¶ø±£Ö¤ÏµÍ³¸ß¿ÉÓÃÐÔ¡£Õâ˵Ã÷·ÖÇøÈÝ´íÐÔÊÇ·Ö²¼Ê½ÏµÍ³µÄ¸ù±¾£¬Èç¹û·ÖÇøÈÝ´íÐÔ²»ÄÜÂú×㣬ÄÇʹÓ÷ֲ¼Ê½ÏµÍ³½«Ê§È¥ÒâÒå¡£
´ËÍ⣬¿ÉÓÃÐÔ¶ÔÒµÎñϵͳҲÓÈÎªÖØÒª¡£ÔÚ´ó̸Óû§ÌåÑéµÄ½ñÌ죬Èç¹ûÒµÎñϵͳʱ³£³öÏÖ¡°ÏµÍ³Òì³£¡±¡¢ÏìӦʱ¼ä¹ý³¤µÈÇé¿ö£¬ÕâʹµÃÓû§¶ÔϵͳµÄºÃ¸Ð¶È´ó´òÕÛ¿Û£¬ÔÚ»¥ÁªÍøÐÐÒµ¾ºÕù¼¤ÁҵĽñÌ죬ÏàͬÁìÓòµÄ¾ºÕùÕß²»Éõö¾Ù£¬ÏµÍ³µÄ¼äЪÐÔ²»¿ÉÓûáÁ¢Âíµ¼ÖÂÓû§Á÷Ïò¾ºÕù¶ÔÊÖ¡£Òò´Ë£¬ÎÒÃÇÖ»ÄÜͨ¹ýÎþÉüÒ»ÖÂÐÔÀ´»»È¡ÏµÍ³µÄ¿ÉÓÃÐԺͷÖÇøÈÝ´íÐÔ¡£ÕâÒ²¾ÍÊÇÏÂÃæÒª½éÉܵÄBASEÀíÂÛ¡£
BASEÀíÂÛ
CAPÀíÂÛ¸æËßÎÒÃÇÒ»¸ö±¯²Òµ«²»µÃ²»½ÓÊܵÄÊÂʵ¡ª¡ªÎÒÃÇÖ»ÄÜÔÚC¡¢A¡¢PÖÐÑ¡ÔñÁ½¸öÌõ¼þ¡£¶ø¶ÔÓÚÒµÎñϵͳ¶øÑÔ£¬ÎÒÃÇÍùÍùÑ¡ÔñÎþÉüÒ»ÖÂÐÔÀ´»»È¡ÏµÍ³µÄ¿ÉÓÃÐԺͷÖÇøÈÝ´íÐÔ¡£²»¹ýÕâÀïÒªÖ¸³öµÄÊÇ£¬ËùνµÄ¡°ÎþÉüÒ»ÖÂÐÔ¡±²¢²»ÊÇÍêÈ«·ÅÆúÊý¾ÝÒ»ÖÂÐÔ£¬¶øÊÇÎþÉüǿһÖÂÐÔ»»È¡ÈõÒ»ÖÂÐÔ¡£ÏÂÃæÀ´½éÉÜÏÂBASEÀíÂÛ¡£BA£ºBasic
Available »ù±¾¿ÉÓÃ
Õû¸öϵͳÔÚijЩ²»¿É¿¹Á¦µÄÇé¿öÏ£¬ÈÔÈ»Äܹ»±£Ö¤¡°¿ÉÓÃÐÔ¡±£¬¼´Ò»¶¨Ê±¼äÄÚÈÔÈ»Äܹ»·µ»ØÒ»¸öÃ÷È·µÄ½á¹û¡£Ö»²»¹ý¡°»ù±¾¿ÉÓᱺ͡°¸ß¿ÉÓá±µÄÇø±ðÊÇ£º
¡°Ò»¶¨Ê±¼ä¡±¿ÉÒÔÊʵ±ÑÓ³¤
µ±¾ÙÐдó´Ùʱ£¬ÏìӦʱ¼ä¿ÉÒÔÊʵ±ÑÓ³¤
¸ø²¿·ÖÓû§·µ»ØÒ»¸ö½µ¼¶Ò³Ãæ
¸ø²¿·ÖÓû§Ö±½Ó·µ»ØÒ»¸ö½µ¼¶Ò³Ã棬´Ó¶ø»º½â·þÎñÆ÷ѹÁ¦¡£µ«Òª×¢Ò⣬·µ»Ø½µ¼¶Ò³ÃæÈÔÈ»ÊÇ·µ»ØÃ÷È·½á¹û¡£
S£ºSoft State£ºÈáÐÔ״̬
ͬһÊý¾ÝµÄ²»Í¬¸±±¾µÄ״̬£¬¿ÉÒÔ²»ÐèҪʵʱһÖ¡£
E£ºEventual Consisstency£º×îÖÕÒ»ÖÂÐÔ
ͬһÊý¾ÝµÄ²»Í¬¸±±¾µÄ״̬£¬¿ÉÒÔ²»ÐèҪʵʱһÖ£¬µ«Ò»¶¨Òª±£Ö¤¾¹ýÒ»¶¨Ê±¼äºóÈÔÈ»ÊÇÒ»Öµġ£
Ëá¼îƽºâ
ACIDÄܹ»±£Ö¤ÊÂÎñµÄǿһÖÂÐÔ£¬¼´Êý¾ÝÊÇʵʱһÖµġ£ÕâÔÚ±¾µØÊÂÎñÖÐÊÇûÓÐÎÊÌâµÄ£¬ÔÚ·Ö²¼Ê½ÊÂÎñÖУ¬Ç¿Ò»ÖÂÐԻἫ´óÓ°Ïì·Ö²¼Ê½ÏµÍ³µÄÐÔÄÜ£¬Òò´Ë·Ö²¼Ê½ÏµÍ³ÖÐ×ñÑBASEÀíÂÛ¼´¿É¡£µ«·Ö²¼Ê½ÏµÍ³µÄ²»Í¬ÒµÎñ³¡¾°¶ÔÒ»ÖÂÐÔµÄÒªÇóÒ²²»Í¬¡£Èç½»Ò׳¡¾°Ï£¬¾ÍÒªÇóǿһÖÂÐÔ£¬´Ëʱ¾ÍÐèÒª×ñÑACIDÀíÂÛ£¬¶øÔÚ×¢²á³É¹¦ºó·¢ËͶÌÐÅÑéÖ¤ÂëµÈ³¡¾°Ï£¬²¢²»ÐèҪʵʱһÖ£¬Òò´Ë×ñÑBASEÀíÂÛ¼´¿É¡£Òò´ËÒª¸ù¾Ý¾ßÌåÒµÎñ³¡¾°£¬ÔÚACIDºÍBASEÖ®¼äѰÇóÆ½ºâ¡£
·Ö²¼Ê½ÊÂÎñÐÒé
ÏÂÃæ½éÉܼ¸ÖÖʵÏÖ·Ö²¼Ê½ÊÂÎñµÄÐÒé¡£
Á½½×¶ÎÌá½»ÐÒé 2PC
·Ö²¼Ê½ÏµÍ³µÄÒ»¸öÄѵãÊÇÈçºÎ±£Ö¤¼Ü¹¹Ï¶à¸ö½ÚµãÔÚ½øÐÐÊÂÎñÐÔ²Ù×÷µÄʱºò±£³ÖÒ»ÖÂÐÔ¡£ÎªÊµÏÖÕâ¸öÄ¿µÄ£¬¶þ½×¶ÎÌá½»Ëã·¨µÄ³ÉÁ¢»ùÓÚÒÔϼÙÉ裺¸Ã·Ö²¼Ê½ÏµÍ³ÖУ¬´æÔÚÒ»¸ö½Úµã×÷Ϊе÷Õß(Coordinator)£¬ÆäËû½Úµã×÷Ϊ²ÎÓëÕß(Cohorts)¡£ÇÒ½ÚµãÖ®¼ä¿ÉÒÔ½øÐÐÍøÂçͨÐÅ¡£
ËùÓнڵ㶼²ÉÓÃԤдʽÈÕÖ¾£¬ÇÒÈÕÖ¾±»Ð´Èëºó¼´±»±£³ÖÔÚ¿É¿¿µÄ´æ´¢É豸ÉÏ£¬¼´Ê¹½ÚµãË𻵲»»áµ¼ÖÂÈÕÖ¾Êý¾ÝµÄÏûʧ¡£
ËùÓнڵ㲻»áÓÀ¾ÃÐÔË𻵣¬¼´Ê¹Ë𻵺óÈÔÈ»¿ÉÒÔ»Ö¸´¡£
1. µÚÒ»½×¶Î£¨Í¶Æ±½×¶Î£©£º
е÷Õß½ÚµãÏòËùÓвÎÓëÕß½ÚµãѯÎÊÊÇ·ñ¿ÉÒÔÖ´ÐÐÌá½»²Ù×÷(vote)£¬²¢¿ªÊ¼µÈ´ý¸÷²ÎÓëÕß½ÚµãµÄÏìÓ¦¡£
²ÎÓëÕß½ÚµãÖ´ÐÐѯÎÊ·¢ÆðΪֹµÄËùÓÐÊÂÎñ²Ù×÷£¬²¢½«UndoÐÅÏ¢ºÍRedoÐÅϢдÈëÈÕÖ¾¡££¨×¢Ò⣺Èô³É¹¦ÕâÀïÆäʵÿ¸ö²ÎÓëÕßÒѾִÐÐÁËÊÂÎñ²Ù×÷£©
¸÷²ÎÓëÕß½ÚµãÏìӦе÷Õ߽ڵ㷢ÆðµÄѯÎÊ¡£Èç¹û²ÎÓëÕß½ÚµãµÄÊÂÎñ²Ù×÷ʵ¼ÊÖ´Ðгɹ¦£¬ÔòËü·µ»ØÒ»¸ö¡±Í¬Ò⡱ÏûÏ¢£»Èç¹û²ÎÓëÕß½ÚµãµÄÊÂÎñ²Ù×÷ʵ¼ÊÖ´ÐÐʧ°Ü£¬ÔòËü·µ»ØÒ»¸ö¡±ÖÐÖ¹¡±ÏûÏ¢¡£
2. µÚ¶þ½×¶Î£¨Ìá½»Ö´Ðн׶Σ©£º
µ±Ðµ÷Õß½Úµã´ÓËùÓвÎÓëÕß½Úµã»ñµÃµÄÏàÓ¦ÏûÏ¢¶¼Îª¡±Í¬Ò⡱ʱ£ºÐµ÷Õß½ÚµãÏòËùÓвÎÓëÕ߽ڵ㷢³ö¡±ÕýʽÌá½»(commit)¡±µÄÇëÇó¡£
²ÎÓëÕß½ÚµãÕýʽÍê³É²Ù×÷£¬²¢ÊÍ·ÅÔÚÕû¸öÊÂÎñÆÚ¼äÄÚÕ¼ÓõÄ×ÊÔ´¡£
²ÎÓëÕß½ÚµãÏòе÷Õ߽ڵ㷢ËÍ¡±Íê³É¡±ÏûÏ¢¡£
е÷Õß½ÚµãÊܵ½ËùÓвÎÓëÕ߽ڵ㷴À¡µÄ¡±Íê³É¡±ÏûÏ¢ºó£¬Íê³ÉÊÂÎñ¡£Èç¹ûÈÎÒ»²ÎÓëÕß½ÚµãÔÚµÚÒ»½×¶Î·µ»ØµÄÏìÓ¦ÏûϢΪ¡±ÖÐÖ¹¡±£¬»òÕß
е÷Õß½ÚµãÔÚµÚÒ»½×¶ÎµÄѯÎʳ¬Ê±Ö®Ç°ÎÞ·¨»ñÈ¡ËùÓвÎÓëÕß½ÚµãµÄÏìÓ¦ÏûϢʱ£ºÐµ÷Õß½ÚµãÏòËùÓвÎÓëÕ߽ڵ㷢³ö¡±»Ø¹ö²Ù×÷(rollback)¡±µÄÇëÇó¡£
²ÎÓëÕß½ÚµãÀûÓÃ֮ǰдÈëµÄUndoÐÅÏ¢Ö´Ðлعö£¬²¢ÊÍ·ÅÔÚÕû¸öÊÂÎñÆÚ¼äÄÚÕ¼ÓõÄ×ÊÔ´¡£
²ÎÓëÕß½ÚµãÏòе÷Õ߽ڵ㷢ËÍ¡±»Ø¹öÍê³É¡±ÏûÏ¢¡£
е÷Õß½ÚµãÊܵ½ËùÓвÎÓëÕ߽ڵ㷴À¡µÄ¡±»Ø¹öÍê³É¡±ÏûÏ¢ºó£¬È¡ÏûÊÂÎñ¡£²»¹Ü×îºó½á¹ûÈçºÎ£¬µÚ¶þ½×¶Î¶¼»á½áÊøµ±Ç°ÊÂÎñ¡£
¶þ½×¶ÎÌá½»¿´ÆðÀ´È·ÊµÄܹ»ÌṩÔ×ÓÐԵIJÙ×÷£¬µ«ÊDz»ÐÒµÄÊ£¬¶þ½×¶ÎÌá½»»¹ÊÇÓм¸¸öȱµãµÄ£ºÖ´Ðйý³ÌÖУ¬ËùÓвÎÓë½Úµã¶¼ÊÇÊÂÎñ×èÈûÐ͵ġ£µ±²ÎÓëÕßÕ¼Óй«¹²×ÊԴʱ£¬ÆäËûµÚÈý·½½Úµã·ÃÎʹ«¹²×ÊÔ´²»µÃ²»´¦ÓÚ×èÈû״̬¡£
²ÎÓëÕß·¢Éú¹ÊÕÏ¡£Ðµ÷ÕßÐèÒª¸øÃ¿¸ö²ÎÓëÕß¶îÍâÖ¸¶¨³¬Ê±»úÖÆ£¬³¬Ê±ºóÕû¸öÊÂÎñʧ°Ü¡££¨Ã»ÓжàÉÙÈÝ´í»úÖÆ£©
е÷Õß·¢Éú¹ÊÕÏ¡£²ÎÓëÕß»áÒ»Ö±×èÈûÏÂÈ¥¡£ÐèÒª¶îÍâµÄ±¸»ú½øÐÐÈÝ´í¡££¨Õâ¸ö¿ÉÒÔÒÀÀµºóÃæÒª½²µÄPaxosÐÒéʵÏÖHA£©
¶þ½×¶ÎÎÞ·¨½â¾öµÄÎÊÌ⣺е÷ÕßÔÙ·¢³öcommitÏûÏ¢Ö®ºóå´»ú£¬¶øÎ¨Ò»½ÓÊÕµ½ÕâÌõÏûÏ¢µÄ²ÎÓëÕßͬʱҲ崻úÁË¡£ÄÇô¼´Ê¹Ðµ÷Õßͨ¹ýÑ¡¾ÙÐÒé²úÉúÁËеÄе÷Õߣ¬ÕâÌõÊÂÎñµÄ״̬ҲÊDz»È·¶¨µÄ£¬Ã»ÈËÖªµÀÊÂÎñÊÇ·ñ±»ÒѾÌá½»¡£Îª´Ë£¬Dale
SkeenºÍMichael StonebrakerÔÚ¡°A Formal Model of Crash
Recovery in a Distributed System¡±ÖÐÌá³öÁËÈý½×¶ÎÌá½»ÐÒ飨3PC£©¡£
Èý½×¶ÎÌá½»ÐÒé 3PC
ÓëÁ½½×¶ÎÌá½»²»Í¬µÄÊÇ£¬Èý½×¶ÎÌá½»ÓÐÁ½¸ö¸Ä¶¯µã¡£ÒýÈ볬ʱ»úÖÆ¡£Í¬Ê±ÔÚе÷ÕߺͲÎÓëÕßÖж¼ÒýÈ볬ʱ»úÖÆ¡£
ÔÚµÚÒ»½×¶ÎºÍµÚ¶þ½×¶ÎÖвåÈëÒ»¸ö×¼±¸½×¶Î¡£±£Ö¤ÁËÔÚ×îºóÌá½»½×¶Î֮ǰ¸÷²ÎÓë½ÚµãµÄ״̬ÊÇÒ»Öµġ£Ò²¾ÍÊÇ˵£¬³ýÁËÒýÈ볬ʱ»úÖÆÖ®Í⣬3PC°Ñ2PCµÄ×¼±¸½×¶ÎÔÙ´ÎÒ»·ÖΪ¶þ£¬ÕâÑùÈý½×¶ÎÌá½»¾ÍÓÐCanCommit¡¢PreCommit¡¢DoCommitÈý¸ö½×¶Î¡£
1. CanCommit½×¶Î
3PCµÄCanCommit½×¶ÎÆäʵºÍ2PCµÄ×¼±¸½×¶ÎºÜÏñ¡£Ðµ÷ÕßÏò²ÎÓëÕß·¢ËÍcommitÇëÇ󣬲ÎÓëÕßÈç¹û¿ÉÒÔÌá½»¾Í·µ»ØYesÏìÓ¦£¬·ñÔò·µ»ØNoÏìÓ¦¡£ÊÂÎñѯÎÊ
е÷ÕßÏò²ÎÓëÕß·¢ËÍCanCommitÇëÇó¡£Ñ¯ÎÊÊÇ·ñ¿ÉÒÔÖ´ÐÐÊÂÎñÌá½»²Ù×÷¡£È»ºó¿ªÊ¼µÈ´ý²ÎÓëÕßµÄÏìÓ¦¡£
ÏìÓ¦·´À¡
²ÎÓëÕß½Óµ½CanCommitÇëÇóÖ®ºó£¬Õý³£Çé¿öÏ£¬Èç¹ûÆä×ÔÉíÈÏΪ¿ÉÒÔ˳ÀûÖ´ÐÐÊÂÎñ£¬Ôò·µ»ØYesÏìÓ¦£¬²¢½øÈëÔ¤±¸×´Ì¬¡£·ñÔò·´À¡No
2. PreCommit½×¶Î
е÷Õ߸ù¾Ý²ÎÓëÕߵķ´Ó¦Çé¿öÀ´¾ö¶¨ÊÇ·ñ¿ÉÒÔ¼ÇÐÔÊÂÎñµÄPreCommit²Ù×÷¡£¸ù¾ÝÏìÓ¦Çé¿ö£¬ÓÐÒÔÏÂÁ½ÖÖ¿ÉÄÜ¡£
¼ÙÈçе÷Õß´ÓËùÓеIJÎÓëÕß»ñµÃµÄ·´À¡¶¼ÊÇYesÏìÓ¦£¬ÄÇô¾Í»áÖ´ÐÐÊÂÎñµÄÔ¤Ö´ÐС£·¢ËÍÔ¤Ìá½»ÇëÇó
е÷ÕßÏò²ÎÓëÕß·¢ËÍPreCommitÇëÇ󣬲¢½øÈëPrepared½×¶Î¡£
ÊÂÎñÔ¤Ìá½»
²ÎÓëÕß½ÓÊÕµ½PreCommitÇëÇóºó£¬»áÖ´ÐÐÊÂÎñ²Ù×÷£¬²¢½«undoºÍredoÐÅÏ¢¼Ç¼µ½ÊÂÎñÈÕÖ¾ÖС£
ÏìÓ¦·´À¡
Èç¹û²ÎÓëÕ߳ɹ¦µÄÖ´ÐÐÁËÊÂÎñ²Ù×÷£¬Ôò·µ»ØACKÏìÓ¦£¬Í¬Ê±¿ªÊ¼µÈ´ý×îÖÕÖ¸Áî¡£¼ÙÈçÓÐÈκÎÒ»¸ö²ÎÓëÕßÏòе÷Õß·¢ËÍÁËNoÏìÓ¦£¬»òÕߵȴý³¬Ê±Ö®ºó£¬Ðµ÷Õß¶¼Ã»Óнӵ½²ÎÓëÕßµÄÏìÓ¦£¬ÄÇô¾ÍÖ´ÐÐÊÂÎñµÄÖжϡ£·¢ËÍÖжÏÇëÇó
е÷ÕßÏòËùÓвÎÓëÕß·¢ËÍabortÇëÇó¡£
ÖжÏÊÂÎñ
²ÎÓëÕßÊÕµ½À´×Ôе÷ÕßµÄabortÇëÇóÖ®ºó£¨»ò³¬Ê±Ö®ºó£¬ÈÔδÊÕµ½Ðµ÷ÕßµÄÇëÇ󣩣¬Ö´ÐÐÊÂÎñµÄÖжϡ£
3. doCommit½×¶Î
¸Ã½×¶Î½øÐÐÕæÕýµÄÊÂÎñÌá½»£¬Ò²¿ÉÒÔ·ÖΪÒÔÏÂÁ½ÖÖÇé¿ö¡£
¸Ã½×¶Î½øÐÐÕæÕýµÄÊÂÎñÌá½»£¬Ò²¿ÉÒÔ·ÖΪÒÔÏÂÁ½ÖÖÇé¿ö¡£
3.1 Ö´ÐÐÌá½»·¢ËÍÌá½»ÇëÇó
е÷½ÓÊÕµ½²ÎÓëÕß·¢Ë͵ÄACKÏìÓ¦£¬ÄÇôËû½«´ÓÔ¤Ìύ״̬½øÈëµ½Ìύ״̬¡£²¢ÏòËùÓвÎÓëÕß·¢ËÍdoCommitÇëÇó¡£
ÊÂÎñÌá½»
²ÎÓëÕß½ÓÊÕµ½doCommitÇëÇóÖ®ºó£¬Ö´ÐÐÕýʽµÄÊÂÎñÌá½»¡£²¢ÔÚÍê³ÉÊÂÎñÌá½»Ö®ºóÊÍ·ÅËùÓÐÊÂÎñ×ÊÔ´¡£
ÏìÓ¦·´À¡
ÊÂÎñÌá½»ÍêÖ®ºó£¬Ïòе÷Õß·¢ËÍAckÏìÓ¦¡£
Íê³ÉÊÂÎñ
е÷Õß½ÓÊÕµ½ËùÓвÎÓëÕßµÄackÏìÓ¦Ö®ºó£¬Íê³ÉÊÂÎñ¡£
3.2 ÖжÏÊÂÎñ
е÷ÕßûÓнÓÊÕµ½²ÎÓëÕß·¢Ë͵ÄACKÏìÓ¦£¨¿ÉÄÜÊǽÓÊÜÕß·¢Ë͵IJ»ÊÇACKÏìÓ¦£¬Ò²¿ÉÄÜÏìÓ¦³¬Ê±£©£¬ÄÇô¾Í»áÖ´ÐÐÖжÏÊÂÎñ¡£·¢ËÍÖжÏÇëÇó
е÷ÕßÏòËùÓвÎÓëÕß·¢ËÍabortÇëÇó
ÊÂÎñ»Ø¹ö
²ÎÓëÕß½ÓÊÕµ½abortÇëÇóÖ®ºó£¬ÀûÓÃÆäÔڽ׶ζþ¼Ç¼µÄundoÐÅÏ¢À´Ö´ÐÐÊÂÎñµÄ»Ø¹ö²Ù×÷£¬²¢ÔÚÍê³É»Ø¹öÖ®ºóÊÍ·ÅËùÓеÄÊÂÎñ×ÊÔ´¡£
·´À¡½á¹û
²ÎÓëÕßÍê³ÉÊÂÎñ»Ø¹öÖ®ºó£¬Ïòе÷Õß·¢ËÍACKÏûÏ¢
ÖжÏÊÂÎñ
е÷Õß½ÓÊÕµ½²ÎÓëÕß·´À¡µÄACKÏûÏ¢Ö®ºó£¬Ö´ÐÐÊÂÎñµÄÖжϡ£
·Ö²¼Ê½ÊÂÎñµÄ½â¾ö·½°¸
·Ö²¼Ê½ÊÂÎñµÄ½â¾ö·½°¸ÓÐÈçϼ¸ÖÖ£ºÈ«¾ÖÏûÏ¢
»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½ÊÂÎñ
TCC
×î´óŬÁ¦Í¨Öª
·½°¸1£ºÈ«¾ÖÊÂÎñ£¨DTPÄ£ÐÍ£©
È«¾ÖÊÂÎñ»ùÓÚDTPÄ£ÐÍʵÏÖ¡£DTPÊÇÓÉX/Open×éÖ¯Ìá³öµÄÒ»ÖÖ·Ö²¼Ê½ÊÂÎñÄ£ÐÍ¡ª¡ªX/Open Distributed
Transaction Processing Reference Model¡£Ëü¹æ¶¨ÁËҪʵÏÖ·Ö²¼Ê½ÊÂÎñ£¬ÐèÒªÈýÖÖ½ÇÉ«£º
AP£ºApplication Ó¦ÓÃϵͳ
Ëü¾ÍÊÇÎÒÃÇ¿ª·¢µÄÒµÎñϵͳ£¬ÔÚÎÒÃÇ¿ª·¢µÄ¹ý³ÌÖУ¬¿ÉÒÔʹÓÃ×ÊÔ´¹ÜÀíÆ÷ÌṩµÄÊÂÎñ½Ó¿ÚÀ´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ¡£
TM£ºTransaction Manager ÊÂÎñ¹ÜÀíÆ÷
·Ö²¼Ê½ÊÂÎñµÄʵÏÖÓÉÊÂÎñ¹ÜÀíÆ÷À´Íê³É£¬Ëü»áÌṩ·Ö²¼Ê½ÊÂÎñµÄ²Ù×÷½Ó¿Ú¹©ÎÒÃǵÄÒµÎñϵͳµ÷Óá£ÕâЩ½Ó¿Ú³ÆÎªTX½Ó¿Ú¡£
ÊÂÎñ¹ÜÀíÆ÷»¹¹ÜÀí×ÅËùÓеÄ×ÊÔ´¹ÜÀíÆ÷£¬Í¨¹ýËüÃÇÌṩµÄXA½Ó¿ÚÀ´Í¬Ò»µ÷¶ÈÕâЩ×ÊÔ´¹ÜÀíÆ÷£¬ÒÔʵÏÖ·Ö²¼Ê½ÊÂÎñ¡£
DTPÖ»ÊÇÒ»Ì×ʵÏÖ·Ö²¼Ê½ÊÂÎñµÄ¹æ·¶£¬²¢Ã»Óж¨Òå¾ßÌåÈçºÎʵÏÖ·Ö²¼Ê½ÊÂÎñ£¬TM¿ÉÒÔ²ÉÓÃ2PC¡¢3PC¡¢PaxosµÈÐÒéʵÏÖ·Ö²¼Ê½ÊÂÎñ¡£
RM£ºResource Manager ×ÊÔ´¹ÜÀíÆ÷
Äܹ»ÌṩÊý¾Ý·þÎñµÄ¶ÔÏ󶼿ÉÒÔÊÇ×ÊÔ´¹ÜÀíÆ÷£¬±ÈÈ磺Êý¾Ý¿â¡¢ÏûÏ¢Öмä¼þ¡¢»º´æµÈ¡£´ó²¿·Ö³¡¾°Ï£¬Êý¾Ý¿â¼´Îª·Ö²¼Ê½ÊÂÎñÖеÄ×ÊÔ´¹ÜÀíÆ÷¡£
×ÊÔ´¹ÜÀíÆ÷Äܹ»Ìṩµ¥Êý¾Ý¿âµÄÊÂÎñÄÜÁ¦£¬ËüÃÇͨ¹ýXA½Ó¿Ú£¬½«±¾Êý¾Ý¿âµÄÌá½»¡¢»Ø¹öµÈÄÜÁ¦Ìṩ¸øÊÂÎñ¹ÜÀíÆ÷µ÷Óã¬ÒÔ°ïÖúÊÂÎñ¹ÜÀíÆ÷ʵÏÖ·Ö²¼Ê½µÄÊÂÎñ¹ÜÀí¡£
XAÊÇDTPÄ£ÐͶ¨ÒåµÄ½Ó¿Ú£¬ÓÃÓÚÏòÊÂÎñ¹ÜÀíÆ÷Ìṩ¸Ã×ÊÔ´¹ÜÀíÆ÷(¸ÃÊý¾Ý¿â)µÄÌá½»¡¢»Ø¹öµÈÄÜÁ¦¡£
DTPÖ»ÊÇÒ»Ì×ʵÏÖ·Ö²¼Ê½ÊÂÎñµÄ¹æ·¶£¬RM¾ßÌåµÄʵÏÖÊÇÓÉÊý¾Ý¿â³§ÉÌÀ´Íê³ÉµÄ¡£
ÓÐûÓлùÓÚDTPÄ£Ð͵ķֲ¼Ê½ÊÂÎñÖмä¼þ£¿
DTPÄ£ÐÍÓÐɶÓÅȱµã£¿
·½°¸2£º»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½ÊÂÎñ
ÕâÖÖʵÏÖ·Ö²¼Ê½ÊÂÎñµÄ·½Ê½ÐèҪͨ¹ýÏûÏ¢Öмä¼þÀ´ÊµÏÖ¡£¼ÙÉèÓÐAºÍBÁ½¸öϵͳ£¬·Ö±ð¿ÉÒÔ´¦ÀíÈÎÎñAºÍÈÎÎñB¡£´ËʱϵͳAÖдæÔÚÒ»¸öÒµÎñÁ÷³Ì£¬ÐèÒª½«ÈÎÎñAºÍÈÎÎñBÔÚͬһ¸öÊÂÎñÖд¦Àí¡£ÏÂÃæÀ´½éÉÜ»ùÓÚÏûÏ¢Öмä¼þÀ´ÊµÏÖÕâÖÖ·Ö²¼Ê½ÊÂÎñ¡£

ÔÚϵͳA´¦ÀíÈÎÎñAǰ£¬Ê×ÏÈÏòÏûÏ¢Öмä¼þ·¢ËÍÒ»ÌõÏûÏ¢
ÏûÏ¢Öмä¼þÊÕµ½ºó½«¸ÃÌõÏûÏ¢³Ö¾Ã»¯£¬µ«²¢²»Í¶µÝ¡£´ËʱÏÂÓÎϵͳBÈÔÈ»²»ÖªµÀ¸ÃÌõÏûÏ¢µÄ´æÔÚ¡£
ÏûÏ¢Öмä¼þ³Ö¾Ã»¯³É¹¦ºó£¬±ãÏòϵͳA·µ»ØÒ»¸öÈ·ÈÏÓ¦´ð£»
ϵͳAÊÕµ½È·ÈÏÓ¦´ðºó£¬Ôò¿ÉÒÔ¿ªÊ¼´¦ÀíÈÎÎñA£»
ÈÎÎñA´¦ÀíÍê³Éºó£¬ÏòÏûÏ¢Öмä¼þ·¢ËÍCommitÇëÇ󡣸ÃÇëÇó·¢ËÍÍê³Éºó£¬¶ÔϵͳA¶øÑÔ£¬¸ÃÊÂÎñµÄ´¦Àí¹ý³Ì¾Í½áÊøÁË£¬´ËʱËü¿ÉÒÔ´¦Àí±ðµÄÈÎÎñÁË¡£
µ«commitÏûÏ¢¿ÉÄÜ»áÔÚ´«Êä;ÖжªÊ§£¬´Ó¶øÏûÏ¢Öмä¼þ²¢²»»áÏòϵͳBͶµÝÕâÌõÏûÏ¢£¬´Ó¶øÏµÍ³¾Í»á³öÏÖ²»Ò»ÖÂÐÔ¡£Õâ¸öÎÊÌâÓÉÏûÏ¢Öмä¼þµÄÊÂÎñ»Ø²é»úÖÆÍê³É£¬ÏÂÎÄ»á½éÉÜ¡£
ÏûÏ¢Öмä¼þÊÕµ½CommitÖ¸Áîºó£¬±ãÏòϵͳBͶµÝ¸ÃÏûÏ¢£¬´Ó¶ø´¥·¢ÈÎÎñBµÄÖ´ÐУ»
µ±ÈÎÎñBÖ´ÐÐÍê³Éºó£¬ÏµÍ³BÏòÏûÏ¢Öмä¼þ·µ»ØÒ»¸öÈ·ÈÏÓ¦´ð£¬¸æËßÏûÏ¢Öмä¼þ¸ÃÏûÏ¢ÒѾ³É¹¦Ïû·Ñ£¬´Ëʱ£¬Õâ¸ö·Ö²¼Ê½ÊÂÎñÍê³É¡£
ÉÏÊö¹ý³Ì¿ÉÒԵóöÈçϼ¸¸ö½áÂÛ£º
1. ÏûÏ¢Öмä¼þ°çÑÝÕß·Ö²¼Ê½ÊÂÎñе÷ÕߵĽÇÉ«¡£
2. ϵͳAÍê³ÉÈÎÎñAºó£¬µ½ÈÎÎñBÖ´ÐÐÍê³ÉÖ®¼ä£¬»á´æÔÚÒ»¶¨µÄʱ¼ä²î¡£ÔÚÕâ¸öʱ¼ä²îÄÚ£¬Õû¸öϵͳ´¦ÓÚÊý¾Ý²»Ò»ÖµÄ״̬£¬µ«Õâ¶ÌÔݵIJ»Ò»ÖÂÐÔÊÇ¿ÉÒÔ½ÓÊܵģ¬ÒòΪ¾¹ý¶ÌÔݵÄʱ¼äºó£¬ÏµÍ³ÓÖ¿ÉÒÔ±£³ÖÊý¾ÝÒ»ÖÂÐÔ£¬Âú×ãBASEÀíÂÛ¡£
ÉÏÊö¹ý³ÌÖУ¬Èç¹ûÈÎÎñA´¦Àíʧ°Ü£¬ÄÇôÐèÒª½øÈë»Ø¹öÁ÷³Ì£¬ÈçÏÂͼËùʾ£º

ÈôϵͳAÔÚ´¦ÀíÈÎÎñAʱʧ°Ü£¬ÄÇô¾Í»áÏòÏûÏ¢Öмä¼þ·¢ËÍRollbackÇëÇ󡣺ͷ¢ËÍCommitÇëÇóÒ»Ñù£¬ÏµÍ³A·¢ÍêÖ®ºó±ã¿ÉÒÔÈÏΪ»Ø¹öÒѾÍê³É£¬Ëü±ã¿ÉÒÔÈ¥×öÆäËûµÄÊÂÇé¡£
ÏûÏ¢Öмä¼þÊÕµ½»Ø¹öÇëÇóºó£¬Ö±½Ó½«¸ÃÏûÏ¢¶ªÆú£¬¶ø²»Í¶µÝ¸øÏµÍ³B£¬´Ó¶ø²»»á´¥·¢ÏµÍ³BµÄÈÎÎñB¡£
´ËʱϵͳÓÖ´¦ÓÚÒ»ÖÂÐÔ״̬£¬ÒòΪÈÎÎñAºÍÈÎÎñB¶¼Ã»ÓÐÖ´ÐС£
ÉÏÃæËù½éÉܵÄCommitºÍRollback¶¼ÊôÓÚÀíÏëÇé¿ö£¬µ«ÔÚʵ¼ÊϵͳÖУ¬CommitºÍRollbackÖ¸Áî¶¼ÓпÉÄÜÔÚ´«Êä;ÖжªÊ§¡£ÄÇôµ±³öÏÖÕâÖÖÇé¿öµÄʱºò£¬ÏûÏ¢Öмä¼þÊÇÈçºÎ±£Ö¤Êý¾ÝÒ»ÖÂÐÔÄØ£¿¡ª¡ª´ð°¸¾ÍÊdz¬Ê±Ñ¯ÎÊ»úÖÆ¡£

ϵͳA³ýÁËʵÏÖÕý³£µÄÒµÎñÁ÷³ÌÍ⣬»¹ÐèÌṩһ¸öÊÂÎñѯÎʵĽӿڣ¬¹©ÏûÏ¢Öмä¼þµ÷Óᣵ±ÏûÏ¢Öмä¼þÊÕµ½Ò»ÌõÊÂÎñÐÍÏûÏ¢ºó±ã¿ªÊ¼¼ÆÊ±£¬Èç¹ûµ½Á˳¬Ê±Ê±¼äҲûÊÕµ½ÏµÍ³A·¢À´µÄCommit»òRollbackÖ¸ÁîµÄ»°£¬¾Í»áÖ÷¶¯µ÷ÓÃϵͳAÌṩµÄÊÂÎñѯÎʽӿÚѯÎʸÃϵͳĿǰµÄ״̬¡£¸Ã½Ó¿Ú»á·µ»ØÈýÖÖ½á¹û£º
Ìá½»
Èô»ñµÃµÄ״̬ÊÇ¡°Ìá½»¡±£¬Ôò½«¸ÃÏûϢͶµÝ¸øÏµÍ³B¡£
»Ø¹ö
Èô»ñµÃµÄ״̬ÊÇ¡°»Ø¹ö¡±£¬ÔòÖ±½Ó½«ÌõÏûÏ¢¶ªÆú¡£
´¦ÀíÖÐ
Èô»ñµÃµÄ״̬ÊÇ¡°´¦ÀíÖС±£¬Ôò¼ÌÐøµÈ´ý¡£
ÏûÏ¢Öмä¼þµÄ³¬Ê±Ñ¯ÎÊ»úÖÆÄܹ»·ÀÖ¹ÉÏÓÎϵͳÒòÔÚ´«Êä¹ý³ÌÖжªÊ§Commit/RollbackÖ¸Áî¶øµ¼ÖµÄϵͳ²»Ò»ÖÂÇé¿ö£¬¶øÇÒÄܽµµÍÉÏÓÎϵͳµÄ×èÈûʱ¼ä£¬ÉÏÓÎϵͳֻҪ·¢³öCommit/RollbackÖ¸Áîºó±ã¿ÉÒÔ´¦ÀíÆäËûÈÎÎñ£¬ÎÞÐèµÈ´ýÈ·ÈÏÓ¦´ð¡£¶øCommit/RollbackÖ¸ÁʧµÄÇé¿öͨ¹ý³¬Ê±Ñ¯ÎÊ»úÖÆÀ´ÃÖ²¹£¬ÕâÑù´ó´ó½µµÍÉÏÓÎϵͳµÄ×èÈûʱ¼ä£¬ÌáÉýϵͳµÄ²¢·¢¶È¡£
ÏÂÃæÀ´ËµÒ»ËµÏûϢͶµÝ¹ý³ÌµÄ¿É¿¿ÐÔ±£Ö¤¡£
µ±ÉÏÓÎϵͳִÐÐÍêÈÎÎñ²¢ÏòÏûÏ¢Öмä¼þÌá½»ÁËCommitÖ¸Áîºó£¬±ã¿ÉÒÔ´¦ÀíÆäËûÈÎÎñÁË£¬´ËʱËü¿ÉÒÔÈÏΪÊÂÎñÒѾÍê³É£¬½ÓÏÂÀ´ÏûÏ¢Öмä¼þÒ»¶¨»á±£Ö¤ÏûÏ¢±»ÏÂÓÎϵͳ³É¹¦Ïû·Ñµô£¡ÄÇôÕâÊÇÔõô×öµ½µÄÄØ£¿ÕâÓÉÏûÏ¢Öмä¼þµÄͶµÝÁ÷³ÌÀ´±£Ö¤¡£
ÏûÏ¢Öмä¼þÏòÏÂÓÎϵͳͶµÝÍêÏûÏ¢ºó±ã½øÈë×èÈûµÈ´ý״̬£¬ÏÂÓÎϵͳ±ãÁ¢¼´½øÐÐÈÎÎñµÄ´¦Àí£¬ÈÎÎñ´¦ÀíÍê³Éºó±ãÏòÏûÏ¢Öмä¼þ·µ»ØÓ¦´ð¡£ÏûÏ¢Öмä¼þÊÕµ½È·ÈÏÓ¦´ðºó±ãÈÏΪ¸ÃÊÂÎñ´¦ÀíÍê±Ï£¡
Èç¹ûÏûÏ¢ÔÚͶµÝ¹ý³ÌÖжªÊ§£¬»òÏûÏ¢µÄÈ·ÈÏÓ¦´ðÔÚ·µ»ØÍ¾ÖжªÊ§£¬ÄÇôÏûÏ¢Öмä¼þÔڵȴýÈ·ÈÏÓ¦´ð³¬Ê±Ö®ºó¾Í»áÖØÐÂͶµÝ£¬Ö±µ½ÏÂÓÎÏû·ÑÕß·µ»ØÏû·Ñ³É¹¦ÏìӦΪֹ¡£µ±È»£¬Ò»°ãÏûÏ¢Öмä¼þ¿ÉÒÔÉèÖÃÏûÏ¢ÖØÊԵĴÎÊýºÍʱ¼ä¼ä¸ô£¬±ÈÈ磺µ±µÚÒ»´ÎͶµÝʧ°Üºó£¬Ã¿¸ôÎå·ÖÖÓÖØÊÔÒ»´Î£¬Ò»¹²ÖØÊÔ3´Î¡£Èç¹ûÖØÊÔ3´ÎÖ®ºóÈÔȻͶµÝʧ°Ü£¬ÄÇôÕâÌõÏûÏ¢¾ÍÐèÒªÈ˹¤¸ÉÔ¤¡£


ÓеÄͬѧ¿ÉÄÜÒªÎÊ£ºÏûϢͶµÝʧ°ÜºóΪʲô²»»Ø¹öÏûÏ¢£¬¶øÊDz»¶Ï³¢ÊÔÖØÐÂͶµÝ£¿
Õâ¾ÍÉæ¼°µ½ÕûÌ×·Ö²¼Ê½ÊÂÎñϵͳµÄʵÏֳɱ¾ÎÊÌâ¡£
ÎÒÃÇÖªµÀ£¬µ±ÏµÍ³A½«ÏòÏûÏ¢Öмä¼þ·¢ËÍCommitÖ¸Áîºó£¬Ëü±ãÈ¥×ö±ðµÄÊÂÇéÁË¡£Èç¹û´ËʱÏûϢͶµÝʧ°Ü£¬ÐèÒª»Ø¹öµÄ»°£¬¾ÍÐèÒªÈÃϵͳAÊÂÏÈÌṩ»Ø¹ö½Ó¿Ú£¬ÕâÎÞÒÉÔö¼ÓÁ˶îÍâµÄ¿ª·¢³É±¾£¬ÒµÎñϵͳµÄ¸´ÔÓ¶ÈÒ²½«Ìá¸ß¡£¶ÔÓÚÒ»¸öÒµÎñϵͳµÄÉè¼ÆÄ¿±êÊÇ£¬ÔÚ±£Ö¤ÐÔÄܵÄǰÌáÏ£¬×î´óÏ޶ȵؽµµÍϵͳ¸´ÔÓ¶È£¬´Ó¶øÄܹ»½µµÍϵͳµÄÔËά³É±¾¡£
²»Öª´ó¼ÒÊÇ·ñ·¢ÏÖ£¬ÉÏÓÎϵͳAÏòÏûÏ¢Öмä¼þÌá½»Commit/RollbackÏûÏ¢²ÉÓõÄÊÇÒì²½·½Ê½£¬Ò²¾ÍÊǵ±ÉÏÓÎϵͳÌá½»ÍêÏûÏ¢ºó±ã¿ÉÒÔÈ¥×ö±ðµÄÊÂÇ飬½ÓÏÂÀ´Ìá½»¡¢»Ø¹ö¾ÍÍêÈ«½»¸øÏûÏ¢Öмä¼þÀ´Íê³É£¬²¢ÇÒÍêÈ«ÐÅÈÎÏûÏ¢Öмä¼þ£¬ÈÏΪËüÒ»¶¨ÄÜÕýÈ·µØÍê³ÉÊÂÎñµÄÌá½»»ò»Ø¹ö¡£È»¶ø£¬ÏûÏ¢Öмä¼þÏòÏÂÓÎϵͳͶµÝÏûÏ¢µÄ¹ý³ÌÊÇͬ²½µÄ¡£Ò²¾ÍÊÇÏûÏ¢Öмä¼þ½«ÏûϢͶµÝ¸øÏÂÓÎϵͳºó£¬Ëü»á×èÈûµÈ´ý£¬µÈÏÂÓÎϵͳ³É¹¦´¦ÀíÍêÈÎÎñ·µ»ØÈ·ÈÏÓ¦´ðºó²ÅÈ¡Ïû×èÈûµÈ´ý¡£ÎªÊ²Ã´ÕâÁ½ÕßÔÚÉè¼ÆÉÏÊDz»Ò»ÖµÄÄØ£¿
Ê×ÏÈ£¬ÉÏÓÎϵͳºÍÏûÏ¢Öмä¼þÖ®¼ä²ÉÓÃÒ첽ͨÐÅÊÇΪÁËÌá¸ßϵͳ²¢·¢¶È¡£ÒµÎñϵͳֱ½ÓºÍÓû§´ò½»µÀ£¬Óû§ÌåÑéÓÈÎªÖØÒª£¬Òò´ËÕâÖÖÒ첽ͨÐÅ·½Ê½Äܹ»¼«´ó³Ì¶ÈµØ½µµÍÓû§µÈ´ýʱ¼ä¡£´ËÍ⣬Ò첽ͨÐÅÏà¶ÔÓÚͬ²½Í¨ÐŶøÑÔ£¬Ã»ÓÐÁ˳¤Ê±¼äµÄ×èÈûµÈ´ý£¬Òò´ËϵͳµÄ²¢·¢ÐÔÒ²´ó´óÔö¼Ó¡£µ«Ò첽ͨÐÅ¿ÉÄÜ»áÒýÆðCommit/RollbackÖ¸ÁʧµÄÎÊÌ⣬Õâ¾ÍÓÉÏûÏ¢Öмä¼þµÄ³¬Ê±Ñ¯ÎÊ»úÖÆÀ´ÃÖ²¹¡£
ÄÇô£¬ÏûÏ¢Öмä¼þºÍÏÂÓÎϵͳ֮¼äΪʲôҪ²ÉÓÃͬ²½Í¨ÐÅÄØ£¿
Òì²½ÄÜÌáÉýϵͳÐÔÄÜ£¬µ«ËæÖ®»áÔö¼Óϵͳ¸´ÔÓ¶È£»¶øÍ¬²½ËäÈ»½µµÍϵͳ²¢·¢¶È£¬µ«ÊµÏֳɱ¾½ÏµÍ¡£Òò´Ë£¬ÔÚ¶Ô²¢·¢¶ÈÒªÇó²»ÊǺܸߵÄÇé¿öÏ£¬»òÕß·þÎñÆ÷×ÊÔ´½ÏΪ³äÔ£µÄÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔÑ¡Ôñͬ²½À´½µµÍϵͳµÄ¸´ÔÓ¶È¡£
ÎÒÃÇÖªµÀ£¬ÏûÏ¢Öмä¼þÊÇÒ»¸ö¶ÀÁ¢ÓÚÒµÎñϵͳµÄµÚÈý·½Öмä¼þ£¬Ëü²»ºÍÈκÎÒµÎñϵͳ²úÉúÖ±½ÓµÄñîºÏ£¬ËüÒ²²»ºÍÓû§²úÉúÖ±½ÓµÄ¹ØÁª£¬ËüÒ»°ã²¿ÊðÔÚ¶ÀÁ¢µÄ·þÎñÆ÷¼¯ÈºÉÏ£¬¾ßÓÐÁ¼ºÃµÄ¿ÉÀ©Õ¹ÐÔ£¬ËùÒÔ²»±ØÌ«¹ýÓÚµ£ÐÄËüµÄÐÔÄÜ£¬Èç¹û´¦ÀíËÙ¶ÈÎÞ·¨Âú×ãÎÒÃǵÄÒªÇ󣬿ÉÒÔÔö¼Ó»úÆ÷À´½â¾ö¡£¶øÇÒ£¬¼´Ê¹ÏûÏ¢Öмä¼þ´¦ÀíËÙ¶ÈÓÐÒ»¶¨µÄÑÓ³ÙÄÇÒ²ÊÇ¿ÉÒÔ½ÓÊܵģ¬ÒòÎªÇ°ÃæËù½éÉܵÄBASEÀíÂ۾͸æËßÎÒÃÇÁË£¬ÎÒÃÇ×·ÇóµÄÊÇ×îÖÕÒ»ÖÂÐÔ£¬¶ø·ÇʵʱһÖÂÐÔ£¬Òò´ËÏûÏ¢Öмä¼þ²úÉúµÄʱÑÓµ¼ÖÂÊÂÎñ¶ÌÔݵIJ»Ò»ÖÂÊÇ¿ÉÒÔ½ÓÊܵġ£
·½°¸3£º×î´óŬÁ¦Í¨Öª£¨¶¨ÆÚУ¶Ô£©
×î´óŬÁ¦Í¨ÖªÒ²±»³ÆÎª¶¨ÆÚУ¶Ô£¬ÆäʵÔÚ·½°¸¶þÖÐÒѾ°üº¬£¬ÕâÀïÔÙµ¥¶À½éÉÜ£¬Ö÷ÒªÊÇΪÁË֪ʶÌåϵµÄÍêÕûÐÔ¡£ÕâÖÖ·½°¸Ò²ÐèÒªÏûÏ¢Öмä¼þµÄ²ÎÓ룬Æä¹ý³ÌÈçÏ£º

ÉÏÓÎϵͳÔÚÍê³ÉÈÎÎñºó£¬ÏòÏûÏ¢Öмä¼þͬ²½µØ·¢ËÍÒ»ÌõÏûÏ¢£¬È·±£ÏûÏ¢Öмä¼þ³É¹¦³Ö¾Ã»¯ÕâÌõÏûÏ¢£¬È»ºóÉÏÓÎϵͳ¿ÉÒÔÈ¥×ö±ðµÄÊÂÇéÁË£»
ÏûÏ¢Öмä¼þÊÕµ½ÏûÏ¢ºó¸ºÔ𽫸ÃÏûϢͬ²½Í¶µÝ¸øÏàÓ¦µÄÏÂÓÎϵͳ£¬²¢´¥·¢ÏÂÓÎϵͳµÄÈÎÎñÖ´ÐУ»
µ±ÏÂÓÎϵͳ´¦Àí³É¹¦ºó£¬ÏòÏûÏ¢Öмä¼þ·´À¡È·ÈÏÓ¦´ð£¬ÏûÏ¢Öмä¼þ±ã¿ÉÒÔ½«¸ÃÌõÏûϢɾ³ý£¬´Ó¶ø¸ÃÊÂÎñÍê³É¡£
ÉÏÃæÊÇÒ»¸öÀíÏ뻯µÄ¹ý³Ì£¬µ«ÔÚʵ¼Ê³¡¾°ÖУ¬ÍùÍù»á³öÏÖÈçϼ¸ÖÖÒâÍâÇé¿ö£º
ÏûÏ¢Öмä¼þÏòÏÂÓÎϵͳͶµÝÏûϢʧ°Ü
ÉÏÓÎϵͳÏòÏûÏ¢Öмä¼þ·¢ËÍÏûϢʧ°Ü
¶ÔÓÚµÚÒ»ÖÖÇé¿ö£¬ÏûÏ¢Öмä¼þ¾ßÓÐÖØÊÔ»úÖÆ£¬ÎÒÃÇ¿ÉÒÔÔÚÏûÏ¢Öмä¼þÖÐÉèÖÃÏûÏ¢µÄÖØÊÔ´ÎÊýºÍÖØÊÔʱ¼ä¼ä¸ô£¬¶ÔÓÚÍøÂç²»Îȶ¨µ¼ÖµÄÏûϢͶµÝʧ°ÜµÄÇé¿ö£¬ÍùÍùÖØÊÔ¼¸´ÎºóÏûÏ¢±ã¿ÉÒԳɹ¦Í¶µÝ£¬Èç¹û³¬¹ýÁËÖØÊÔµÄÉÏÏÞÈÔȻͶµÝʧ°Ü£¬ÄÇôÏûÏ¢Öмä¼þ²»ÔÙͶµÝ¸ÃÏûÏ¢£¬¶øÊǼǼÔÚʧ°ÜÏûÏ¢±íÖУ¬ÏûÏ¢Öмä¼þÐèÒªÌṩʧ°ÜÏûÏ¢µÄ²éѯ½Ó¿Ú£¬ÏÂÓÎϵͳ»á¶¨ÆÚ²éѯʧ°ÜÏûÏ¢£¬²¢½«ÆäÏû·Ñ£¬Õâ¾ÍÊÇËùνµÄ¡°¶¨ÆÚУ¶Ô¡±¡£
Èç¹ûÖØ¸´Í¶µÝºÍ¶¨ÆÚУ¶Ô¶¼²»Äܽâ¾öÎÊÌ⣬ÍùÍùÊÇÒòΪÏÂÓÎϵͳ³öÏÖÁËÑÏÖØµÄ´íÎ󣬴Ëʱ¾ÍÐèÒªÈ˹¤¸ÉÔ¤¡£
¶ÔÓÚµÚ¶þÖÖÇé¿ö£¬ÐèÒªÔÚÉÏÓÎϵͳÖн¨Á¢ÏûÏ¢ÖØ·¢»úÖÆ¡£¿ÉÒÔÔÚÉÏÓÎϵͳ½¨Á¢Ò»Õű¾µØÏûÏ¢±í£¬²¢½« ÈÎÎñ´¦Àí¹ý³Ì
ºÍ Ïò±¾µØÏûÏ¢±íÖвåÈëÏûÏ¢ ÕâÁ½¸ö²½Öè·ÅÔÚÒ»¸ö±¾µØÊÂÎñÖÐÍê³É¡£Èç¹ûÏò±¾µØÏûÏ¢±í²åÈëÏûϢʧ°Ü£¬ÄÇô¾Í»á´¥·¢»Ø¹ö£¬Ö®Ç°µÄÈÎÎñ´¦Àí½á¹û¾Í»á±»È¡Ïû¡£Èç¹ûÕâÁ¿²½¶¼Ö´Ðгɹ¦£¬ÄÇô¸Ã±¾µØÊÂÎñ¾ÍÍê³ÉÁË¡£½ÓÏÂÀ´»áÓÐÒ»¸öרÃŵÄÏûÏ¢·¢ËÍÕß²»¶ÏµØ·¢Ëͱ¾µØÏûÏ¢±íÖеÄÏûÏ¢£¬Èç¹û·¢ËÍʧ°ÜËü»á·µ»ØÖØÊÔ¡£µ±È»£¬Ò²Òª¸øÏûÏ¢·¢ËÍÕßÉèÖÃÖØÊÔµÄÉÏÏÞ£¬Ò»°ã¶øÑÔ£¬´ïµ½ÖØÊÔÉÏÏÞÈÔÈ»·¢ËÍʧ°Ü£¬ÄǾÍÒâζ×ÅÏûÏ¢Öмä¼þ³öÏÖÑÏÖØµÄÎÊÌ⣬´ËʱҲֻÓÐÈ˹¤¸ÉÔ¤²ÅÄܽâ¾öÎÊÌâ¡£
¶ÔÓÚ²»Ö§³ÖÊÂÎñÐÍÏûÏ¢µÄÏûÏ¢Öмä¼þ£¬Èç¹ûҪʵÏÖ·Ö²¼Ê½ÊÂÎñµÄ»°£¬¾Í¿ÉÒÔ²ÉÓÃÕâÖÖ·½Ê½¡£ËüÄܹ»Í¨¹ýÖØÊÔ»úÖÆ+¶¨ÆÚУ¶ÔʵÏÖ·Ö²¼Ê½ÊÂÎñ£¬µ«Ïà±ÈÓÚµÚ¶þÖÖ·½°¸£¬Ëü´ïµ½Êý¾ÝÒ»ÖÂÐÔµÄÖÜÆÚ½Ï³¤£¬¶øÇÒ»¹ÐèÒªÔÚÉÏÓÎϵͳÖÐʵÏÖÏûÏ¢ÖØÊÔ·¢²¼»úÖÆ£¬ÒÔÈ·±£ÏûÏ¢³É¹¦·¢²¼¸øÏûÏ¢Öмä¼þ£¬ÕâÎÞÒÉÔö¼ÓÁËÒµÎñϵͳµÄ¿ª·¢³É±¾£¬Ê¹µÃÒµÎñϵͳ²»¹»´¿´â£¬²¢ÇÒÕâЩ¶îÍâµÄÒµÎñÂß¼ÎÞÒÉ»áÕ¼ÓÃÒµÎñϵͳµÄÓ²¼þ×ÊÔ´£¬´Ó¶øÓ°ÏìÐÔÄÜ¡£
Òò´Ë£¬¾¡Á¿Ñ¡ÔñÖ§³ÖÊÂÎñÐÍÏûÏ¢µÄÏûÏ¢Öмä¼þÀ´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ£¬ÈçRocketMQ¡£
·½°¸4£ºTCC£¨Á½½×¶ÎÐÍ¡¢²¹³¥ÐÍ£©
TCC¼´ÎªTry Confirm Cancel£¬ËüÊôÓÚ²¹³¥ÐÍ·Ö²¼Ê½ÊÂÎñ¡£¹ËÃû˼Ò壬TCCʵÏÖ·Ö²¼Ê½ÊÂÎñÒ»¹²ÓÐÈý¸ö²½Ö裺Try£º³¢ÊÔ´ýÖ´ÐеÄÒµÎñ
Õâ¸ö¹ý³Ì²¢Î´Ö´ÐÐÒµÎñ£¬Ö»ÊÇÍê³ÉËùÓÐÒµÎñµÄÒ»ÖÂÐÔ¼ì²é£¬²¢Ô¤ÁôºÃÖ´ÐÐËùÐèµÄÈ«²¿×ÊÔ´
Confirm£ºÖ´ÐÐÒµÎñ
Õâ¸ö¹ý³ÌÕæÕý¿ªÊ¼Ö´ÐÐÒµÎñ£¬ÓÉÓÚTry½×¶ÎÒѾÍê³ÉÁËÒ»ÖÂÐÔ¼ì²é£¬Òò´Ë±¾¹ý³ÌÖ±½ÓÖ´ÐУ¬¶ø²»×öÈκμì²é¡£²¢ÇÒÔÚÖ´ÐеĹý³ÌÖУ¬»áʹÓõ½Try½×¶ÎÔ¤ÁôµÄÒµÎñ×ÊÔ´¡£
Cancel£ºÈ¡ÏûÖ´ÐеÄÒµÎñ
ÈôÒµÎñÖ´ÐÐʧ°Ü£¬Ôò½øÈëCancel½×¶Î£¬Ëü»áÊÍ·ÅËùÓÐÕ¼ÓõÄÒµÎñ×ÊÔ´£¬²¢»Ø¹öConfirm½×¶ÎÖ´ÐеIJÙ×÷¡£
ÏÂÃæÒÔÒ»¸öתÕ˵ÄÀý×ÓÀ´½âÊÍÏÂTCCʵÏÖ·Ö²¼Ê½ÊÂÎñµÄ¹ý³Ì¡£
¼ÙÉèÓû§AÓÃËûµÄÕË»§Óà¶î¸øÓû§B·¢Ò»¸ö100ÔªµÄºì°ü£¬²¢ÇÒÓà¶îϵͳºÍºì°üϵͳÊÇÁ½¸ö¶ÀÁ¢µÄϵͳ¡£
Try
´´½¨Ò»ÌõתÕËÁ÷Ë®£¬²¢½«Á÷Ë®µÄ״̬ÉèΪ½»Ò×ÖÐ
½«Óû§AµÄÕË»§Öп۳ý100Ôª£¨Ô¤ÁôÒµÎñ×ÊÔ´£©
Try³É¹¦Ö®ºó£¬±ã½øÈëConfirm½×¶Î
Try¹ý³Ì·¢ÉúÈκÎÒì³££¬¾ù½øÈëCancel½×¶Î
Confirm
ÏòBÓû§µÄºì°üÕË»§ÖÐÔö¼Ó100Ôª
½«Á÷Ë®µÄ״̬ÉèΪ½»Ò×ÒÑÍê³É
Confirm¹ý³Ì·¢ÉúÈκÎÒì³££¬¾ù½øÈëCancel½×¶Î
Confirm¹ý³ÌÖ´Ðгɹ¦£¬Ôò¸ÃÊÂÎñ½áÊø
Cancel
½«Óû§AµÄÕË»§Ôö¼Ó100Ôª
½«Á÷Ë®µÄ״̬ÉèΪ½»Ò×ʧ°Ü
ÔÚ´«Í³ÊÂÎñ»úÖÆÖУ¬ÒµÎñÂß¼µÄÖ´ÐкÍÊÂÎñµÄ´¦Àí£¬ÊÇÔÚ²»Í¬µÄ½×¶ÎÓɲ»Í¬µÄ²¿¼þÀ´Íê³ÉµÄ£ºÒµÎñÂß¼²¿·Ö·ÃÎÊ×ÊԴʵÏÖÊý¾Ý´æ´¢£¬Æä´¦ÀíÊÇÓÉÒµÎñϵͳ¸ºÔð£»ÊÂÎñ´¦Àí²¿·Öͨ¹ýе÷×ÊÔ´¹ÜÀíÆ÷ÒÔʵÏÖÊÂÎñ¹ÜÀí£¬Æä´¦ÀíÓÉÊÂÎñ¹ÜÀíÆ÷À´¸ºÔð¡£¶þÕßûÓÐÌ«¶à½»»¥µÄµØ·½£¬ËùÒÔ£¬´«Í³ÊÂÎñ¹ÜÀíÆ÷µÄÊÂÎñ´¦ÀíÂß¼£¬½öÐèÒª×ÅÑÛÓÚÊÂÎñÍê³É£¨commit/rollback£©½×¶Î£¬¶ø²»±Ø¹Ø×¢ÒµÎñÖ´Ðн׶Ρ£
TCCÈ«¾ÖÊÂÎñ±ØÐë»ùÓÚRM±¾µØÊÂÎñÀ´ÊµÏÖÈ«¾ÖÊÂÎñ
TCC·þÎñÊÇÓÉTry/Confirm/CancelÒµÎñ¹¹³ÉµÄ£¬
ÆäTry/Confirm/CancelÒµÎñÔÚÖ´ÐÐʱ£¬»á·ÃÎÊ×ÊÔ´¹ÜÀíÆ÷£¨Resource Manager£¬ÏÂÎļò³ÆRM£©À´´æÈ¡Êý¾Ý¡£ÕâЩ´æÈ¡²Ù×÷£¬±ØÐëÒª²ÎÓëRM±¾µØÊÂÎñ£¬ÒÔʹÆä¸ü¸ÄµÄÊý¾ÝҪô¶¼commit£¬ÒªÃ´¶¼rollback¡£
ÕâÒ»µã²»ÄÑÀí½â£¬¿¼ÂÇÒ»ÏÂÈçϳ¡¾°£º

¼ÙÉèͼÖеķþÎñBûÓлùÓÚRM±¾µØÊÂÎñ£¨ÒÔRDBSΪÀý£¬¿Éͨ¹ýÉèÖÃauto-commitΪtrueÀ´Ä£Ä⣩£¬ÄÇôһµ©[B:Try]²Ù×÷ÖÐ;ִÐÐʧ°Ü£¬TCCÊÂÎñ¿ò¼ÜºóÐø¾ö¶¨»Ø¹öÈ«¾ÖÊÂÎñʱ£¬¸Ã[B:Cancel]ÔòÐèÒªÅжÏ[B:Try]ÖÐÄÄЩ²Ù×÷ÒѾдµ½DB¡¢ÄÄЩ²Ù×÷»¹Ã»ÓÐдµ½DB£º¼ÙÉè[B:Try]ÒµÎñÓÐ5¸öд¿â²Ù×÷£¬[B:Cancel]ÒµÎñÔòÐèÒªÖð¸öÅжÏÕâ5¸ö²Ù×÷ÊÇ·ñÉúЧ£¬²¢½«ÉúЧµÄ²Ù×÷Ö´Ðз´Ïò²Ù×÷¡£
²»ÐÒµÄÊÇ£¬ÓÉÓÚ[B:Cancel]ÒµÎñÒ²ÓÐn£¨0<=n<=5£©¸ö·´ÏòµÄд¿â²Ù×÷£¬´Ëʱһµ©[B:Cancel]Ò²ÖÐ;³ö´í£¬ÔòºóÐøµÄ[B:Cancel]Ö´ÐÐÈÎÎñ¸ü¼Ó·±ÖØ¡£ÒòΪ£¬Ïà±ÈµÚÒ»´Î[B:Cancel]²Ù×÷£¬ºóÐøµÄ[B:Cancel]²Ù×÷»¹ÐèÒªÅжÏÏÈǰµÄ[B:Cancel]²Ù×÷µÄn£¨0<=n<=5£©¸öд¿âÖÐÄöÒѾִÐС¢Äö»¹Ã»ÓÐÖ´ÐУ¬Õâ¾ÍÉæ¼°µ½ÁËÃݵÈÐÔÎÊÌâ¡£¶ø¶ÔÃݵÈÐԵı£ÕÏ£¬ÓֺܿÉÄÜ»¹Ðè񻃾¼°¶îÍâµÄд¿â²Ù×÷£¬¸Ãд¿â²Ù×÷ÓÖ»áÒòΪûÓÐRM±¾µØÊÂÎñµÄÖ§³Ö¶ø´æÔÚÀàËÆÎÊÌâ¡£¡£¡£¿ÉÏë¶øÖª£¬Èç¹û²»»ùÓÚRM±¾µØÊÂÎñ£¬TCCÊÂÎñ¿ò¼ÜÊÇÎÞ·¨ÓÐЧµÄ¹ÜÀíTCCÈ«¾ÖÊÂÎñµÄ¡£
·´Ö®£¬»ùÓÚRM±¾µØÊÂÎñµÄTCCÊÂÎñ£¬ÕâÖÖÇé¿öÔò»áºÜÈÝÒ×´¦Àí£º[B:Try]²Ù×÷ÖÐ;ִÐÐʧ°Ü£¬TCCÊÂÎñ¿ò¼Ü½«Æä²ÎÓëRM±¾µØÊÂÎñÖ±½Órollback¼´¿É¡£ºóÐøTCCÊÂÎñ¿ò¼Ü¾ö¶¨»Ø¹öÈ«¾ÖÊÂÎñʱ£¬ÔÚÖªµÀ¡°[B:Try]²Ù×÷Éæ¼°µÄRM±¾µØÊÂÎñÒѾrollback¡±µÄÇé¿öÏ£¬¸ù±¾ÎÞÐèÖ´ÐÐ[B:Cancel]²Ù×÷¡£
»»¾ä»°Ëµ£¬»ùÓÚRM±¾µØÊÂÎñʵÏÖTCCÊÂÎñ¿ò¼Üʱ£¬Ò»¸öTCCÐÍ·þÎñµÄcancelÒµÎñҪôִÐУ¬ÒªÃ´²»Ö´ÐУ¬²»ÐèÒª¿¼ÂDz¿·ÖÖ´ÐеÄÇé¿ö¡£
TCCÊÂÎñ¿ò¼ÜÓ¦¸ÃÌṩConfirm/Cancel·þÎñµÄÃݵÈÐÔ±£ÕÏ
Ò»°ãÈÏΪ£¬·þÎñµÄÃݵÈÐÔ£¬ÊÇÖ¸Õë¶Ôͬһ¸ö·þÎñµÄ¶à´Î(n>1)ÇëÇóºÍ¶ÔËüµÄµ¥´Î(n=1)ÇëÇ󣬶þÕß¾ßÓÐÏàͬµÄ¸±×÷Óá£
ÔÚTCCÊÂÎñÄ£ÐÍÖУ¬Confirm/CancelÒµÎñ¿ÉÄÜ»á±»ÖØ¸´µ÷Óã¬ÆäÔÒòºÜ¶à¡£±ÈÈ磬ȫ¾ÖÊÂÎñÔÚÌá½»/»Ø¹öʱ»áµ÷Óø÷TCC·þÎñµÄConfirm/CancelÒµÎñÂß¼¡£Ö´ÐÐÕâЩConfirm/CancelÒµÎñʱ£¬¿ÉÄÜ»á³öÏÖÈçÍøÂçÖжϵĹÊÕ϶øÊ¹µÃÈ«¾ÖÊÂÎñ²»ÄÜÍê³É¡£Òò´Ë£¬¹ÊÕϻָ´»úÖÆºóÐøÈÔÈ»»áÖØÐÂÌá½»/»Ø¹öÕâЩδÍê³ÉµÄÈ«¾ÖÊÂÎñ£¬ÕâÑù¾Í»áÔٴε÷ÓòÎÓë¸ÃÈ«¾ÖÊÂÎñµÄ¸÷TCC·þÎñµÄConfirm/CancelÒµÎñÂß¼¡£
¼ÈÈ»Confirm/CancelÒµÎñ¿ÉÄܻᱻ¶à´Îµ÷Ó㬾ÍÐèÒª±£ÕÏÆäÃݵÈÐÔ¡£
ÄÇô£¬Ó¦¸ÃÓÉTCCÊÂÎñ¿ò¼ÜÀ´ÌṩÃݵÈÐÔ±£ÕÏ£¿»¹ÊÇÓ¦¸ÃÓÉÒµÎñϵͳ×ÔÐÐÀ´±£ÕÏÃݵÈÐÔÄØ£¿
¸öÈËÈÏΪ£¬Ó¦¸ÃÊÇÓÉTCCÊÂÎñ¿ò¼ÜÀ´ÌṩÃݵÈÐÔ±£ÕÏ¡£Èç¹û½ö½öÖ»ÊǼ«¸ö±ð·þÎñ´æÔÚÕâ¸öÎÊÌâµÄ»°£¬ÄÇôÓÉÒµÎñϵͳÀ´¸ºÔðÒ²ÊÇ¿ÉÒԵģ»È»¶ø£¬ÕâÊÇÒ»À๫¹²ÎÊÌ⣬ºÁÎÞÒÉÎÊ£¬ËùÓÐTCC·þÎñµÄConfirm/CancelÒµÎñ´æÔÚÃݵÈÐÔÎÊÌâ¡£TCC·þÎñµÄ¹«¹²ÎÊÌâÓ¦¸ÃÓÉTCCÊÂÎñ¿ò¼ÜÀ´½â¾ö£»¶øÇÒ£¬¿¼ÂÇÒ»ÏÂÓÉÒµÎñϵͳÀ´¸ºÔðÃݵÈÐÔÐèÒª¿¼ÂǵÄÎÊÌ⣬¾Í»á·¢ÏÖ£¬ÕâÎÞÒÉÔö´óÁËÒµÎñϵͳµÄ¸´ÔÓ¶È¡£
|