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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
TX-LCN·Ö²¼Ê½ÊÂÎñDemoʵս

 
  3122  次浏览      27
 2019-9-29
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬±¾ÆªÎÄÕÂÖ÷Òª½éÉÜÁË·Ö²¼Ê½ÊÂÎïʵսµÄÔ­ÀíºÍÊÂÎñģʽ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

1.1. Ô­Àí½éÉÜ

1.1.1. ÊÂÎñ¿ØÖÆÔ­Àí

TX-LCNÓÉÁ½´óÄ£¿é×é³É, TxClient¡¢TxManager£¬TxClient×÷Ϊģ¿éµÄÒÀÀµ¿ò¼Ü£¬ ÌṩTX-LCNµÄ±ê×¼Ö§³Ö£¬TxManager×÷Ϊ·Ö²¼Ê½ÊÂÎñµÄ¿ØÖÆ·Å¡£ÊÂÎñ·¢Æð·½»òÕß²ÎÓë·´¶¼ÓÉTxClient¶ËÀ´¿ØÖÆ¡£ £¨¼òµ¥À´Ëµ¾ÍÊǵ¥¶À²¿ÊðÒ»Ì×TxManagerÄ£¿éÀ´ÊµÏÖÊÂÎñ¹ÜÀí£¬TxClient¾ÍÊÇÎÒÃÇ×Ô¼ºµÄ·þÎñϵͳ£© Ô­ÀíͼÈçÏ£º

1.1.2. LCNÊÂÎñģʽ

1.1.2.1. Ô­Àí½éÉÜ

LCNģʽÊÇͨ¹ý´úÀíConnectionµÄ·½Ê½ÊµÏÖ¶Ô±¾µØÊÂÎñµÄ²Ù×÷£¬ È»ºóÔÚÓÉTxManagerͳһЭµ÷¿ØÖÆÊÂÎñ¡£µ±±¾µØÊÂÎñÌá½»»Ø¹ö»òÕ߹رÕÁ¬½Óʱ½«»áÖ´ÐмٲÙ×÷£¬ ¸Ã´úÀíµÄÁ¬½Ó½«ÓÉLCNÁ¬½Ó³Ø¹ÜÀí¡£

1.1.2.2. Ä£Ê½ÌØµã

¸Ãģʽ¶Ô´úÂëµÄǶÈëÐÔΪµÍ¡£

¸Ãģʽ½öÏÞÓÚ±¾µØ´æÔÚÁ¬½Ó¶ÔÏóÇÒ¿Éͨ¹ýÁ¬½Ó¶ÔÏó¿ØÖÆÊÂÎñµÄÄ£¿é¡£

¸ÃģʽϵÄÊÂÎñÌá½»Óë»Ø¹öÊÇÓɱ¾µØÊÂÎñ·½¿ØÖÆ£¬¶ÔÓÚÊý¾ÝÒ»ÖÂÐÔÉÏÓнϸߵı£ÕÏ¡£

¸ÃģʽȱÏÝÔÚÓÚ´úÀíµÄÁ¬½ÓÐèÒªËæÊÂÎñ·¢Æð·½Ò»¹²ÊÍ·ÅÁ¬½Ó£¬Ôö¼ÓÁËÁ¬½ÓÕ¼ÓõÄʱ¼ä

1.1.3. TCCÊÂÎñģʽ

1.1.3.1. Ô­Àí½éÉÜ

TCCÊÂÎñ»úÖÆÏà¶ÔÓÚ´«Í³ÊÂÎñ»úÖÆ£¨X/Open XA Two-Phase-Commit£©£¬ ÆäÌØÕ÷ÔÚÓÚËü²»ÒÀÀµ×ÊÔ´¹ÜÀíÆ÷(RM)¶ÔXAµÄÖ§³Ö£¬¶øÊÇͨ¹ý¶Ô£¨ÓÉÒµÎñϵͳÌṩµÄ£©ÒµÎñÂß¼­µÄµ÷¶ÈÀ´ÊµÏÖ·Ö²¼Ê½ÊÂÎñ¡£ Ö÷ÒªÓÉÈý²½²Ù×÷£¬Try: ³¢ÊÔÖ´ÐÐÒµÎñ¡¢ Confirm:È·ÈÏÖ´ÐÐÒµÎñ¡¢ Cancel: È¡ÏûÖ´ÐÐÒµÎñ¡£

