±à¼ÍƼö: |
±¾ÎÄ»ã×ÜÕûÀíÁË·Ö²¼Ê½ÊÂÎñÏÖÓÐµÄÆßÖÖʵÏÖ·½°¸£¬·Ö±ð¶ÔÿÖÖ·½°¸µÄºËÐÄÔÀí¡¢¶ÔÊÂÎñACIDÌØÐÔµÄÖ§³Ö¼°ÆäÊÊÓó¡¾°µÈ½øÐÐÁ˶ԱȷÖÎöºÍ×ܽá. À´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
±³¾°
Ëæ×Å΢·þÎñµÄÆÕ¼°£¬·Ö²¼Ê½ÊÂÎñ³ÉΪÁËϵͳÉè¼ÆÖв»µÃ²»Ãæ¶ÔµÄÒ»¸öÎÊÌ⣬¶ø·Ö²¼Ê½ÊÂÎñµÄʵÏÖÔòÊ®·Ö¸´ÔÓ¡£ÔĶÁ±¾ÎÄ֮ǰ£¬ÐèÒªÄã¶ÔÊý¾Ý¿âÊÂÎñµÄACID¡¢CAPÀíÂÛ¡¢BaseÀíÂÛÒÔ¼°Á½½×¶ÎÌá½»ÓÐÒ»¶¨µÄÈÏÖª£¬²»ÊìϤÕßÇë×ÔÐаٶȻòÕßÔĶÁ²Î¿¼²©¿Í1¡¢2¡¢3ºÍ4¡£³ý´ËÖ®Í⣬ÔÚÔĶÁ±¾ÎĹý³ÌÖУ¬Èç¹û¶ÔijÖÖ·½°¸²»Àí½â£¬Ç¿ÁÒ½¨ÒéÏÈÔĶÁ¶ÔÓ¦·½°¸ÖеIJο¼²©¿ÍºóÔÙÔĶÁ±¾ÎÄÖжÔÓ¦µÄ½éÉÜ¡£
ΪÁ˱ãÓÚºóÎÄÐðÊö£¬ÕâÀï¶ÔACIDÖеÄC£¨Ò»ÖÂÐÔ£©×öÒ»¸öÇ¿µ÷£ºÑϸñµÄÊÂÎñÒ»ÖÂÐÔÊÇʹÊý¾Ý¿â´ÓÒ»¸öÒ»ÖÂÐÔ״̬±äµ½ÁíÒ»¸öÒ»ÖÂÐÔ״̬£¬ÇÒÊÂÎñÖмä״̬²»Äܱ»¹Û²ìµ½¡£
·Ö²¼Ê½ÊÂÎñµÄÆßÖÖʵÏÖ·½°¸£º
1¡¢»ùÓÚ¿É¿¿ÏûÏ¢·þÎñ£¨»ùÓÚ¿É¿¿ÏûÏ¢Öмä¼þ£©£»
2¡¢×î´óŬÁ¦³¢ÊÔ£¨»ùÓÚÏûÏ¢Öмä¼þ£©£»
3¡¢TX-LCN£¨¶ÔLCNµÄʵÏÖ£©£»
4¡¢X/Open DTPÄ£ÐÍ£¨XA¹æ·¶£¬»ùÓÚÁ½½×¶ÎÌá½»£©£»
5¡¢°¢ÀïDTS£¨»ùÓÚTCC£©£»
6¡¢»ªÎªServiceComb£¨¶ÔSAGAģʽµÄʵÏÖ£©£»
7¡¢°¢ÀïGTS£¨¿ªÔ´²úƷΪFescar£¬¶ÔXAÐÒé¸Ä½øºóµÄʵÏÖ£©¡£
1¡¢»ùÓÚ¿É¿¿ÏûÏ¢·þÎñ
ÎÒÃdz£¼ûµÄÏûÏ¢Öмä¼þ±ÈÈçLinkedLin¹«Ë¾µÄKafka¡¢Rabbit¿Æ¼¼ÓÐÏÞ¹«Ë¾µÄRabbitMQÒÔ¼°ApacheÌṩµÄActiveMQµÈµÈ£¬¶¼²»Ö§³ÖÊÂÎñ¡£¶ø°¢ÀïÌṩµÄRocketMQÔòÔÚ½â¾öÁËÏûÏ¢µÄ˳ÐòÐÔºÍÖØ¸´ÏûÏ¢ÃݵÈÐԵĻù´¡ÉÏ£¬ÊµÏÖÁ˶ÔÊÂÎñµÄÖ§³Ö£¨Ïê¼û²Î¿¼²©¿Í5£©¡£Òò¶ø»ùÓÚRocketMQ£¬¾Í¿ÉÒÔʵÏÖ·Ö²¼Ê½ÊÂÎñ£¨Ïê¼û²Î¿¼²©¿Í6£©¡£Êµ¼ÊÉÏ£¬²Î¿¼²©¿Í6Öиø³öÁËÁ½Ì×»ùÓÚÏûÏ¢·þÎñµÄʵÏÖ·½°¸£ºµÚÒ»£¬»ùÓÚ±¾µØÏûÏ¢·þÎñµÄ·½°¸£¬Õë¶ÔµÄÊÇÏûÏ¢Öмä¼þ±¾Éí²»Ö§³ÖÊÂÎñµÄ³¡¾°£¬ÐèÒª´ÓÓ¦ÓÃÉè¼ÆµÄ½Ç¶ÈʵÏÖÏûÏ¢Êý¾ÝµÄ¿É¿¿ÐÔ£»µÚ¶þ£¬»ùÓÚ¶ÀÁ¢ÏûÏ¢·þÎñµÄ·½°¸£¬Õë¶ÔµÄÊÇÏûÏ¢Öмä¼þ±¾ÉíÖ§³ÖÊÂÎñµÄ³¡¾°¡£ÎªÁ˱ãÓÚºóÃæ¶Ô±È·ÖÎö£¬ÕâÀïÌù³öÁË»ùÓÚ¶ÀÁ¢ÏûÏ¢·þÎñµÄÉè¼Æ·½°¸£º

»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½ÊÂÎñ·½°¸µÄºËÐÄÔÀíÊǶԷ¢Ë͵½ÏûÏ¢Öмä¼þµÄÏûÏ¢½øÐС°Á½½×¶ÎÌá½»¡±£¬¼´ÏÈÌá½»£¬Ö´ÐÐÍê±¾µØÊÂÎñºóÔÙÈ·ÈÏÏûÏ¢¡£Í¨¹ýÕâÑùµÄ»úÖÆ£¬¸øÊÂÎñµÄ»Ø¹öÌṩÁË¿ÉÄÜ¡£ÈçÏÂͼËùʾ¡£Èç¹ûÓÃACIDÀ´ºâÁ¿¸Ã·½°¸£¬»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½ÊÂÎñ·½°¸Äܱ£Ö¤ÊÂÎñµÄ×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬µ«ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔ¡£ÕâÀïÔÚÔ×ÓÐÔÇ°Ãæ¼Ó¡°×îÖÕ¡±¶þ×Ö£¬ÊÇÒòΪ»ùÓÚÏûÏ¢µÄ²Ù×÷±¾ÖÊÉÏÊôÓÚÒì²½²Ù×÷£¬ÏÔÈ»ÊÇ·ÇʵʱµÄ¡£³Ö¾ÃÐÔ×ÔÈ»²»±Ø¶à˵¡£ÄÇôΪʲô˵¸Ã·½°¸ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔÄØ£¿ÓÉÏÂͼ¿ÉÖª£¬±¾µØÊÂÎñÖ´ÐÐÌá½»³É¹¦Ö®ºó£¬²Å»á¶ÔÏûÏ¢½øÐÐÈ·ÈÏ£¬¶øÕâ¸öʱºò£¬Ô¶³ÌÊÂÎñ»¹Î´Ìá½»£¬Ò»ÖÂÐÔÏÔÈ»ÎÞ·¨Âú×ã¡£ÎÒÃÇÖªµÀ£¬Êý¾Ý¿âµÄ¸ôÀëÐÔÊÇͨ¹ýËø»úÖÆÀ´±£Ö¤µÄ£¬Òò¶ø»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½ÊÂÎñ·½°¸ÒªÏëÂú×ã¸ôÀëÐÔ£¬ÍùÍù»¹ÐèÒªÔÚÊÂÎñ·¢Æð·½²ÉÓ÷ֲ¼Ê½Ëø»úÖÆ¡£Òò¶ø×ܵÄÀ´Ëµ£¬»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½·½°¸ÊÊÓÃÓÚ¶ÔÒµÎñµÄʵʱһÖÂÐÔÒÔ¼°ÊÂÎñµÄ¸ôÀëÐÔÒªÇó¶¼²»¸ßµÄÄÚ²¿ÏµÍ³¡£

2¡¢×î´óŬÁ¦³¢ÊÔ
×î´óŬÁ¦³¢ÊÔ·½°¸ºÍ»ùÓÚ¿É¿¿ÏûÏ¢·þÎñÒ»Ñù£¬¶¼ÒÀÀµÓÚÏûÏ¢Öмä¼þ£¨²Î¿¼²©¿Í7£©¡£²»Í¬µÄÊÇ£¬ÏûÏ¢Öмä¼þ²»ÐèÒª±£Ö¤¿É¿¿ÐÔ£¬·Ö²¼Ê½ÊÂÎñµÄʵÏÖÊÇÒÀ¿¿¶îÍâµÄУ¶Ôϵͳ»òÕß±¨¾¯ÏµÍ³£¨±¨¾¯ºóÈ˹¤´¦Àí£©À´±£Õϵġ£Òò¶øºÍ»ùÓÚ¿É¿¿ÏûÏ¢·þÎñÒ»Ñù£¬×î´óŬÁ¦³¢ÊԵķֲ¼Ê½·½°¸Ö»Äܱ£Ö¤ÊÂÎñµÄ×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔ¡£ÔÚÓ¦Óó¡¾°·½Ã棬ÕýÈç²Î¿¼²©¿Í7ÖÐËù˵£¬×î´óŬÁ¦³¢ÊÔ·½°¸³£³£ÓÃÓÚ¶ÔÒµÎñµÄʵʱһÖÂÐÔÒÔ¼°ÊÂÎñµÄ¸ôÀëÐÔÒªÇó¶¼²»¸ßµÄÄÚ²¿ÏµÍ³»òÕß¿çÆóÒµµÄÒµÎñ»î¶¯ÖС£ÏÂͼΪ×î´óŬÁ¦³¢ÊԵķ½°¸£º

ͬ»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·½°¸Ò»Ñù£¬×î´óŬÁ¦³¢ÊÔ·½°¸Äܱ£Ö¤ÊÂÎñµÄ×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬µ«ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔ¡£¾¡¹Ü×î´óŬÁ¦³¢ÊÔ·½°¸Ö»Äܱ£Ö¤×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬µ«ÒòÆäʵÏÖÊ®·Ö¼òµ¥£¬³£³£³ÉΪÆóÒµºÜ¶à·ÇºËÐÄÒµÎñµÄÊ×Ñ¡·½°¸¡£
3¡¢TX-LCN
ÓÉLCNµÄ¹ÙÍø£¨²Î¿¼²©¿Í8£©¿ÉÖª£¬LCNÊÇlock¡¢confirmºÍnotifyÈý¸öµ¥´ÊµÄËõд¡£¸öÈËÈËΪ£¬LCN·½°¸ÊDZ¾ÎÄÖÐÆß¸ö·½°¸ÖгýÁ˸ոÕÒѾ½éÉܵÄÁ½¸ö»ùÓÚÏûÏ¢Öмä¼þµÄ·½°¸Ö®Í⣬×îÈÝÒ×Àí½âµÄ·½°¸£¬Òò¶ø½«ÆäÅÅÔÚµÚÈýλÀ´½éÉÜ¡£ÕýÈçÆä¹ÙÍøÎĵµ£¨Ïê¼û²Î¿¼²©¿Í8£©Ëù˵£¬LCN²¢²»²úÉúÊÂÎñ£¬LCNÖ»ÊDZ¾µØÊÂÎñµÄе÷¹¤¡£Õâ¾ÍÒâζ×Å£¬Ê¹ÓÃLCNµÄϵͳÍêÈ«ÒÀÀµÓÚ±¾µØÊÂÎñ¡£Òź¶µÄÊÇ£¬LCNµÄ¹ÙÍø¶ÔÆäºËÐÄÔÀí½éÉܵñȽϼòÂÔ£¬¿´Íê²»µÃÆäÒªÁ죬·´¶øÊÇÔÚÁíÍâµÄ²©¿Í£¨²Î¿¼²©¿Í9ºÍ10£©ÖÐÏà¶ÔÏêϸµØ½éÉÜÁËÆäʵÏÖÔÀí¡£
LCNÖаüº¬Ò»¸öTxManagerºÍÒ»¸öTxClient¡£ÆäÖÐTxManager¸ºÔðά»¤È«¾ÖµÄÊÂÎñÐÅÏ¢£¬¶øTxClientλÓÚÒµÎñÄ£¿éºÍ±¾µØÊÂÎñ²ãÖ®¼ä£¬Æä×÷ÓÃÊÇ´úÀí±¾µØÊÂÎñ²ã£¬Í¨¹ý´úÀíÁ¬½Ó´ÊʵÏÖÁËjavax.sql.DataSource½Ó¿Ú£¬²¢ÖØÐ´ÁËclose·½·¨£¬ÊÂÎñÄ£¿éÔÚÌá½»¹Ø±ÕÒÔºóTxClientÁ¬½Ó³Ø½«Ö´ÐÐ"¼Ù¹Ø±Õ"²Ù×÷£¬µÈ´ýTxManagerе÷Íê³ÉÊÂÎñÒÔºóÔڹرÕÁ¬½Ó£¬ÈçÏÂͼËùʾ¡£

LCNµÄºËÐIJ½Öè
1. ´´½¨ÊÂÎñ×é
ÊÇÖ¸ÔÚÊÂÎñ·¢Æð·½¿ªÊ¼Ö´ÐÐÒµÎñ´úÂë֮ǰÏȵ÷ÓÃTxManager´´½¨ÊÂÎñ×é¶ÔÏó£¬È»ºóÄõ½ÊÂÎñ±êʾGroupIdµÄ¹ý³Ì¡£
2. Ìí¼ÓÊÂÎñ×é
Ìí¼ÓÊÂÎñ×éÊÇÖ¸²ÎÓë·½ÔÚÖ´ÐÐÍêÒµÎñ·½·¨ÒԺ󣬽«¸ÃÄ£¿éµÄÊÂÎñÐÅÏ¢Ìí¼Ó֪ͨ¸øTxManagerµÄ²Ù×÷¡£
3. ¹Ø±ÕÊÂÎñ×é
ÊÇÖ¸ÔÚ·¢Æð·½Ö´ÐÐÍêÒµÎñ´úÂëÒԺ󣬽«·¢Æð·½Ö´Ðнá¹û״̬֪ͨ¸øTxManagerµÄ¶¯×÷¡£µ±Ö´ÐÐÍê¹Ø±ÕÊÂÎñ×éµÄ·½·¨ÒÔºó£¬TxManager½«¸ù¾ÝÊÂÎñ×éÐÅÏ¢À´Í¨ÖªÏàÓ¦µÄ²ÎÓëÄ£¿éÌá½»»ò»Ø¹öÊÂÎñ¡£
ÒÔÊý¾Ý¿âΪÀý£¬Ç°ÃæÌáµ½µÄ¡°¼Ù¹Ø±Õ¡±¾ÍÊÇÖ¸²½Öè2ÖÐÖ´ÐÐÍêÒµÎñ·½·¨ºóµ÷ÓõÄclose()·½·¨ÊǸ²Ð´ºóµÄ·½·¨£¬¸Ã·½·¨²¢²»»áÕæÕýÌá½»ÊÂÎñ£¬¶øÊÇÒ»Ö±³ÖÓÐÊý¾Ý¿âÁ¬½Ó£¬²¢³ÖÓÐÊÂÎñËùÐèµÄÏà¹Ø×ÊÔ´Ëø£¬Ö±µ½µÚ3²½£¬ÓÉTxManagerÒ첽֪ͨÊÂÎñÌá½»»ò»Ø¹ö²ÅÊÍ·ÅËø¡£
ÒԲο¼²©¿Í10ÖеÄʱÐòͼΪÀý£¨¼ûÏÂͼ£©£¬²ÎÓë·½AºÍ²ÎÓë·½BÔÚÖ´ÐÐÍêÒµÎñ²Ù×÷ºó£¬ÊÂÎñʵ¼ÊÉϲ¢Î´Ìá½»£¬¶øÊǽ«Ìύǰ±¾µØÊÂÎñµÄ²Ù×÷½á¹û·µ»Ø¸øÊÂÎñ·¢Æð·½£¬ÓÉÊÂÎñ·¢Æð·½Í¨ÖªTxManager£¬²¢ÓɺóÕ߸ù¾Ý֪ͨµÄ½á¹ûÀ´Ò첽֪ͨ¸÷²ÎÓë·½×îÖÕÌá½»»ò»Ø¹öÊÂÎñ¡£µ±È»TxManager¶Ô²ÎÓë·½µÄ֪ͨ¿ÉÄÜ»áʧ°Ü£¬Òò¶øÐèÒª²¹³¥»úÖÆ¡£

