| ±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬±¾ÕÂÖ÷Òª½éÉÜÁË·Ö²¼Ê½ÊÂÎï¸ÅÄîÓë·Ö²¼Ê½ÊÂÎï²úÉúÔÒò£¬ÒÔ¼°·Ö²¼Ê½ÊÂÎïÀíÂÛ֪ʶºÍ½â¾ö·½°¸£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
|
|
ÊÂÎï¸ÅÄî
ÊÂÎïÌØÐÔ(ACID)
Ô×ÓÐÔ£¨A£©
ËùνµÄÔ×ÓÐÔ¾ÍÊÇ˵£¬ÔÚÕû¸öÊÂÎñÖеÄËùÓвÙ×÷£¬ÒªÃ´È«²¿Íê³É£¬ÒªÃ´È«²¿²»×ö£¬Ã»ÓÐÖмä״̬¡£¶ÔÓÚÊÂÎñÔÚÖ´ÐÐÖз¢Éú´íÎó£¬ËùÓеIJÙ×÷¶¼»á±»»Ø¹ö£¬Õû¸öÊÂÎñ¾ÍÏñ´Óû±»Ö´ÐйýÒ»Ñù¡£
Ò»ÖÂÐÔ£¨C£©
ÊÂÎñµÄÖ´ÐбØÐ뱣֤ϵͳµÄÒ»ÖÂÐÔ£¬¾ÍÄÃתÕËΪÀý£¬AÓÐ500Ôª£¬BÓÐ300Ôª£¬Èç¹ûÔÚÒ»¸öÊÂÎñÀïA³É¹¦×ª¸øB50Ôª£¬ÄÇô²»¹Ü²¢·¢¶àÉÙ£¬²»¹Ü·¢Éúʲô£¬Ö»ÒªÊÂÎñÖ´Ðгɹ¦ÁË£¬ÄÇô×îºóAÕË»§Ò»¶¨ÊÇ450Ôª£¬BÕË»§Ò»¶¨ÊÇ350Ôª¡£
¸ôÀëÐÔ£¨I£©
ËùνµÄ¸ôÀëÐÔ¾ÍÊÇ˵£¬ÊÂÎñÓëÊÂÎñÖ®¼ä²»»á»¥ÏàÓ°Ï죬һ¸öÊÂÎñµÄÖмä״̬²»»á±»ÆäËûÊÂÎñ¸ÐÖª¡£
³Ö¾ÃÐÔ£¨D£©
ËùνµÄ³Ö¾ÃÐÔ£¬¾ÍÊÇ˵һµ¥ÊÂÎñÍê³ÉÁË£¬ÄÇôÊÂÎñ¶ÔÊý¾ÝËù×öµÄ±ä¸ü¾ÍÍêÈ«±£´æÔÚÁËÊý¾Ý¿âÖУ¬¼´Ê¹·¢ÉúÍ£µç£¬ÏµÍ³å´»úÒ²ÊÇÈç´Ë¡£
ÕâÖÖÌØÐÔ ¼ò³Æ ¸ÕÐÔÊÂÎï
·Ö²¼Ê½ÊÂÎï
·Ö²¼Ê½ÊÂÎï²úÉúÔÒò

·Ö²¼Ê½ÊÂÎï²úÉúµÄÔÒò

·Ö²¼Ê½ÊÂÎñ²úÉúµÄ³¡¾°
ÔÚ·Ö²¼Ê½ÏµÍ³£¬¶¼»á´¹Ö±²ð·ÖÊý¾Ý¿â£¬·ÖΪ֧¸¶Êý¾Ý¿â¡¢¶©µ¥Êý¾Ý¿â¡¢»ý·ÖÊý¾Ý¿â¡¢ÓÅ»ÝÈ«Êý¾Ý¿âµÈ£¬ÒµÎñ×é³É£¬·ÖΪ¶à¸öÊý¾ÝÔ´£¬»á²úÉú·Ö²¼Ê½ÊÂÎïÎÊÌâ¡£
springÊÂÎñºÍ·Ö²¼Ê½ÊÂÎñµÄÇø±ðÊÇʲô
springÊÂÎñ£¬±¾µØÊÂÎñ
·Ö²¼Ê½ÊÂÎñÊÇ¿ç·þÎñ¼äµÄͨѶ£¨²»Í¬µÄÊý¾Ý¿âÁ¬½Ó£©
·Ö²¼Ê½ÀíÂÛ֪ʶ
CPAÀíÂÛ

