From 1ac3dfea80bb212cacdc80a09d987b5310bdd0dc Mon Sep 17 00:00:00 2001 From: wangliang <1991wangliang@gmail.com> Date: Wed, 21 Feb 2018 12:39:27 +0800 Subject: [PATCH 1/7] 4.1.0 --- pom.xml | 4 ++-- transaction-dubbo/pom.xml | 2 +- transaction-motan/pom.xml | 2 +- transaction-springcloud/pom.xml | 2 +- tx-client/pom.xml | 2 +- .../codingapi/tx/listener/service/impl/InitServiceImpl.java | 2 +- tx-manager/pom.xml | 2 +- .../codingapi/tm/listener/service/impl/InitServiceImpl.java | 2 +- tx-manager/src/main/resources/static/index.html | 4 ++-- tx-plugins-db/pom.xml | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) 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-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..14e9f9231 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 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/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 From bbb40ab7bfcf1a01c40fef1f8fc69b587b6b757b Mon Sep 17 00:00:00 2001 From: wangliang <1991wangliang@gmail.com> Date: Wed, 21 Feb 2018 13:40:26 +0800 Subject: [PATCH 2/7] bugs --- .../service/impl/ModelNameServiceImpl.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) 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(); From 94f55ba8f9b84bdfaa1292ae8048d41b55177d10 Mon Sep 17 00:00:00 2001 From: wangliang <1991wangliang@gmail.com> Date: Wed, 21 Feb 2018 20:18:06 +0800 Subject: [PATCH 3/7] update --- README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) 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 From a6ea9318864ad993c6e2ebf06f83bce6c6f8bf2c Mon Sep 17 00:00:00 2001 From: wangliang <1991wangliang@gmail.com> Date: Wed, 21 Feb 2018 20:41:45 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=94=AF=E6=8C=81zookeeper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tx-manager/pom.xml | 6 +++ .../service/impl/MicroServiceImpl.java | 38 ++----------------- .../src/main/resources/application.properties | 5 +++ tx-manager/src/main/resources/bootstrap.yml | 19 ---------- 4 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 tx-manager/src/main/resources/bootstrap.yml diff --git a/tx-manager/pom.xml b/tx-manager/pom.xml index 14e9f9231..4d163f987 100644 --- a/tx-manager/pom.xml +++ b/tx-manager/pom.xml @@ -61,6 +61,12 @@ + + + + + + org.springframework.boot spring-boot-starter-web 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..67b0fc1bd 100644 --- a/tx-manager/src/main/resources/application.properties +++ b/tx-manager/src/main/resources/application.properties @@ -11,6 +11,11 @@ spring.resources.static-locations=classpath:/static/ #######################################txmanager-end################################################# +#zookeeper地址 +#spring.cloud.zookeeper.connect-string=127.0.0.1:2181 + +#eureka 地址 +eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ #######################################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 - - From 95e83d727758a55c7ab1e68a2c717ee7dc7a4054 Mon Sep 17 00:00:00 2001 From: "honglong.zhang" Date: Sat, 24 Feb 2018 15:54:54 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E8=A7=A3=E5=86=B3Socket=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1IP=E4=B8=8D=E5=AF=B9=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4f0dfb937c59f5151a487e88d8bfacaa406f569a --- tx-manager/src/main/resources/application.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/tx-manager/src/main/resources/application.properties b/tx-manager/src/main/resources/application.properties index 67b0fc1bd..f9eed59c7 100644 --- a/tx-manager/src/main/resources/application.properties +++ b/tx-manager/src/main/resources/application.properties @@ -16,6 +16,7 @@ spring.resources.static-locations=classpath:/static/ #eureka 地址 eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ +eureka.instance.prefer-ip-address=true #######################################redis-start################################################# #redis 配置文件,根据情况选择集群或者单机模式 From 08b562a95c0ec0d567c3283905bad0604e88700b Mon Sep 17 00:00:00 2001 From: "honglong.zhang" Date: Sat, 24 Feb 2018 16:09:44 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E8=A7=A3=E5=86=B3Socket=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1IP=E4=B8=8D=E5=AF=B9=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20zookeeper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Icee8c98a8cd7b4f5a2fe7cb9674a936d6029523b --- tx-manager/src/main/resources/application.properties | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tx-manager/src/main/resources/application.properties b/tx-manager/src/main/resources/application.properties index f9eed59c7..19b844599 100644 --- a/tx-manager/src/main/resources/application.properties +++ b/tx-manager/src/main/resources/application.properties @@ -12,11 +12,12 @@ spring.resources.static-locations=classpath:/static/ #zookeeper地址 -#spring.cloud.zookeeper.connect-string=127.0.0.1:2181 +spring.cloud.zookeeper.connect-string=172.30.77.101: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 +#eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ +#eureka.instance.prefer-ip-address=true #######################################redis-start################################################# #redis 配置文件,根据情况选择集群或者单机模式 From 50a3a3f8894188f3b4a0d5056e56ac2d63bd9a95 Mon Sep 17 00:00:00 2001 From: "honglong.zhang" Date: Sat, 24 Feb 2018 16:15:58 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6cdd6025ca27e399ef2d973da4726aa8552e3004 --- tx-manager/src/main/resources/application.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tx-manager/src/main/resources/application.properties b/tx-manager/src/main/resources/application.properties index 19b844599..0fd633269 100644 --- a/tx-manager/src/main/resources/application.properties +++ b/tx-manager/src/main/resources/application.properties @@ -12,12 +12,12 @@ spring.resources.static-locations=classpath:/static/ #zookeeper地址 -spring.cloud.zookeeper.connect-string=172.30.77.101:2181 -spring.cloud.zookeeper.discovery.preferIpAddress = true +#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 +eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ +eureka.instance.prefer-ip-address=true #######################################redis-start################################################# #redis 配置文件,根据情况选择集群或者单机模式