diff --git a/README.md b/README.md index a42f14f70..49d827226 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # LCN分布式事务框架v4.0 - "LCN并不生产事务,LCN只是本地事务的搬运工" + "LCN并不生产事务,LCN只是本地事务的协调者" ## 框架介绍 - LCN分布式事务框架是一款事务协调性的框架,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用(例如 sharding-jdbc),在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低。LCN框架主要是为微服务框架提供分布式事务的支持,在微服务框架上做了进一步的事务机制优化,在一些负载场景上LCN事务机制要比本地事务机制的性能更好,4.0以后框架开方了插件机制可以让更多的第三方框架支持进来。 + LCN分布式事务框架的核心功能是对本地事务的协调控制,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用(例如 sharding-jdbc),在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低。LCN框架主要是为微服务框架提供分布式事务的支持,在微服务框架上做了进一步的事务机制优化,在一些负载场景上LCN事务机制要比本地事务机制的性能更好,4.0以后框架开方了插件机制可以让更多的第三方框架支持进来。 ## 官方网址 @@ -81,13 +81,13 @@ tx-plugins-db 是LCN 对关系型数据库的插件支持 如上代码执行完成以后两个模块都将回滚事务。 -说明:在使用LCN分布式事务时,只需要将事务的开始方法添加`@TxTransaction(isStart=true)`注解即可,在参与方添加`@TxTransaction`即可。详细见demo教程 +说明:在使用LCN分布式事务时,只需要将事务的开始方法添加`@TxTransaction(isStart=true)`注解即可,在参与方添加`@TxTransaction`或者实现`ITxTransaction`接口即可。详细见demo教程 ## 关于@TxTransaction 使用说明 @TxTransaction注解是分布式事务的标示。 - 若存在业务方法:a->b b->c b->d,那么开启分布式事务注解的话,只需要在a方法上添加@TxTransaction即可。 + 若存在业务方法:a->b b->c b->d,那么开启分布式事务注解的话,需要在各个模块方法上添加@TxTransaction即可。 ``` @TxTransaction(isStart=true) @@ -112,10 +112,7 @@ tx-plugins-db 是LCN 对关系型数据库的插件支持 ## maven 中心库地址 - ``` - - com.codingapi tx-client diff --git a/pom.xml b/pom.xml index be5f712a1..b93c6d794 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 pom tx-lcn @@ -32,7 +32,7 @@ 1.7 3.6.0 - 4.0.3 + 4.1.0 diff --git a/transaction-dubbo/pom.xml b/transaction-dubbo/pom.xml index bba526d6b..29e9a600d 100644 --- a/transaction-dubbo/pom.xml +++ b/transaction-dubbo/pom.xml @@ -8,7 +8,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 com.codingapi diff --git a/transaction-dubbo/src/main/java/com/codingapi/tx/dubbo/service/impl/ModelNameServiceImpl.java b/transaction-dubbo/src/main/java/com/codingapi/tx/dubbo/service/impl/ModelNameServiceImpl.java index 9a6955b1f..1eab4bd1a 100644 --- a/transaction-dubbo/src/main/java/com/codingapi/tx/dubbo/service/impl/ModelNameServiceImpl.java +++ b/transaction-dubbo/src/main/java/com/codingapi/tx/dubbo/service/impl/ModelNameServiceImpl.java @@ -23,13 +23,24 @@ public class ModelNameServiceImpl implements ModelNameService { @Autowired private ApplicationConfig applicationConfig; - @Autowired - private ProviderConfig providerConfig; - @Autowired private ApplicationContext applicationContext; - public RegistryConfig getRegistryConfig(){ + private ProviderConfig providerConfig(){ + Map beans = applicationContext.getBeansOfType(ProviderConfig.class); + ProviderConfig providerConfig = null; + if(beans!=null){ + String defaultKey = "default"; + for(String key:beans.keySet()){ + defaultKey = key; + } + + providerConfig = beans.get(defaultKey); + } + return providerConfig; + } + + private RegistryConfig getRegistryConfig(){ Map beans = applicationContext.getBeansOfType(RegistryConfig.class); RegistryConfig registryConfig = null; if(beans!=null){ @@ -64,7 +75,7 @@ private String getIp() { @Override public String getUniqueKey() { - String address = getIp() + providerConfig.getPort(); + String address = getIp() + getPort(); return MD5Util.md5(address.getBytes()); } @@ -75,8 +86,8 @@ public String getIpAddress() { } private int getPort(){ - if(providerConfig.getPort()!=null){ - return providerConfig.getPort(); + if(providerConfig()!=null&&providerConfig().getPort()!=null){ + return providerConfig().getPort(); } RegistryConfig registryConfig = getRegistryConfig(); diff --git a/transaction-motan/pom.xml b/transaction-motan/pom.xml index 6b04eb205..9bdcbfa7b 100644 --- a/transaction-motan/pom.xml +++ b/transaction-motan/pom.xml @@ -8,7 +8,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 com.codingapi diff --git a/transaction-springcloud/pom.xml b/transaction-springcloud/pom.xml index 5494263f4..5342e94ae 100644 --- a/transaction-springcloud/pom.xml +++ b/transaction-springcloud/pom.xml @@ -6,7 +6,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 com.codingapi diff --git a/tx-client/pom.xml b/tx-client/pom.xml index a2f89e41a..08574c890 100644 --- a/tx-client/pom.xml +++ b/tx-client/pom.xml @@ -6,7 +6,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 com.codingapi diff --git a/tx-client/src/main/java/com/codingapi/tx/listener/service/impl/InitServiceImpl.java b/tx-client/src/main/java/com/codingapi/tx/listener/service/impl/InitServiceImpl.java index 591ce555c..b16d8a2e5 100644 --- a/tx-client/src/main/java/com/codingapi/tx/listener/service/impl/InitServiceImpl.java +++ b/tx-client/src/main/java/com/codingapi/tx/listener/service/impl/InitServiceImpl.java @@ -33,7 +33,7 @@ private void welcome(){ System.out.println("\t\t** \t\t** \t\t** ***"); System.out.println("\t\t*****\t\t ****\t\t** **"); System.out.println(); - System.out.println("\t\tLCN-Client version:4.0.3"); + System.out.println("\t\tLCN-Client version:4.1.0"); System.out.println(); } diff --git a/tx-manager/pom.xml b/tx-manager/pom.xml index 07883a274..4d163f987 100644 --- a/tx-manager/pom.xml +++ b/tx-manager/pom.xml @@ -5,7 +5,7 @@ com.codingapi tx-manager - 4.0.3 + 4.1.0 jar tx-manager @@ -61,6 +61,12 @@ + + + + + + org.springframework.boot spring-boot-starter-web diff --git a/tx-manager/src/main/java/com/codingapi/tm/listener/service/impl/InitServiceImpl.java b/tx-manager/src/main/java/com/codingapi/tm/listener/service/impl/InitServiceImpl.java index 7fefd9895..af3e803b2 100644 --- a/tx-manager/src/main/java/com/codingapi/tm/listener/service/impl/InitServiceImpl.java +++ b/tx-manager/src/main/java/com/codingapi/tm/listener/service/impl/InitServiceImpl.java @@ -41,7 +41,7 @@ private void welcome(){ System.out.println("\t\t** \t\t** \t\t** ***"); System.out.println("\t\t*****\t\t ****\t\t** **"); System.out.println(); - System.out.println("\t\tLCN-TxManager version:4.0.3"); + System.out.println("\t\tLCN-TxManager version:4.1.0"); System.out.println(); } diff --git a/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java b/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java index ce1bb38e5..5a74ac913 100644 --- a/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java +++ b/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java @@ -6,12 +6,8 @@ import com.codingapi.tm.manager.service.MicroService; import com.codingapi.tm.model.TxServer; import com.codingapi.tm.model.TxState; -import com.netflix.appinfo.InstanceInfo; -import com.netflix.discovery.EurekaClient; -import com.netflix.discovery.shared.Application; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -39,15 +35,6 @@ public class MicroServiceImpl implements MicroService { private DiscoveryClient discoveryClient; - @Autowired - private EurekaClient eurekaClient; - - - - - /** logger */ - private static final Logger logger = LoggerFactory.getLogger(MicroServiceImpl.class); - private boolean isIp(String ipAddress) { String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"; @@ -57,19 +44,10 @@ private boolean isIp(String ipAddress) { } - public List getConfigServiceInstances() { - Application application = eurekaClient.getApplication(tmKey); - if (application == null) { - logger.error("get eureka server error!"); - } - return application != null ? application.getInstances() : new ArrayList(); - } @Override public TxState getState() { TxState state = new TxState(); - - //String ipAddress = EurekaServerContextHolder.getInstance().getServerContext().getApplicationInfoManager().getEurekaInstanceConfig().getIpAddress(); String ipAddress = discoveryClient.getLocalServiceInstance().getHost(); if(!isIp(ipAddress)){ ipAddress = "127.0.0.1"; @@ -89,19 +67,11 @@ public TxState getState() { return state; } - private List getServices(){ List urls = new ArrayList<>(); - List instanceInfos =getConfigServiceInstances(); - for (InstanceInfo instanceInfo : instanceInfos) { - String url = instanceInfo.getHomePageUrl(); - String address = instanceInfo.getIPAddr(); - if (isIp(address)) { - urls.add(url); - }else{ - url = url.replace(address,"127.0.0.1"); - urls.add(url); - } + List serviceInstances = discoveryClient.getInstances(tmKey); + for (ServiceInstance instanceInfo : serviceInstances) { + urls.add(instanceInfo.getUri().toASCIIString()); } return urls; } diff --git a/tx-manager/src/main/resources/application.properties b/tx-manager/src/main/resources/application.properties index 05ff87ff3..0fd633269 100644 --- a/tx-manager/src/main/resources/application.properties +++ b/tx-manager/src/main/resources/application.properties @@ -11,6 +11,13 @@ spring.resources.static-locations=classpath:/static/ #######################################txmanager-end################################################# +#zookeeper地址 +#spring.cloud.zookeeper.connect-string=127.0.0.1:2181 +#spring.cloud.zookeeper.discovery.preferIpAddress = true + +#eureka 地址 +eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ +eureka.instance.prefer-ip-address=true #######################################redis-start################################################# #redis 配置文件,根据情况选择集群或者单机模式 diff --git a/tx-manager/src/main/resources/bootstrap.yml b/tx-manager/src/main/resources/bootstrap.yml deleted file mode 100644 index e43871b96..000000000 --- a/tx-manager/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,19 +0,0 @@ -eureka: - instance: - hostname: ${hostname:localhost} - preferIpAddress: true - server: - peerEurekaNodesUpdateIntervalMs: 60000 - enableSelfPreservation: false - client: - serviceUrl: - defaultZone: http://localhost:8761/eureka/ - healthcheck: - enabled: true - eurekaServiceUrlPollIntervalSeconds: 60 - -endpoints: - health: - sensitive: false - - diff --git a/tx-manager/src/main/resources/static/index.html b/tx-manager/src/main/resources/static/index.html index 416d72a90..4e8e32149 100644 --- a/tx-manager/src/main/resources/static/index.html +++ b/tx-manager/src/main/resources/static/index.html @@ -2,7 +2,7 @@ - TxManager v4.0.3 + TxManager v4.1.0 @@ -24,7 +24,7 @@
-

TxManagerV4.0.3 服务已启动

+

TxManagerV4.1.0 服务已启动

diff --git a/tx-plugins-db/pom.xml b/tx-plugins-db/pom.xml index a3fd8e531..747907e61 100644 --- a/tx-plugins-db/pom.xml +++ b/tx-plugins-db/pom.xml @@ -6,7 +6,7 @@ com.codingapi tx-lcn - 4.0.3 + 4.1.0 com.codingapi