CAPÓÉEric BrewerÔÚ2000ÄêPODC»áÒéÉÏÌá³ö[1][2]£¬ÊÇEric BrewerÔÚInktomi[3]ÆÚ¼äÑз¢ËÑË÷ÒýÇæ¡¢·Ö²¼Ê½web»º´æÊ±µÃ³öµÄ¹ØÓÚÊý¾ÝÒ»ÖÂÐÔ(consistency)¡¢·þÎñ¿ÉÓÃÐÔ(availability)¡¢·ÖÇøÈÝ´íÐÔ(partition-tolerance)µÄ²ÂÏ룺
Êý¾ÝÒ»ÖÂÐÔ(consistency)£ºÈç¹ûϵͳ¶ÔÒ»¸öд²Ù×÷·µ»Ø³É¹¦£¬ÄÇô֮ºóµÄ¶ÁÇëÇó¶¼±ØÐë¶Áµ½Õâ¸öÐÂÊý¾Ý£»Èç¹û·µ»ØÊ§°Ü£¬ÄÇôËùÓжÁ²Ù×÷¶¼²»ÄܶÁµ½Õâ¸öÊý¾Ý£¬¶Ôµ÷ÓÃÕß¶øÑÔÊý¾Ý¾ßÓÐǿһÖÂÐÔ(strong
consistency) (ÓÖ½ÐÔ×ÓÐÔ atomic¡¢ÏßÐÔÒ»ÖÂÐÔ linearizable consistency)[5]
·þÎñ¿ÉÓÃÐÔ(availability)£ºËùÓжÁдÇëÇóÔÚÒ»¶¨Ê±¼äÄڵõ½ÏìÓ¦£¬¿ÉÖÕÖ¹¡¢²»»áÒ»Ö±µÈ´ý
·ÖÇøÈÝ´íÐÔ(partition-tolerance)£ºÔÚÍøÂç·ÖÇøµÄÇé¿öÏ£¬±»·Ö¸ôµÄ½ÚµãÈÔÄÜÕý³£¶ÔÍâ·þÎñ
BaseÀíÂÛ
BASEÀíÂÛÊÇÖ¸£¬Basically Available£¨»ù±¾¿ÉÓã©¡¢Soft-state£¨ Èí״̬/ÈáÐÔÊÂÎñ£©¡¢Eventual
Consistency£¨×îÖÕÒ»ÖÂÐÔ£©¡£ÊÇ»ùÓÚCAP¶¨ÀíÑÝ»¯¶øÀ´£¬ÊǶÔCAPÖÐÒ»ÖÂÐԺͿÉÓÃÐÔȨºâµÄ½á¹û¡£ºËÐÄ˼Ï룺¼´Ê¹ÎÞ·¨×öµ½Ç¿Ò»ÖÂÐÔ£¬µ«Ã¿¸öÒµÎñ¸ù¾Ý×ÔÉíµÄÌØµã£¬²ÉÓÃÊʵ±µÄ·½Ê½À´Ê¹ÏµÍ³´ïµ½×îÖÕÒ»ÖÂÐÔ¡£
1¡¢»ù±¾¿ÉÓãºÖ¸·Ö²¼Ê½ÏµÍ³ÔÚ³öÏÖ¹ÊÕϵÄʱºò£¬ÔÊÐíËðʧ²¿·Ö¿ÉÓÃÐÔ£¬±£Ö¤ºËÐÄ¿ÉÓᣵ«²»µÈ¼ÛÓÚ²»¿ÉÓᣱÈÈ磺ËÑË÷ÒýÇæ0.5Ãë·µ»Ø²éѯ½á¹û£¬µ«ÓÉÓÚ¹ÊÕÏ£¬2ÃëÏìÓ¦²éѯ½á¹û£»ÍøÒ³·ÃÎʹý´óʱ£¬²¿·ÖÓû§Ìṩ½µ¼¶·þÎñ£¬µÈ¡£
2¡¢Èí״̬£ºÈí״̬ÊÇÖ¸ÔÊÐíϵͳ´æÔÚÖмä״̬£¬²¢ÇÒ¸ÃÖмä״̬²»»áÓ°ÏìϵͳÕûÌå¿ÉÓÃÐÔ¡£¼´ÔÊÐíϵͳÔÚ²»Í¬½Úµã¼ä¸±±¾Í¬²½µÄʱºò´æÔÚÑÓʱ¡£
3¡¢×îÖÕÒ»ÖÂÐÔ£º
ϵͳÖеÄËùÓÐÊý¾Ý¸±±¾¾¹ýÒ»¶¨Ê±¼äºó£¬×îÖÕÄܹ»´ïµ½Ò»ÖµÄ״̬£¬²»ÐèҪʵʱ±£Ö¤ÏµÍ³Êý¾ÝµÄǿһÖÂÐÔ¡£×îÖÕÒ»ÖÂÐÔÊÇÈõÒ»ÖÂÐÔµÄÒ»ÖÖÌØÊâÇé¿ö¡£BASEÀíÂÛÃæÏòµÄÊÇ´óÐ͸߿ÉÓÿÉÀ©Õ¹µÄ·Ö²¼Ê½ÏµÍ³£¬Í¨¹ýÎþÉüǿһÖÂÐÔÀ´»ñµÃ¿ÉÓÃÐÔ¡£ACIDÊÇ´«Í³Êý¾Ý¿â³£ÓõĸÅÄîÉè¼Æ£¬×·ÇóǿһÖÂÐÔÄ£ÐÍ¡£
ACID£¬Ö¸Êý¾Ý¿âÊÂÎñÕýÈ·Ö´ÐеÄËĸö»ù±¾ÒªËصÄËõд¡£°üº¬£ºÔ×ÓÐÔ£¨Atomicity£©¡¢Ò»ÖÂÐÔ£¨Consistency£©¡¢¸ôÀëÐÔ£¨Isolation£©¡¢³Ö¾ÃÐÔ£¨Durability£©¡£
ÈáÐÔÊÂÎñºÍ¸ÕÐÔÊÂÎñ
ÈáÐÔÊÂÎñÂú×ãBASEÀíÂÛ£¨»ù±¾¿ÉÓã¬×îÖÕÒ»Ö£©
¸ÕÐÔÊÂÎñÂú×ãACIDÀíÂÛ
±¾ÎÄÖ÷ÒªÎ§ÈÆ·Ö²¼Ê½ÊÂÎñµ±ÖеÄÈáÐÔÊÂÎñµÄ´¦Àí·½Ê½½øÐÐÌÖÂÛ¡£
ÈáÐÔÊÂÎñ·ÖΪ
1.Á½½×¶ÎÐÍ
2.²¹³¥ÐÍ
3.Ò첽ȷ±£ÐÍ
4.×î´óŬÁ¦Í¨ÖªÐͼ¸ÖÖ¡£ ÓÉÓÚÖ§¸¶±¦Õû¸ö¼Ü¹¹ÊÇSOA¼Ü¹¹£¬Òò´Ë´«Í³µ¥»ú»·¾³ÏÂÊý¾Ý¿âµÄACIDÊÂÎñÂú×ãÁË·Ö²¼Ê½»·¾³ÏµÄÒµÎñÐèÒª£¬ÒÔÉϼ¸ÖÖÊÂÎñÀàËÆ¾ÍÊÇÕë¶Ô·Ö²¼Ê½»·¾³ÏÂÒµÎñÐèÒªÉ趨µÄ¡£
ʲôÊÇXA½Ó¿Ú
XAÊÇÒ»¸ö·Ö²¼Ê½ÊÂÎñÐÒ飬ÓÉTuxedoÌá³ö¡£XAÖдóÖ·ÖΪÁ½²¿·Ö£ºÊÂÎñ¹ÜÀíÆ÷ºÍ±¾µØ×ÊÔ´¹ÜÀíÆ÷¡£ÆäÖб¾µØ×ÊÔ´¹ÜÀíÆ÷ÍùÍùÓÉÊý¾Ý¿âʵÏÖ£¬±ÈÈçOracle¡¢DB2ÕâЩÉÌÒµÊý¾Ý¿â¶¼ÊµÏÖÁËXA½Ó¿Ú£¬¶øÊÂÎñ¹ÜÀíÆ÷×÷Ϊȫ¾ÖµÄµ÷¶ÈÕߣ¬¸ºÔð¸÷¸ö±¾µØ×ÊÔ´µÄÌá½»ºÍ»Ø¹ö¡£XAʵÏÖ·Ö²¼Ê½ÊÂÎñµÄÔÀíÈçÏ£º