1.1.3.2. Ä£Ê½ÌØµã

¸Ãģʽ¶Ô´úÂëµÄǶÈëÐԸߣ¬ÒªÇóÿ¸öÒµÎñÐèҪдÈýÖÖ²½ÖèµÄ²Ù×÷¡£

¸Ãģʽ¶ÔÓÐÎÞ±¾µØÊÂÎñ¿ØÖƶ¼¿ÉÒÔÖ§³ÖʹÓÃÃæ¹ã¡£

Êý¾ÝÒ»ÖÂÐÔ¿ØÖƼ¸ºõÍêÈ«ÓÉ¿ª·¢Õß¿ØÖÆ£¬¶ÔÒµÎñ¿ª·¢ÄѶÈÒªÇó¸ß¡£

1.1.4. TXCÊÂÎñģʽ

1.1.4.1. Ô­Àí½éÉÜ

TXCģʽÃüÃûÀ´Ô´ÓÚ°¢ÀïÔÆµÄGTS£¬ÊµÏÖÔ­ÀíÊÇÔÚÖ´ÐÐSQL֮ǰ£¬ ÏȲéѯSQLµÄÓ°ÏìÊý¾Ý±£´æÆðÀ´È»ºóÔÙÖ´ÐÐÒµÎñ¡£µ±ÐèÒª»Ø¹öµÄʱºò¾Í²ÉÓÃÕâЩ¼Ç¼Êý¾Ý»Ø¹öÊÂÎñ¡£

1.1.4.2. Ä£Ê½ÌØµã

¸ÃģʽͬÑù¶Ô´úÂëµÄǶÈëÐԵ͡£

¸Ãģʽ½öÏÞÓÚ¶ÔÖ§³ÖSQL·½Ê½µÄÄ£¿éÖ§³Ö¡£

¸ÃģʽÓÉÓÚÿ´ÎÖ´ÐÐSQL֮ǰÐèÒªÏȲéѯӰÏìÊý¾Ý£¬ Òò´ËÏà±ÈLCNģʽÏûºÄ×ÊÔ´Óëʱ¼äÒª¶à¡£

¸Ãģʽ²»»áÕ¼ÓÃÊý¾Ý¿âµÄÁ¬½Ó×ÊÔ´¡£

1.2. ¿ìËÙ¿ªÊ¼

1.2.1. ͲÛ

¿ÓµãÒ»£º²»ÒªÏàÐŹٷ½ÍøÕ¾ÉϵĵĿìËÙ¿ªÊ¼ºÍʾÀý£¬²»ÖªµÀÊǶà¾ÃÒÔǰµÄÁË£¬ÎÒµ·¹ÄÁ˺ܾã¬ÏÂÏÂÀ´µÄ´úÂëȱ½ïÉÙÁ½µÄ£¬´ò°üÁËÔ´´úÂëÒ²Âú×ã²»ÁËÕâʾÀý´úÂëµÄÐèÇó

¿Óµã¶þ£º²»ÒªÖ±½ÓʹÓÃÔ´´úÂëµÄtx-manager£¬¿Ï¶¨ÈÔ¾ÉȱÉÙÅäÖ㬻òÕߺÍʾÀý´úÂë°æ±¾²»Ò»ÖÂ

1.2.2. tx-manager

https://pan.baidu.com/s/1cLKAeE#list/path=%2Fshare link974324822- 625872931897976%2Ftx-manager&parentPath=%2Fsharelink974324822 -625872931897976

Õâ¸ötx-managerÖ±½Ó´Ó¹Ù·½ÌṩµÄÍøÅÌÏÂÔØ£¬ÎÒϵÄ4.1°æ±¾µÄ ÐÞ¸ÄÅäÖÃÎļþ£¬eurekaºÍredis¶¼Õû³É×Ô¼ºµÄ Ö±½Ójava -jar tx-manager.jar ÔËÐÐÆðÀ´¾Í¿ÉÒÔÁË

1.2.3. SpringCloud Demo

https://github.com/codingapi/springcloud-lcn-demo

ÉÏÊöµØÖ·Îª4.0°æ±¾µÄdemo£¬¾­ÊÔÑé¿ÉÒÔʹÓÃ