ÓÉ´Ë¿ÉÖª£¬LCNÖеÄÈý¸öµ¥´Ê¶ÔÓ¦ÁËLCN·Ö²¼Ê½ÊÂÎñ²Ù×÷ÖеÄÈý¸ö¹Ø¼ü²½Ö裺1¡¢·Ö²¼Ê½ÊÂÎñ²Ù×÷ǰÏÈËø¶¨£¨lock£©ËùÓÐ×ÊÔ´Ö±µ½Ò첽֪ͨ£¨notify£©ÊÍ·Å×ÊÔ´£»2¡¢Ö´ÐÐÒµÎñ²Ù×÷£¬¸ù¾Ý²Ù×÷½á¹ûÈ·ÈÏ£¨confirm£©ÊÂÎñÓ¦¸ÃÌá½»»¹Êǻعö£»3¡¢¸ù¾ÝµÚ2²½ÖеIJÙ×÷½á¹ûÒ첽֪ͨ£¨notify£©ÊÂÎñµÄÌá½»»ò»Ø¹ö²¢×îÖÕÊÍ·Å×ÊÔ´¡£
ÖÁ´Ë£¬ÎÒÃÇÁ˽⵽£¬LCNµÄºËÐÄÔÀíÊÇͨ¹ýе÷±¾µØÊÂÎñÀ´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ£¬·Ö²¼Ê½ÊÂÎñµÄʵÏÖÒÀÀµÓÚ±¾µØÊÂÎñ¡£Òò¶ø»ùÓÚLCNµÄ·Ö²¼Ê½ÊÂÎñµÄACIDÌØÐÔÈ¡¾öÓÚ±¾µØÊÂÎñµÄACIDÌØÐÔ¡£Ò»°ãÀ´Ëµ£¬Èç¹û±¾µØÊÂÎñ¶¼Äܱ£Ö¤ACID£¬ÄÇô»ùÓÚLCNµÄ·Ö²¼Ê½ÊÂÎñÒ²ÄÜÂú×ãAID¡£¶ø¶ÔÓÚÒ»ÖÂÐÔ£¨Consistency£©£¬ÕâÊÇ·Ö²¼Ê½ÊÂÎñµÄÒ»¸öͨ²¡¡£ÓÉBaseÀíÂÛ¿ÉÖª£¬¶ÔÓÚ·Ö²¼Ê½ÏµÍ³£¬ÎÒÃǸü¹Ø×¢µÄÊÇ×îÖÕÒ»ÖÂÐÔºÍ×îÖÕÒ»ÖÂÐÔµÄʵʱÐÔ¡£Ïà¶ÔÓÚÇ°Ãæ½éÉܵĻùÓÚÏûÏ¢Öмä¼þµÄÁ½ÖÖ·½°¸À´Ëµ£¬»ùÓÚLCNµÄ·Ö²¼Ê½ÊÂÎñ·½°¸×îÖÕÒ»ÖÂÐÔµÄʵʱÐÔÔ¶¸ßÓÚǰÁ½Õß¡£µ±È»£¬Æä´ú¼ÛÊDz¢·¢ÐÔÄܵļ«´ó½µµÍ¡£Êµ¼ÊÉÏ£¬¶ÔÓÚ·Ö²¼Ê½ÏµÍ³¶øÑÔ£¬ÄÜ×öµ½×¼ÊµÊ±µÄ×îÖÕÒ»ÖÂÐÔ¾ÍÒѾÄÜÂú×ã¾ø´ó¶àÊýÓ¦Óó¡¾°¡£¶ÔÓÚÏñÒøÐÐÒµÎñµÈ¶ÔÒ»ÖÂÐÔÓм«ÖÂÒªÇóµÄ¼«¶Ë³¡¾°£¬»¹¿ÉÒÔͨ¹ýÔÚÒµÎñϵͳÖÐʹÓ÷ֲ¼Ê½Ëø»òÕß·Ö²¼Ê½¶ÓÁÐÀ´±£Ö¤¡£
С½á£ºLCN·½°¸Ïà¶ÔÓÚºóÃæ½«Òª½éÉܵįäËû·½°¸À´Ëµ£¬ÆäÓŵãÊÇʵÏÖÏà¶Ô¼òµ¥£¬µ«ÆäȱµãÒ²ÊÇÏÔÈ»µÄ£ºµÚÒ»£¬ÒÀÀµ±¾µØÊÂÎñ£¬Èç¹ûÒª²Ù×÷µÄ×ÊÔ´²»Ö§³Ö±¾µØÊÂÎñ£¬ÔòLCNģʽÎÞ·¨Ö±½ÓʹÓᣵ±È»£¬¶ÔÓÚÕâ¸öÏÞÖÆ£¬Ð°æµÄTX-LCNͨ¹ýÖ§³ÖºóÃæ½«»á½éÉܵÄTCCģʽºÍTXCģʽÀ´½â¾ö¡£µÚ¶þ£¬LCNÊÂÎñÌá½»µÄÕû¸ö¹ý³Ì¶¼ÐèÒªËø×¡×ÊÔ´£¬Òò¶øÐÔÄܵÍÓÚTCCºÍTXC£¨TCCºÍTXC¾ÍÊÇΪÁËËõ¶Ì·Ö²¼Ê½ÊÂÎñ²Ù×÷¹ý³ÌÖÐ×ÊÔ´µÄËø¶¨Ê±¼ä£©¡£
4¡¢»ùÓÚXA¹æ·¶µÄX/Open DTPÄ£ÐÍ
X/Open£¬¼´ÏÖÔÚµÄopen group£¬ÊÇÒ»¸ö¶ÀÁ¢µÄ×éÖ¯£¬Ö÷Òª¸ºÔðÖÆ¶¨¸÷ÖÖÐÐÒµ¼¼Êõ±ê×¼¡£X/Open
DTP¼´Îª¸Ã×éÖ¯ÖÆ¶¨µÄÒ»Ì×·Ö²¼Ê½ÊÂÎñµÄ·½°¸¡£¹ØÓÚ¸ÃÄ£ÐÍÏêϸµÄ½éÉÜÇëÔĶÁ²Î¿¼²©¿Í11£¬ÕâÀïÖ»½éÉÜÆä×îºËÐĵÄÔÀí¡£
DTPÄ£ÐÍÔªËØ
Ó¦ÓóÌÐò(Application Program £¬¼ò³ÆAP)£ºÓÃÓÚ¶¨ÒåÊÂÎñ±ß½ç(¼´¶¨ÒåÊÂÎñµÄ¿ªÊ¼ºÍ½áÊø)£¬²¢ÇÒÔÚÊÂÎñ±ß½çÄÚ¶Ô×ÊÔ´½øÐвÙ×÷¡£
×ÊÔ´¹ÜÀíÆ÷(Resource Manager£¬¼ò³ÆRM)£ºÈçÊý¾Ý¿â¡¢ÎļþϵͳµÈ£¬²¢Ìṩ·ÃÎÊ×ÊÔ´µÄ·½Ê½¡£
ÊÂÎñ¹ÜÀíÆ÷(Transaction Manager £¬¼ò³ÆTM)£º¸ºÔð·ÖÅäÊÂÎñΨһ±êʶ£¬¼à¿ØÊÂÎñµÄÖ´Ðнø¶È£¬²¢¸ºÔðÊÂÎñµÄÌá½»¡¢»Ø¹öµÈ¡£
ͨÐÅ×ÊÔ´¹ÜÀíÆ÷(Communication Resource Manager£¬¼ò³ÆCRM)£º¿ØÖÆÒ»¸öTMÓò(TM
domain)ÄÚ»òÕß¿çTMÓòµÄ·Ö²¼Ê½Ó¦ÓÃÖ®¼äµÄͨÐÅ¡£
ͨÐÅÐÒé(Communication Protocol£¬¼ò³ÆCP)£ºÌṩCRMÌṩµÄ·Ö²¼Ê½Ó¦ÓýڵãÖ®¼äµÄµ×²ãͨÐÅ·þÎñ¡£
ÕâÀïÎÒÃÇÖØµã¿´¿´AP¡¢TMºÍRMÖ®¼äµÄ¹ØÏµ£º