ʲôÊÇJta
×÷Ϊjavaƽ̨ÉÏÊÂÎñ¹æ·¶JTA£¨Java Transaction API£©Ò²¶¨ÒåÁ˶ÔXAÊÂÎñµÄÖ§³Ö£¬Êµ¼ÊÉÏ£¬JTAÊÇ»ùÓÚXA¼Ü¹¹ÉϽ¨Ä£µÄ£¬ÔÚJTA
ÖУ¬ÊÂÎñ¹ÜÀíÆ÷³éÏóΪjavax.transaction.TransactionManager½Ó¿Ú£¬²¢Í¨¹ýµ×²ãÊÂÎñ·þÎñ£¨¼´JTS£©ÊµÏÖ¡£ÏñºÜ¶àÆäËûµÄjava¹æ·¶Ò»Ñù£¬JTA½ö½ö¶¨ÒåÁ˽ӿڣ¬¾ßÌåµÄʵÏÖÔòÊÇÓɹ©Ó¦ÉÌ(ÈçJ2EE³§ÉÌ)¸ºÔðÌṩ£¬Ä¿Ç°JTAµÄʵÏÖÖ÷ÒªÓÉÒÔϼ¸ÖÖ£º
1.J2EEÈÝÆ÷ËùÌṩµÄJTAʵÏÖ(JBoss)
2.¶ÀÁ¢µÄJTAʵÏÖ:ÈçJOTM£¬Atomikos.ÕâЩʵÏÖ¿ÉÒÔÓ¦ÓÃÔÚÄÇЩ²»Ê¹ÓÃJ2EEÓ¦Ó÷þÎñÆ÷µÄ»·¾³ÀïÓÃÒÔÌṩ·Ö²¼ÊÂÊÂÎñ±£Ö¤¡£ÈçTomcat,JettyÒÔ¼°ÆÕͨµÄjavaÓ¦Óá£
»ùÓÚXAÐÒéµÄÁ½½×¶Î£¨2PC£©Ìá½»
ËùνµÄÁ½¸ö½×¶ÎÊÇÖ¸£ºµÚÒ»½×¶Î£º×¼±¸½×¶Î(ͶƱ½×¶Î)ºÍµÚ¶þ½×¶Î£ºÌá½»½×¶Î£¨Ö´Ðн׶Σ©¡£
XAÒ»°ãÓÉÁ½½×¶ÎÍê³É£¬³ÆÎªtwo-phase commit(2PC)¡£
½×¶ÎһΪ׼±¸½×¶Î£¬¼´ËùÓеIJÎÓëÕß×¼±¸Ö´ÐÐÊÂÎñ²¢Ëø×¡ÐèÒªµÄ×ÊÔ´¡£²ÎÓëÕßreadyʱ£¬Ïòtransaction
manager»ã±¨×Ô¼ºÒѾ׼±¸ºÃ¡£
½×¶Î¶þΪÌá½»½×¶Î¡£µ±transaction managerÈ·ÈÏËùÓвÎÓëÕß¶¼readyºó£¬ÏòËùÓвÎÓëÕß·¢ËÍcommitÃüÁî¡£
ÈçÏÂͼËùʾ£º

XAµÄÐÔÄÜÎÊÌâ
XAµÄÐÔÄܺܵ͡£Ò»¸öÊý¾Ý¿âµÄÊÂÎñºÍ¶à¸öÊý¾Ý¿â¼äµÄXAÊÂÎñÐÔÄܶԱȿɷ¢ÏÖ£¬ÐÔÄܲî10±¶×óÓÒ¡£Òò´ËÒª¾¡Á¿±ÜÃâXAÊÂÎñ£¬ÀýÈç¿ÉÒÔ½«Êý¾ÝдÈë±¾µØ£¬ÓøßÐÔÄܵÄÏûϢϵͳ·Ö·¢Êý¾Ý¡£»òʹÓÃÊý¾Ý¿â¸´ÖƵȼ¼Êõ¡£
Ö»ÓÐÔÚÕâЩ¶¼ÎÞ·¨ÊµÏÖ£¬ÇÒÐÔÄܲ»ÊÇÆ¿¾±Ê±²ÅÓ¦¸ÃʹÓÃXA¡£
·Ö²¼Ê½ÊÂÎï½â¾ö·½°¸
·Ö²¼Ê½ÊÂÎïÎÊÌ⣬ÔÚ»¥ÁªÍø¹«Ë¾±È½Ï³£¼û£¬ÀýÈç¡°¡±·Ö²¼Ê½ÊÂÎï½â¾ö·½°¸ ¿ÉÒÔʹÓÃÈ«¾ÖÊÂÎï2pc£¨Á½¶ÎÌá½»ÐÒ飩¡¢3pc(Èý¶ÎÌá½»ÐÒé)£¬ÏûÏ¢Öмä¼þ¡¢tcc¡¢gts¡¢Ìṩ»Ø¹ö½Ó¿Ú¡¢·Ö²¼Ê½Êý¾Ý¿â
2PCºÍ3PCÇø±ð£º
LCN ºËÐIJÉÓÃ3PC+TCC²¹³¥»úÖÆ
ʹÓÃLCN¿ò¼Ü½â¾ö·Ö²¼Ê½ÊÂÎñ
ʲôÊÇLCN¿ò¼Ü
LCN·Ö²¼Ê½ÊÂÎñ¿ò¼Üv4.0 https://www.txlcn.org
"LCN²¢²»Éú²úÊÂÎñ£¬LCNÖ»ÊDZ¾µØÊÂÎñµÄ°áÔ˹¤"
¿ò¼ÜÌØµã
¼æÈÝSpringCloud¡¢Dubbo
ʹÓüòµ¥£¬µÍÒÀÀµ£¬´úÂëÍêÈ«¿ªÔ´
»ùÓÚÇÐÃæµÄǿһÖÂÐÔÊÂÎñ¿ò¼Ü
¸ß¿ÉÓã¬Ä£¿é¿ÉÒÔÒÀÀµDubbo»òSpringCloudµÄ¼¯Èº·½Ê½×ö¼¯Èº»¯£¬TxManagerÒ²¿ÉÒÔ×ö¼¯Èº»¯
Ö§³Ö±¾µØÊÂÎñºÍ·Ö²¼Ê½ÊÂÎñ¹²´æ
ÊÂÎñ²¹³¥»úÖÆ£¬·þÎñ¹ÊÕÏ»ò¹Ò»úÔÙÆô¶¯Ê±¿É»Ö¸´ÊÂÎñ
LCN¿ò¼ÜÔÀí

lcn¿ò¼ÜÔÀí
ºËÐIJ½Öè
´´½¨ÊÂÎñ×é ÊÇÖ¸ÔÚÊÂÎñ·¢Æð·½¿ªÊ¼Ö´ÐÐÒµÎñ´úÂë֮ǰÏȵ÷ÓÃTxManager´´½¨ÊÂÎñ×é¶ÔÏó£¬È»ºóÄõ½ÊÂÎñ±êʾGroupIdµÄ¹ý³Ì¡£
Ìí¼ÓÊÂÎñ×é Ìí¼ÓÊÂÎñ×éÊÇÖ¸²ÎÓë·½ÔÚÖ´ÐÐÍêÒµÎñ·½·¨ÒԺ󣬽«¸ÃÄ£¿éµÄÊÂÎñÐÅÏ¢Ìí¼Ó֪ͨ¸øTxManagerµÄ²Ù×÷¡£
¹Ø±ÕÊÂÎñ×é ÊÇÖ¸ÔÚ·¢Æð·½Ö´ÐÐÍêÒµÎñ´úÂëÒԺ󣬽«·¢Æð·½Ö´Ðнá¹û״̬֪ͨ¸øTxManagerµÄ¶¯×÷¡£µ±Ö´ÐÐÍê¹Ø±ÕÊÂÎñ×éµÄ·½·¨ÒÔºó£¬TxManager½«¸ù¾ÝÊÂÎñ×éÐÅÏ¢À´Í¨ÖªÏàÓ¦µÄ²ÎÓëÄ£¿éÌá½»»ò»Ø¹öÊÂÎñ¡£
|