ÎÒÓÃmybatis-demoÕâ¸ö°ü×öµÄÊÔÑ飬ÀïÃæÁ½¸ömodule£¬·Ö±ðÐÞ¸Ä application.properties£¬Ö»ÐèÒªÐÞ¸ÄÊý¾Ý¿âmysqlºÍeurekaµØÖ·¾ÍÐÐ

µ±È»Êý¾Ý¿â±ðÍüÁ˽¨£¬½¨¸ötest¿â£¬Ð½¨ÏÂÁбíÓÃÓÚ²âÊÔ

USE test;

DROP TABLE IF EXISTS `t_test`;

CREATE TABLE `t_test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

1.3. ʹÓÃ×ܽá

Èç¹ûÐèÒªÔÚ×Ô¼ºµÄÏîĿʹÓÃLCNÖ»ÐèÒªÁ½²½

ÒýÈëpom

<lcn.last.version>4.1.0</lcn.last.version>

<dependency>
<groupId>com.codingapi</groupId>
<artifactId>transaction-springcloud </artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>

¼ÓÒ»¸ö×¢½â£¬Æ©Èç

@Override
@TxTransaction(isStart = true)
@Transactional
public int save() {


int rs2 = demo2Client.save();

int rs1 = testMapper.save ("mybatis-hello-1");
// int rs22 = demo2Client.save();

// int v = 100/0;

return rs1+rs2;
}

¼ÓÉÏ @TxTransaction(isStart = true) ±íʾÊÂÎñ¿ªÊ¼£¬ÔÚ×ßÍêÕû¸öÁ÷³ÌÒÔǰ£¬ÊÂÎñ¶¼»áÓÉtx-managerÀ´Ð­µ÷

1.4. 4.0Óë5.0°æ±¾

5.0¸Õ³öÀ´Ã»¶à¾Ã£¬Ò²¾Í1Ô·ݿªÊ¼´óÁ¿Ìá½»£¬²¢ÒѾ­½»ÓÉcodingApiÍŶӿª·¢Î¬»¤£¬ ¶Ô5.0µÄʹÓ㬻òÐí»¹Òª¾­ÀúЩʱ¼äµÄÄ¥Á·

¶ÔÉÏÊöÕâ¸ö×¢½â£¬ÔÚ4.0ÎÒÕÒµ½Ô­´úÂëÊÇÕâÑùµÄ

/**
* Created by lorne on 2017/6/26.
*/
@Target({ElementType.METHOD, Element Type.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface TxTransaction {


/**
* ÊÇ·ñLCNÊÂÎñ·¢Æð·½
* @return true ÊÇ:ÊÇ·¢Æð·½ false ·ñ:ÊDzÎÓë·½
*/
boolean isStart() default false;


/**
* »Ø¹öÒì³£
* @return
*/
Class<? extends Throwable>[] rollbackFor () default {};


/**
* ²»»Ø¹öÒì³£
* @return
*/
Class<? extends Throwable>[] noRollbackFor () default {};

}

ÔÚ5.0ÎÒͬÑùÕÒµ½ÁËÔ´´úÂ룬ÊÇÕâÑùµÄ

/**
* Created by lorne on 2017/6/26.
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface TxTransaction {


/**
* ÊÂÎñģʽ transaction type
*
* @return lcn, tcc, txc
* @see Transactions
*/
String type() default Transactions.LCN;

/**
* ·Ö²¼Ê½ÊÂÎñ´«²¥ÐÐΪ
*
* @return ´«²¥ÐÐΪ
* @see DTXPropagation
*/
DTXPropagation propagation() default DTXPropagation.REQUIRED;
}

ºÜÃ÷ÏÔ£¬×¢½âʹÓúÍʵÏÖ¶¼ÍêÈ«±äÁË£¬4.0ºÍ5.0Ã÷ÏÔ²»ÄܼæÈÝÁË¡£

ͨ¹ýа汾µÄÒ»¶Ñ×¢½âÒ²¿ÉÒÔ¿´³öÀ´£¬4.0°æ±¾Ö»Ö§³ÖLCNģʽ£¬ÏëÒª³¢ÊÔTCCºÍTXCµÄ£¬ °Ñ5.0µÄDemoÈ¥ÅÜͨ°É

   
3122 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù