该样例工程介绍 AT 模式下,Spring Cloud 框架如何通过 GTS 保证跨数据库转账的分布式事务的一致性。
               		
               
                  
                     
前提条件
                   在使用样例前,请先完成以下工作: 
                  
                     - 准备两个 RDS 实例,用户创建数据库。
 
                     - 准备一个 ECS 实例,用于部署本样例。
 
                  
                
               		
               
                  样例逻辑说明
                  			
                  			
                  模拟转账业务,从 A 账户扣款给 B 账户打款。应用程序通过调用扣款微服务和存款微服务完成转账业务。
                  			
                  
                     				
                     - eureka-locator:微服务的注册中心
 
                     				
                     - eureka-consumer:应用程序
 
                     				
                     - eureka-provider:扣款服务
 
                     				
                     - eureka-provider2:存款服务
 
                     			
                  
                  		
               
               		
               
                  搭建样例
                  			
                  			
                  
                     - 初始化数据库。
                        					
                        
                           						
                           - 分别在两个数据库执行 txc_undo_log.sql,创建 txc_undo_log 表。
 
                           						
                           - 分别在两个数据库执行 txc_sample_springcloud.sql 中的相关命令,创建 account 表。
 
                           					
                        
                        				
                      
                     - 下载样例 txc-yun-sample并上传到 ECS 上。
 
                     - 修改样例配置。
                        					
                        
                           						
                           - 分别找到并打开 sample-txc-springcloud 样例下 eureka-consumer、eureka-provider 和 eureka-provider2 三个文件中的 config.java 文件,在 txcTransactionScaner 方法中修改 GTS 的事务分组名称。
 
                           						
                           - 分别找到并打开 eureka-consumer、eureka-provider 和 eureka-provider2 三个文件中的 application.properties 文件,将 accessKey 和 secretKey 的值修改为您实际账号的值。
 
                           						
                           - 分别找到并打开 eureka-consumer、eureka-provider 和 eureka-provider2 三个文件中的 application.properties 文件,将数据库的 url、username和 password 的值修改为您实际使用的值。
 
                           					
                        
                        				
                      
                     - 运行 txc-yun-sample/sample-txc-springcloud 目录下的 sh build.sh 脚本,编译工程。
                        					
                        
编译后会在相应文件中生产 client 目录。
                        
                        				
                      
                     - 运行样例。
                        					
                        
                           						
                           - 运行 eureka-locator/client/bin 目录下的 locator.sh 脚本,启动注册中心。
 
                           						
                           - 运行 eureka-provider/client/bin 目录下的 provider1_run.sh 脚本,启动扣款服务。
 
                           						
                           - 运行 eureka-provider2/client/bin 目录下的 provider2_run.sh 脚本,启动存款服务。
 
                           						
                           - 运行 eureka-consumer/client/bin 目录下的 consumer_run.sh 脚本,启动样例。
 
                           					
                        
                        				
                      
                  
                  		
               
               		
               
                  结果验证
                  			
                  			
                  
                     - 使用浏览器访问地址 http://<ECS IP>:9000。
                        					
                        
                        				
                     
 
                     - 在页面中输入转账金额,然后单击提交。
                        					
                        
                        				
                     
 
                     - 余额不足,转账失败,全局事务回滚。