ÓÉÉÏͼ¿ÉÖª£¬XA¹æ·¶µÄ×îÖ÷Òª×÷ÓÃÊÇ£¬¶¨ÒåÁËRM-TMµÄ½»»¥½Ó¿Ú¡£Êµ¼ÊÉÏ£¬XA¹æ·¶³ýÁ˶¨ÒåµÄRM-TM½»»¥µÄ½Ó¿ÚÖ®Í⣬»¹¶ÔÁ½½×¶ÎÌá½»ÐÒé½øÐÐÁËÓÅ»¯¡£¾ßÌåµÄÓÅ»¯°üÀ¨Ö»¶Á¶ÏÑÔºÍÒ»½×¶ÎÌá½»¡£¾ßÌåÇëÔĶÁ²Î¿¼²©¿Í11¡£
½ÓÏÂÀ´ÎÒÃÇÀ´¿´XA¹æ·¶µÄ¾ßÌ幤×÷ÔÀí¡£²Î¿¼²©¿Í14Öиø³öÁËXA¹æ·¶Ìá½»Á÷³ÌʾÒâͼ£º

Ìá½»²½ÖèΪ£º
ÔÚ¿ªÊ¼Ò»¸öÈ«¾ÖÊÂÎñ֮ǰ£¬Éæ¼°µÄRM±ØÐëͨ¹ýax_regr()£¬ÏòTM×¢²áÒÔ¼ÓÈ뼯Ⱥ£»¶ÔÓ¦µÄ£¬ÔÚûÓÐÊÂÎñÐèÒª´¦ÀíµÄʱºò£¬RM¿ÉÒÔͨ¹ýax_unreg()ÏòTMÒªÇó×¢Ïú£¬À뿪¼¯Èº¡£
TMÔÚ¶ÔÒ»¸öRMÖ´ÐÐxa_¿ªÍ·µÄ¾ßÌå²Ù×÷ǰ£¬±ØÐëÏÈͨ¹ýxa_open()´ò¿ªÕâ¸öRM£¨±¾ÖÊÊǽ¨Á¢¶Ô»°£©¡ª¡ªÕâÆäʵҲÊÇ·ÖÅäXIDµÄÒ»¸öÐÐΪ£»ÓëÖ®ÏàÓ¦µÄ£¬TMÖ´ÐÐxa_close()À´¹Ø±ÕRM¡£
TM¶ÔRMµ÷ÓõÄxa_start()ºÍxa_stop()Õâ¶Ô×éºÏ£¬Ò»°ãÓÃÓÚ±ê¼Ç¾Ö²¿ÊÂÎñµÄ¿ªÍ·ºÍ½áβ¡£ÕâÀïÐèҪעÒâµÄÓÐÈýµã£º
¶ÔÓÚͬһ¸öRM£¬¸ù¾ÝÈ«¾ÖÊÂÎñµÄÒªÇ󣬿ÉÒÔǰºóÖ´Ðжà¶Ô×éºÏ¡ª¡ªÙÂÈç˵£¬Ïȱê¼ÇÒ»¸öÁ÷Ë®ÕËINSERTµÄ¾Ö²¿ÊÂÎñ²Ù×÷£¬È»ºóÔÙ±ê¼ÇÕË»§UPDATEµÄ¾Ö²¿ÊÂÎñ²Ù×÷¡£
TMÖ´ÐиÃ×éºÏÖ»ÊÇÆðµ½±ê¼ÇÊÂÎñµÄ×÷Ó㬾ßÌåµÄÒµÎñÃüÁîÊÇÓÉAP½»¸øRMµÄ¡£
¸Ã×éºÏ³ýÁËÖ´ÐÐÕâЩ±ê¼Ç¹¤×÷Í⣬Æäʵ»¹ÄÜÔÚRMÖÐʵÏÖ¶àÏ̵߳Äjoin/suspend/resume¹ÜÀí¡£
TMµ÷ÓÃRMµÄxa_prepare()À´½øÐеÚÒ»½×¶Î£¬µ÷ÓÃxa_commit()»òxa_rollback()Ö´Ðеڶþ½×¶Î¡£
ÕâÀïÐèҪǿµ÷µÄÊÇ£¬XA¹æ·¶ÖУ¬Õû¸öÁ½½×¶ÎÌá½»¹ý³Ì×ÊÔ´¶¼ÊÇ´¦ÓÚËø¶¨×´Ì¬£¨¼ûÏÂͼ£©¡£ÔÚÏÂͼÖУ¬ÎÞÂÛPhase2µÄ¾öÒéÊÇcommit»¹ÊÇrollback£¬ÊÂÎñÐÔ×ÊÔ´µÄËø¶¼Òª±£³Öµ½Phase2Íê³É²ÅÊÍ·Å¡£ÓÉ´Ë¿ÉÖª£¬»ùÓÚXA¹æ·¶µÄX/Open
DTPºÍLCN¶¼´æÔÚ×ÊÔ´³¤ÆÚËø¶¨µÄÎÊÌâ¡£

С½á£ºX/Open DTPµÄºËÐÄÔÀíÊÇ»ùÓÚÁ½½×¶ÎÌá½»£¨XA¹æ·¶£©£¬Í¨¹ýÔÚÕû¸öÌá½»¹ý³ÌÖжÔ×ÊÔ´½øÐÐËø¶¨À´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ£¬ÄܺܺõØÂú×ãAIDÌØÐÔ£¬ÒÔ¼°×¼ÊµÊ±µÄ×îÖÕÒ»ÖÂÐÔ¡£´ËÍ⣬¸Ã·½°¸Í¬LCNÀàËÆ£¬ÐÔÄܵÍÓÚTCCºÍTXC¡£Òò¶øÔÚʵ¼ÊÓ¦ÓÃÖУ¬½ÏÉÙÓÐϵͳ»áÑ¡Ôñ¸Ã·½°¸¡£
5¡¢»ùÓÚTCCµÄÖ§¸¶±¦DTS
¹ØÓÚTCCÔÀí£¬Ç¿ÁÒ½¨ÒéÏÈÔĶÁ²Î¿¼²©¿Í12ºÍ13¡£ÕâÀï¸ø³ö²Î¿¼²©¿Í13ÖеÄʾÒâͼ£º

TCC ·Ö²¼Ê½ÊÂÎñÄ£ÐͰüÀ¨Èý²¿·Ö£º
Ö÷ÒµÎñ·þÎñ£ºÖ÷ÒµÎñ·þÎñΪÕû¸öÒµÎñ»î¶¯µÄ·¢Æð·½£¬·þÎñµÄ±àÅÅÕߣ¬¸ºÔð·¢Æð²¢Íê³ÉÕû¸öÒµÎñ»î¶¯¡£
´ÓÒµÎñ·þÎñ£º´ÓÒµÎñ·þÎñÊÇÕû¸öÒµÎñ»î¶¯µÄ²ÎÓë·½£¬¸ºÔðÌṩ TCC ÒµÎñ²Ù×÷£¬ÊµÏÖ³õ²½²Ù×÷£¨Try£©¡¢È·ÈϲÙ×÷£¨Confirm£©¡¢È¡Ïû²Ù×÷£¨Cancel£©Èý¸ö½Ó¿Ú£¬¹©Ö÷ÒµÎñ·þÎñµ÷Óá£
ÒµÎñ»î¶¯¹ÜÀíÆ÷£ºÒµÎñ»î¶¯¹ÜÀíÆ÷¹ÜÀí¿ØÖÆÕû¸öÒµÎñ»î¶¯£¬°üÀ¨¼Ç¼ά»¤ TCC È«¾ÖÊÂÎñµÄÊÂÎñ״̬ºÍÿ¸ö´ÓÒµÎñ·þÎñµÄ×ÓÊÂÎñ״̬£¬²¢ÔÚÒµÎñ»î¶¯Ìύʱµ÷ÓÃËùÓдÓÒµÎñ·þÎñµÄ
Confirm ²Ù×÷£¬ÔÚÒµÎñ»î¶¯È¡Ïûʱµ÷ÓÃËùÓдÓÒµÎñ·þÎñµÄ Cancel ²Ù×÷¡£
Ò»¸öÍêÕûµÄ TCC ·Ö²¼Ê½ÊÂÎñÁ÷³ÌÈçÏ£º
1. Ö÷ÒµÎñ·þÎñÊ×ÏÈ¿ªÆô±¾µØÊÂÎñ£»
2. Ö÷ÒµÎñ·þÎñÏòÒµÎñ»î¶¯¹ÜÀíÆ÷ÉêÇëÆô¶¯·Ö²¼Ê½ÊÂÎñÖ÷ÒµÎñ»î¶¯£»
3. È»ºóÕë¶ÔÒªµ÷ÓõĴÓÒµÎñ·þÎñ£¬Ö÷ÒµÎñ»î¶¯ÏÈÏòÒµÎñ»î¶¯¹ÜÀíÆ÷×¢²á´ÓÒµÎñ»î¶¯£¬È»ºóµ÷ÓôÓÒµÎñ·þÎñµÄ
Try ½Ó¿Ú£»
4. µ±ËùÓдÓÒµÎñ·þÎñµÄ Try ½Ó¿Úµ÷Óóɹ¦£¬Ö÷ÒµÎñ·þÎñÌá½»±¾µØÊÂÎñ£»Èôµ÷ÓÃʧ°Ü£¬Ö÷ÒµÎñ·þÎñ»Ø¹ö±¾µØÊÂÎñ£»
5. ÈôÖ÷ÒµÎñ·þÎñÌá½»±¾µØÊÂÎñ£¬Ôò TCC Ä£ÐÍ·Ö±ðµ÷ÓÃËùÓдÓÒµÎñ·þÎñµÄ Confirm ½Ó¿Ú£»ÈôÖ÷ÒµÎñ·þÎñ»Ø¹ö±¾µØÊÂÎñ£¬Ôò·Ö±ðµ÷ÓÃ
Cancel ½Ó¿Ú£»
6. ËùÓдÓÒµÎñ·þÎñµÄ Confirm »ò Cancel ²Ù×÷Íê³Éºó£¬È«¾ÖÊÂÎñ½áÊø¡£
С½á£ºÒÔACIDÀ´ºâÁ¿TCC¿ÉÖª£¬TCCÄÜÂú×ãAIDÌØÐÔ£¬ÒÔ¼°×¼ÊµÊ±µÄ×îÖÕÒ»ÖÂÐÔ¡£TCCµÄºËÐÄÔÀíÊÇ£¬ÔÚ·Ö²¼Ê½ÊÂÎñ²Ù×÷ÖУ¬ÏȽ«ËùÐè×ÊÔ´Ô¤Õ¼£¬È»ºó½«ËøÊÍ·Å£¬×îºóÔÙ¸ù¾Ý×ÊÔ´Ô¤Õ¼µÄÇé¿öÀ´¾ö¶¨Ê¹ÓÃ×ÊÔ´»¹ÊÇÍË»Ø×ÊÔ´¡£Ïà±ÈÓÚXA¹æ·¶£¬TCC·½°¸²ÉÓÃÔ¤Áô×ÊÔ´µÄ·½Ê½£¬½«Á½½×¶ÎÌá½»¹ý³ÌÖеÄÈ«¾ÖËø·Ö³ÉÁËÁ½¶Î±¾µØÊÂÎñËø£¬Ëõ¶ÌÁË·Ö²¼Ê½×ÊÔ´Ëø¶¨µÄʱ¼ä£¬´Ó¶øÌá¸ßÁËÊÂÎñµÄ²¢·¢¶È¡£Ïà¶ÔÓÚºóÃæ¼´½«½éÉܵÄSAGA¶øÑÔ£¬ÒòΪTCC²ÉÓÃÔ¤Õ¼×ÊÔ´µÄ·½Ê½£¬Æä²¹³¥¶¯×÷ʵÏֱȽϼòµ¥¡£µ±È»£¬TCCµÄȱµãÊÇÒµÎñÈëÇÖÐÔ´ó£¬ÓÈÆäÊÇÒÑÓÐÒµÎñÈç¹ûÏëʹÓÃTCC·½°¸£¬¾ÍÐèÒªÐÞ¸ÄÔÀ´µÄÒµÎñÂß¼£¨ºóÃæ½éÉÜSAGAʱ»¹»áÔÙÇ¿µ÷ÕâÒ»µã£©¡£
6¡¢»ùÓÚSAGAµÄ»ªÎªServiceComb
sagaÊÇ1987ÄêµÄһƪÊý¾Ý¿âÂÛÎÄÀïÌáµ½µÄÒ»¸ö¸ÅÄ²Î¿¼²©¿Í16¡«19£¬ÖصãÊÇ16£©£¬¶øServiceCombÊÇ»ªÎªÒ»¸öÏîÄ¿×é¶ÔsagaģʽµÄʵÏÖ·½°¸¡£ÂÛÎÄÖÐÖ¸³ö£¬Ò»¸öSagaÊÂÎñ¾ÍÊÇÒ»¸öLong
Live Transaction(LLT)£¬¶øÒ»¸öLLT¿ÉÒÔ·Ö½âΪ¶à¸ö±¾µØÊÂÎñËù×é³É£¬¼´LLT= T1
+ T2 + ... + Tn¡£Ã¿¸ö±¾µØÊÂÎñÖ´ÐÐÍêÌá½»Ö®ºó¾Í»áÁ¢¼´ÉúЧ£¬±ÈÈçÖ´ÐÐÍêT1ºÍT2Ö®ºó£¬ÔÚÖ´ÐÐT3ʱ£¬T1ºÍT2µÄÊÂÎñ¾ÍÒѾÌá½»ÁË¡£¼ÙÈçÖ´ÐÐT3ʧ°Ü£¬ÓÉÓÚT1ºÍT2ÒѾÌá½»£¬ÎÞ·¨»Ø¹öÁË¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬sagaÒªÇóÒµÎñ·þÎñ·½¶Ôÿ¸ö±¾µØÊÂÎñTx¶¼Ìṩ¶ÔÓ¦µÄ·´Ïò²¹³¥²Ù×÷Cx£¨·´Ïò²¹³¥ÊÇÖ¸TxµÄÄæÏò²Ù×÷£©£¬·´Ïò²¹³¥²Ù×÷Ò²ÊÇÖ´ÐÐÍê¾ÍÁ¢¼´ÉúЧ¡£ÔÚÖ´ÐÐÒ»¸öLLTµÄ¹ý³ÌÖУ¬Èç¹ûÈÎÒâÒ»¸öTx³ö´íÁË£¬Ôòͨ¹ýµ÷ÓÃËùÓÐÒÑÖ´ÐеÄTx¶ÔÓ¦µÄCxÀ´½øÐз´Ïò²¹³¥¡£±ÈÈçÖ´ÐÐÍêT1ºÍT2Ö®ºó£¬Ö´ÐÐT3ʱ³ö´í£¬ÔòÐèÒªÖ´ÐÐC3¡¢C2ºÍC1À´½øÐв¹³¥¡£
ÂÛÎÄÖжԱ»sagaµ÷ÓõķþÎñÌá³öÁËÁ½µãÒªÇó£ºÆäÒ»ÊDZ»µ÷ÓõķþÎñÒªÖ§³ÖÃݵȡ£ÓÉÓÚ·Ö²¼Ê½·þÎñÒ»¶¨´æÔÚÍøÂ糬ʱ£¬ËùÒÔÕâÒ»µã¶ÔÓÚ·Ö²¼Ê½·þÎñÀ´Ëµ£¬Ò»°ã¶¼ÄÜÂú×ã¡£Æä¶þÊÇ·þÎñÒªÂú×ã¿É½»»»²¹³¥¡£ÈçͼËùʾ£º

ÕâÀïÓбØÒª¶Ô¿É½»»»²¹³¥×öÒ»ÏÂ˵Ã÷¡£Æäʵ·þÎñÖ§³ÖÃݵȺͷþÎñÂú×ã¿É½»»»²¹³¥ÕâÁ½µãÒªÇóÊÇΪÁË´¦ÀíÖ´Ðв¹³¥²Ù×÷ʱ±ØÈ»»áÓöµ½µÄÁ½¸öϸ·Ö³¡¾°¡£ÎÒÃÇÊ×ÏÈÀ´ËµËµÖ´Ðв¹³¥²Ù×÷ʱ»áÓöµ½µÄÄÄÁ½¸ö³¡¾°£ºµÚÒ»£¬ÊÂÎñ²Ù×÷Tx¸ù±¾Î´±»Ö´ÐУ¨±ÈÈçÒòÍøÂ綪°üµ¼ÖÂÊÂÎñ²Ù×÷TxÔÚͼÖб»¶ªÆú£¬Î´µ½´ï·þÎñ¶Ë£¬»òÕßÔÚ·þÎñ¶ËÖ´ÐÐʧ°Ü£©¡£¶ÔÓÚÕâÖÖ³¡¾°£¬CxÎÞÐëÒ²²»ÄÜÖ´ÐУ¬·ñÔò·´¶ø»á³ö´í£¬Ò²¾ÍÊÇ˵£¬sagaÖ´ÐÐCx²Ù×÷µÄǰÌáÊÇ·þÎñ·½È·ÊµÖ´ÐÐÁËTx²Ù×÷£¨³É¹¦»òʧ°Ü¾ù¿É£©£»µÚ¶þ£¬ÈçÉÏͼÖеÄÓÒͼËùʾ£¬ÊÂÎñ²Ù×÷T·¢³öºóÊÂÎñ²Ù×÷ÔÚÍøÂçÖгöÏÖÁ˽ϴóµÄÑÓʱ£¬´¥·¢ÁËsagaµÄ³¬Ê±»úÖÆ£¬Òò¶øÖ´ÐÐÁËÕýÏòÖØÊÔ£¬·¢ÏÖÖØÊÔʧ°Ü£¬½Ó×ÅÖ´Ðз´Ïò²¹³¥²Ù×÷C£¬µ±CÒѾִÐÐÍêÖ®ºó£¬×ʼµÄÊÂÎñ²Ù×÷T²Åµ½´ï·þÎñ·½¡£Õâ¸öʱºò£¬sagaÒªÇó×ʼµÄÊÂÎñ²Ù×÷T²»ÄÜÉúЧ£¬ÒòΪCÒѾÉúЧÁË¡£Ò²¾ÍÊÇ˵£¬sagaÒªÇó·þÎñÒ»µ©½ÓÊܲ¢Ö´ÐÐÁË·´Ïò²¹³¥²Ù×÷C£¬Ôò²»»áÔÙ´¦ÀíÓëÖ®¶ÔÓ¦µÄÕýÏò²Ù×÷¡£Õâô×öµÄÄ¿µÄÊÇΪÁË·ÀÖ¹Ïȵ½´ïµÄ·´Ïò²¹³¥²Ù×÷±»ºóµ½´ïµÄÕýÏòÊÂÎñ²Ù×÷¸ø¸²¸Çµô¡£Æäʵ³¡¾°¶þµÄʵÏÖÒÀÀµ³¡¾°Ò»ÖÐÌṩµÄ±£ÕÏ£¬ÒòΪʾÀýÖÐÕýÏòµÄÖØÊÔ²Ù×÷Ò²ÓпÉÄÜÎÞ·¨µ½´ï·þÎñ¶Ë£¬Õâ¾Í±ä³ÉÁ˳¡¾°Ò»ÁË¡£ÆäʵÕâ¸öÎÊÌâÔÚºóÃæ½éÉܵÄTCC·½°¸ÖÐÒ²»áÓöµ½£¬²¢ÐèÒª±»½â¾ö£¨ÓÐÐËȤ¿ÉÌáǰ¿´²Î¿¼²©¿Í20£©¡£
³ý´ËÖ®Í⣬²Î¿¼²©¿Í16Öл¹ËµÃ÷ÁËsagaģʽ±¾ÉíÖ»Ö§³ÖACIDÖеÄACD£¬¶øÎÞ·¨Ö§³Ö¸ôÀëÐÔ£¨¶øÈç¹ûÓñ¾ÎĵįÀÅбê×¼À´¿´£¬sagaÒ²ÎÞ·¨Ö»ÄÜÂú×ã׼ʵʱµÄÒ»ÖÂÐÔ£¬¶øÎÞ·¨Âú×ãǿһÖÂÐÔ£©¡£ÎªÁËÖ§³Ö¸ôÀëÐÔ£¬ÐèÒª¿¼ÂÇÔÚÒµÎñ²ã¼ÓÈëËø»úÖÆ»òÕßÀàËÆTCCµÄ·½Ê½£¬²ÉÓÃÔÚÒµÎñ²ãÔ¤Ïȶ³½á×ÊÔ´µÄ·½Ê½¶Ô×ÊÔ´½øÐиôÀë¡£
¹ØÓÚsagaģʽµÄ¸ôÀëÐÔÎÒ»¹Ïë²¹³ä˵Ã÷µÄÊÇ£¬ÒòΪsagaģʽµÄ±¾µØÊÂÎñÊÇÖ´ÐÐÍê¾ÍÁ¢¼´Ìá½»£¬¶ø²»Äܻعö£¬ÄÇôÔÚûÓиôÀëÐÔ±£ÕϵÄÇé¿öÏ£¬·´Ïò²¹³¥²Ù×÷ºÜ¿ÉÄÜÎÞ·¨Ö´Ðгɹ¦¡£±ÈÈç˵ÓÐAºÍBºÍCÈý¸öÕË»§£¬ÕË»§Óà¶î¶¼Îª100Ôª£¬Ö´ÐÐÈçÏÂÁ½¸ö²¢·¢ÊÂÎñ£º

С½á£ºsagaģʽµÄºËÐÄÔÀíÊÇ£¬½«Ò»¸öÈ«¾ÖÊÂÎñ·Ö³ÉÈô¸É¸öÄܶÀÁ¢Ìá½»µÄ±¾µØÊÂÎñ£¬Ã¿¸ö±¾µØÊÂÎñ¶¼¶ÔÓ¦Ò»¸ö·´Ïò²¹³¥²Ù×÷£¬µ±±¾µØÊÂÎñÌύʧ°Üºó£¬Í¨¹ý·´Ïò²¹³¥²Ù×÷À´È¡Ïû±¾µØÊÂÎñµÄÓ°Ïì¡£Ïà±ÈÓÚTCC£¬SagaȱÉÙÔ¤Áô¶¯×÷£¬µ¼ÖÂijЩҵÎñµÄ²¹³¥¶¯×÷µÄʵÏֱȽÏÂé·³£¬±ÈÈçÒµÎñÊÇ·¢ËÍÓʼþ£¬ÔÚTCCģʽÏ£¬Ïȱ£´æ²Ý¸å£¨Try£©ÔÙ·¢ËÍ£¨Confirm£©£¬³·ÏúµÄ»°Ö±½Óɾ³ý²Ý¸å£¨Cancel£©¾ÍÐÐÁË¡£¶øSagaÔò¾ÍÖ±½Ó·¢ËÍÓʼþÁË£¨Ti£©£¬Èç¹ûÒª³·ÏúÔòµÃÔÙ·¢ËÍÒ»·ÝÓʼþ˵Ã÷³·Ïú£¨Ci£©¡£µ±È»£¬¶ÔÓÚÁíÍâһЩ¼òµ¥ÒµÎñÀ´Ëµ£¬SagaûÓÐÔ¤Áô¶¯×÷Ò²¿ÉÒÔÈÏΪÊÇÓŵ㣨Ïê¼û²Î¿¼²©¿Í18£©£º
ÓÐЩҵÎñºÜ¼òµ¥£¬Ì×ÓÃTCCÐèÒªÐÞ¸ÄÔÀ´µÄÒµÎñÂß¼£¬¶øSagaÖ»ÐèÒªÌí¼ÓÒ»¸ö²¹³¥¶¯×÷¾ÍÐÐÁË¡£
TCC×îÉÙͨÐÅ´ÎÊýΪ2n£¬¶øSagaΪn£¨n=sub-transactionµÄÊýÁ¿£©¡£
ÓÐЩµÚÈý·½·þÎñûÓÐTry½Ó¿Ú£¬TCCģʽʵÏÖÆðÀ´¾Í±È½ÏtrickyÁË£¬¶øSagaÔòºÜ¼òµ¥¡£
ûÓÐÔ¤Áô¶¯×÷¾ÍÒâζ×Ų»±Øµ£ÐÄ×ÊÔ´ÊͷŵÄÎÊÌ⣬Òì³£´¦ÀíÆðÀ´Ò²¸ü¼òµ¥£¨Çë¶Ô±ÈSagaµÄ»Ö¸´²ßÂÔºÍTCCµÄÒì³£´¦Àí£©¡£
7¡¢»ùÓڸĽøXAÐÒéµÄ°¢ÀïGTS
GTS£¬×î³õÃûΪTXC£¬ÊÇTaobao Transaction ConstructorµÄËõд£¬ÓÚ2014Äê4ÔÂÁ¢Ï2014Äê10Ô·¢²¼ÁËTXC
1.0°æ±¾£¬2015Äê12Ô·¢²¼TXC 2.0°æ±¾£¬2017Äê2Ô°¢ÀïÔÆ¹«²â£¬Íⲿ¸üÃûΪGTS£¨Global
Transaction Service£©¡£2019Äê1Ô£¬°¢Àï·Ö²¼Ê½ÊÂÎñ¿ò¼ÜGTS¿ªÔ´ÁËÒ»¸öÃâ·ÑÉçÇø°æFescar¡£
Ç°ÃæÔÚ½éÉÜXA¹æ·¶µÄʱºòÌáµ½£¬Á½½×¶ÎÌá½»¹ý³Ì×ÊÔ´¶¼ÊÇ´¦ÓÚËø¶¨×´Ì¬£¬ÎªÁ˱ãÓڶԱȣ¬ÎÒÔÙ´ÎÌù³öXA¹æ·¶µÄÌύʾÒâͼ£¨²Î¿¼²©¿Í21£©£º

ÓÉͼ¿ÉÖª£¬ÎÞÂÛPhase2µÄ¾öÒéÊÇcommit»¹ÊÇrollback£¬ÊÂÎñÐÔ×ÊÔ´µÄËø¶¼Òª±£³Öµ½Phase2Íê³É²ÅÊÍ·Å¡£ÉèÏëÒ»¸öÕý³£ÔËÐеÄÒµÎñ£¬´ó¸ÅÂÊÊÇ90%ÒÔÉϵÄÊÂÎñ×îÖÕÓ¦¸ÃÊdzɹ¦Ìá½»µÄ£¬ÎÒÃÇÊÇ·ñ¿ÉÒÔÔÚ
Phase1 ¾Í½«±¾µØÊÂÎñÌá½»ÄØ£¿ÕâÑù 90% ÒÔÉϵÄÇé¿öÏ£¬¿ÉÒÔʡȥ Phase2 ³ÖËøµÄʱ¼ä£¬ÕûÌåÌá¸ßЧÂÊ¡£

·ÖÖ§ÊÂÎñÖÐÊý¾ÝµÄ ±¾µØËø Óɱ¾µØÊÂÎñ¹ÜÀí£¬ÔÚ·ÖÖ§ÊÂÎñ Phase1 ½áÊøÊ±ÊÍ·Å¡£
ͬʱ£¬Ëæ×ű¾µØÊÂÎñ½áÊø£¬Á¬½Ó Ò²µÃÒÔÊÍ·Å¡£
·ÖÖ§ÊÂÎñÖÐÊý¾ÝµÄ È«¾ÖËø£¨Ïê¼û²Î¿¼²©¿Í25£© ÔÚÊÂÎñе÷Æ÷²à¹ÜÀí£¬ÔÚ¾öÒé Phase2 È«¾ÖÌύʱ£¬È«¾ÖËøÂíÉÏ¿ÉÒÔÊÍ·Å¡£Ö»ÓÐÔÚ¾öÒéÈ«¾Ö»Ø¹öµÄÇé¿öÏ£¬È«¾ÖËø
²Å±»³ÖÓÐÖÁ·ÖÖ§µÄ Phase2 ½áÊø¡£
Õâ¸öÉè¼Æ£¬¼«´óµØ¼õÉÙÁË·ÖÖ§ÊÂÎñ¶Ô×ÊÔ´£¨Êý¾ÝºÍÁ¬½Ó£©µÄËø¶¨Ê±¼ä£¬¸øÕûÌå²¢·¢ºÍÍÌ͵ÄÌáÉýÌṩÁË»ù´¡¡£
µ±È»£¬Äã¿Ï¶¨»áÎÊ£ºPhase1 ¼´Ìá½»µÄÇé¿öÏ£¬Phase2 ÈçºÎ»Ø¹öÄØ£¿Ê×ÏÈ£¬Ó¦ÓÃÐèҪʹÓà Fescar
µÄ JDBC Êý¾ÝÔ´´úÀí£¬Ò²¾ÍÊÇ Fescar µÄ RM¡£

Phase1£º
Fescar µÄ JDBC Êý¾ÝÔ´´úÀíͨ¹ý¶ÔÒµÎñ SQL µÄ½âÎö£¬°ÑÒµÎñÊý¾ÝÔÚ¸üÐÂǰºóµÄÊý¾Ý¾µÏñ×éÖ¯³É»Ø¹öÈÕÖ¾£¬ÀûÓñ¾µØÊÂÎñµÄ
ACID ÌØÐÔ£¬½«ÒµÎñÊý¾ÝµÄ¸üкͻعöÈÕÖ¾µÄдÈëÔÚͬһ¸ö±¾µØÊÂÎñÖÐÌá½»¡£
ÕâÑù£¬¿ÉÒÔ±£Ö¤£ºÈκÎÌá½»µÄÒµÎñÊý¾ÝµÄ¸üÐÂÒ»¶¨ÓÐÏàÓ¦µÄ»Ø¹öÈÕÖ¾´æÔÚ¡£

»ùÓÚÕâÑùµÄ»úÖÆ£¬·ÖÖ§µÄ±¾µØÊÂÎñ±ã¿ÉÒÔÔÚÈ«¾ÖÊÂÎñµÄ Phase1 Ìá½»£¬ÂíÉÏÊͷű¾µØÊÂÎñËø¶¨µÄ×ÊÔ´¡£
Phase2£º
Èç¹û¾öÒéÊÇÈ«¾ÖÌá½»£¬´Ëʱ·ÖÖ§ÊÂÎñ´ËʱÒѾÍê³ÉÌá½»£¬²»ÐèҪͬ²½Ðµ÷´¦Àí£¨Ö»ÐèÒªÒì²½ÇåÀí»Ø¹öÈÕÖ¾£©£¬Phase2
¿ÉÒԷdz£¿ìËÙµØÍê³É¡£

Èç¹û¾öÒéÊÇÈ«¾Ö»Ø¹ö£¬RM ÊÕµ½Ðµ÷Æ÷·¢À´µÄ»Ø¹öÇëÇó£¬Í¨¹ý XID ºÍ Branch ID ÕÒµ½ÏàÓ¦µÄ»Ø¹öÈÕÖ¾¼Ç¼£¬Í¨¹ý»Ø¹ö¼Ç¼Éú³É·´ÏòµÄ¸üÐÂ
SQL ²¢Ö´ÐУ¬ÒÔÍê³É·ÖÖ§µÄ»Ø¹ö¡£

ÓÉ´Ë¿ÉÖª£¬FescarµÄºËÐÄÔÀíÊÇ£¬¶ÔÒµÎñSQL½øÐнâÎö£¬°ÑÒµÎñÊý¾ÝÔÚ¸üÐÂǰºóµÄÊý¾Ý¾µÏñ×éÖ¯³É»Ø¹öÈÕÖ¾£¬ÀûÓñ¾µØÊÂÎñµÄACIDÌØÐÔ£¬½«ÒµÎñÊý¾ÝµÄ¸üкͻعöÈÕÖ¾µÄдÈëÔÚͬһ¸ö±¾µØÊÂÎñÖÐÌá½»¡£³ý´ËÖ®Í⣬ΪÁ˱£Ö¤·Ö²¼Ê½ÊÂÎñµÄ¸ôÀëÐÔ£¬ÔÚÊÂÎñе÷Æ÷²à»¹Ôö¼ÓÁËÒ»°ÑÈ«¾ÖËø£¬ÒÔ±£Ö¤»Ø¹öÈÕÖ¾µÃÒÔ˳ÀûÖ´ÐУ¨¿ÉÒԻعýÍ·ÔÙ¿´¿´Saga·½°¸ÖÐÁоٵĻعöʧ°ÜµÄʾÀý£©¡£
С½á£ºÒÔACIDÀ´ºâÁ¿Fescar¿ÉÖª£¬¸Ã·½°¸Äܱ£Ö¤AIDÌØÐÔ£¬ÒÔ¼°×¼ÊµÊ±µÄ×îÖÕÒ»ÖÂÐÔ¡£Êµ¼ÊÉÏ£¬¶ÔÓÚ·Ö²¼Ê½ÏµÍ³£¬Èç¹û·Ö²¼Ê½·½°¸ÄÜͬʱ±£Ö¤AIDÌØÐÔÒÔºÍ׼ʵʱµÄ×îÖÕÒ»ÖÂÐÔ£¬¾ÍµÈ¼ÛÓÚÄܱ£Ö¤Ôöɾ¸Ä²Ù×÷µÄACIDÌØÐÔ£¬¶øÖÁÓÚ²éѯ²Ù×÷£¬¿ÉÄÜ»á¶ÁÈ¡µ½ÊÂÎñÖмä״̬µÄÊý¾Ý£¬ÕâÔÚ¾ø´ó¶àÊýÒµÎñ³¡¾°Öж¼ÊÇÄܽÓÊܵġ£¶øÇÒÇ°ÃæÒ²½²ÁË£¬¶ÔÓÚÏñÒøÐÐÒµÎñµÈ¶ÔÒ»ÖÂÐÔÓм«ÖÂÒªÇóµÄ¼«¶Ë³¡¾°£¬Ò²¿ÉÒÔͨ¹ýÔÚÒµÎñϵͳÖÐʹÓ÷ֲ¼Ê½Ëø»òÕß·Ö²¼Ê½¶ÓÁÐÀ´±£Ö¤¡£
´ËÍ⣬¶Ô±ÈTCCºÍFescar¿ÉÖª£¬TCCÎÞÂÛÊÂÎñ×îÖÕÊÇÌá½»»¹Êǻعö£¬±¾ÖÊÉ϶¼ÐèÒª¶Ôͬһ¸ö×ÊÔ´Ö´ÐÐÁ½´Î²Ù×÷£¬Ò»´ÎÊÇtry£¬ÁíÒ»´ÎÊÇconfirm»òÕßcancel£»¶ø¶ÔÓÚFescarÀ´Ëµ£¬´ó¶àÊýÇé¿öÏ£¬·Ö²¼Ê½ÊÂÎñ¶¼²»ÐèÒª»Ø¹ö£¬¶ø¶ÔÓÚ²»ÐèÒª»Ø¹öµÄ·Ö²¼Ê½ÊÂÎñ£¬Ã¿¸ö×ÊÔ´Ö»ÐèÒªÖ´ÐÐÒ»´Î²Ù×÷¡£´ÓÕâ¸ö½Ç¶ÈÀ´Ëµ£¬FescarµÄƽ¾ùÐÔÄܽ«±ÈTCC¸ü¸ß¡£
×ܽá
»ùÓÚ¿É¿¿ÏûÏ¢Öмä¼þµÄ·Ö²¼Ê½·½°¸µÄºËÐÄÔÀíÊǶԷ¢Ë͵½ÏûÏ¢Öмä¼þµÄÏûÏ¢½øÐС°Á½½×¶ÎÌá½»¡±£¬¼´ÏÈÌá½»£¬Ö´ÐÐÍê±¾µØÊÂÎñºóÔÙÈ·ÈÏÏûÏ¢¡£Í¨¹ýÕâÑùµÄ»úÖÆ£¬¸øÊÂÎñµÄ»Ø¹öÌṩÁË¿ÉÄÜ¡£¸Ã·½°¸Äܱ£Ö¤ÊÂÎñµÄ×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬µ«ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔ¡£»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½·½°¸ÊÊÓÃÓÚ¶ÔÒµÎñµÄʵʱһÖÂÐÔÒÔ¼°ÊÂÎñµÄ¸ôÀëÐÔÒªÇó¶¼²»¸ßµÄϵͳ¡£
×î´óŬÁ¦³¢ÊÔ·½°¸µÄºËÐÄÔÀíÊÇÒÀ¿¿¶îÍâµÄУ¶Ôϵͳ»òÕß±¨¾¯ÏµÍ³À´±£Ö¤·Ö²¼Ê½ÊÂÎñ¡£¸Ã·½°¸Äܱ£Ö¤ÊÂÎñµÄ×îÖÕÔ×ÓÐԺͳ־ÃÐÔ£¬µ«ÎÞ·¨±£Ö¤Ò»ÖÂÐԺ͸ôÀëÐÔ¡£»ùÓÚ¿É¿¿ÏûÏ¢·þÎñµÄ·Ö²¼Ê½·½°¸ÊÊÓÃÓÚ¶ÔÒµÎñµÄʵʱһÖÂÐÔÒÔ¼°ÊÂÎñµÄ¸ôÀëÐÔÒªÇó¶¼²»¸ßµÄϵͳ¡£
TX-LCN·½°¸µÄºËÐÄÔÀíÊÇͨ¹ýе÷±¾µØÊÂÎñÀ´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ£¬·Ö²¼Ê½ÊÂÎñµÄʵÏÖÒÀÀµÓÚ±¾µØÊÂÎñ¡£Ò»°ãÀ´Ëµ£¬Èç¹û±¾µØÊÂÎñ¶¼Äܱ£Ö¤ACID£¬ÄÇô»ùÓÚLCNµÄ·Ö²¼Ê½ÊÂÎñÒ²ÄÜÂú×ãAID£¬¶ø²»ÄÜÂú×ãÒ»ÖÂÐÔ¡£TX-LCNʵÏÖÏà¶Ô¼òµ¥£¬µ«ÊÂÎñ¶Ô×ÊÔ´µÄËø¶¨Ê±¼ä³¤£¬Òò¶øÊÊÓÃÓÚ¶Ô²¢·¢ÐÔÄÜÒªÇ󲻸ߵij¡¾°¡£
X/Open DTPµÄºËÐÄÔÀíÊÇ»ùÓÚÁ½½×¶ÎÌá½»£¨XA¹æ·¶£©£¬Í¨¹ýÔÚÕû¸öÌá½»¹ý³ÌÖжÔ×ÊÔ´½øÐÐËø¶¨À´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ£¬ÄܺܺõØÂú×ãAIDÌØÐÔ£¬ÒÔ¼°×¼ÊµÊ±µÄ×îÖÕÒ»ÖÂÐÔ¡£ÓÉÓڸ÷½°¸¶Ô×ÊÔ´µÄËø¶¨Ê±¼ä³¤£¬Òò¶øÊÊÓÃÓÚ¶Ô²¢·¢ÐÔÄÜÒªÇ󲻸ߵij¡¾°¡£
TCCµÄºËÐÄÔÀíÊÇ£¬ÔÚ·Ö²¼Ê½ÊÂÎñ²Ù×÷ÖУ¬ÏȽ«ËùÐè×ÊÔ´Ô¤Õ¼£¬È»ºó½«ËøÊÍ·Å£¬×îºóÔÙ¸ù¾Ý×ÊÔ´Ô¤Õ¼µÄÇé¿öÀ´¾ö¶¨Ê¹ÓÃ×ÊÔ´»¹ÊÇÍË»Ø×ÊÔ´¡£Ïà±ÈÓÚXA¹æ·¶£¬TCC·½°¸²ÉÓÃÔ¤Áô×ÊÔ´µÄ·½Ê½£¬½«Á½½×¶ÎÌá½»¹ý³ÌÖеÄÈ«¾ÖËø·Ö³ÉÁËÁ½¶Î±¾µØÊÂÎñËø£¬Ëõ¶ÌÁË·Ö²¼Ê½×ÊÔ´Ëø¶¨µÄʱ¼ä£¬´Ó¶øÌá¸ßÁËÊÂÎñµÄ²¢·¢¶È¡£
sagaģʽµÄºËÐÄÔÀíÊÇ£¬½«Ò»¸öÈ«¾ÖÊÂÎñ·Ö³ÉÈô¸É¸öÄܶÀÁ¢Ìá½»µÄ±¾µØÊÂÎñ£¬Ã¿¸ö±¾µØÊÂÎñ¶¼¶ÔÓ¦Ò»¸ö·´Ïò²¹³¥²Ù×÷£¬µ±±¾µØÊÂÎñÌύʧ°Üºó£¬Í¨¹ý·´Ïò²¹³¥²Ù×÷À´È¡Ïû±¾µØÊÂÎñµÄÓ°Ïì¡£Ïà±ÈÓÚTCC£¬SagaȱÉÙÔ¤Áô¶¯×÷£¬µ¼ÖÂijЩҵÎñµÄ²¹³¥¶¯×÷µÄʵÏֱȽÏÂé·³£¬±ÈÈçÒµÎñÊÇ·¢ËÍÓʼþ£¬µ«¶ÔÓÚÁíÍâһЩ¼òµ¥ÒµÎñÀ´Ëµ£¬SagaûÓÐÔ¤Áô¶¯×÷µÄÌØÐÔ½µµÍÁËÀÏϵͳ½ÓÈëSaga·½°¸µÄ³É±¾¡£
FescarµÄºËÐÄÔÀíÊÇ£¬¶ÔÒµÎñSQL½øÐнâÎö£¬°ÑÒµÎñÊý¾ÝÔÚ¸üÐÂǰºóµÄÊý¾Ý¾µÏñ×éÖ¯³É»Ø¹öÈÕÖ¾£¬ÀûÓñ¾µØÊÂÎñµÄACIDÌØÐÔ£¬½«ÒµÎñÊý¾ÝµÄ¸üкͻعöÈÕÖ¾µÄдÈëÔÚͬһ¸ö±¾µØÊÂÎñÖÐÌá½»¡£´ËÍ⣬ΪÁ˱£Ö¤·Ö²¼Ê½ÊÂÎñµÄ¸ôÀëÐÔ£¬ÔÚÊÂÎñе÷Æ÷²à»¹Ôö¼ÓÁËÒ»°ÑÈ«¾ÖËø£¬ÒÔ±£Ö¤»Ø¹öÈÕÖ¾µÃÒÔ˳ÀûÖ´ÐС£
|