Ver Fonte

seata 源码优化

lengfaqiang há 2 anos atrás
pai
commit
fd2583e567

+ 1 - 0
.gitignore

@@ -53,3 +53,4 @@ Thumbs.db
 
 #h2
 *.db
+/all/target/

+ 5 - 2
config/seata-config-core/src/main/java/io/seata/config/Configuration.java

@@ -15,12 +15,12 @@
  */
 package io.seata.config;
 
+import io.seata.common.util.StringUtils;
+
 import java.time.Duration;
 import java.util.Map;
 import java.util.Set;
 
-import io.seata.common.util.StringUtils;
-
 /**
  * The interface Configuration.
  *
@@ -299,6 +299,9 @@ public interface Configuration {
         if (StringUtils.isBlank(dataId)) {
             return null;
         }
+//        System.out.println("ENV_MAP:"+ENV_MAP.toString());
+        //读取环境变量
+//        System.getProperty() 是获取系统的相关属性,
         String content = ENV_MAP.get(dataId);
         if (null != content) {
             return content;

+ 12 - 15
config/seata-config-nacos/src/main/java/io/seata/config/nacos/NacosConfiguration.java

@@ -15,14 +15,6 @@
  */
 package io.seata.config.nacos;
 
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
 import com.alibaba.nacos.api.NacosFactory;
 import com.alibaba.nacos.api.config.ConfigService;
 import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
@@ -30,16 +22,19 @@ import com.alibaba.nacos.api.exception.NacosException;
 import io.seata.common.exception.NotSupportYetException;
 import io.seata.common.util.CollectionUtils;
 import io.seata.common.util.StringUtils;
-import io.seata.config.AbstractConfiguration;
-import io.seata.config.Configuration;
-import io.seata.config.ConfigurationChangeEvent;
-import io.seata.config.ConfigurationChangeListener;
-import io.seata.config.ConfigurationFactory;
-import io.seata.config.ConfigurationKeys;
+import io.seata.config.*;
 import io.seata.config.processor.ConfigProcessor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
 
 /**
  * The type Nacos configuration.
@@ -104,6 +99,7 @@ public class NacosConfiguration extends AbstractConfiguration {
 
     @Override
     public String getLatestConfig(String dataId, String defaultValue, long timeoutMills) {
+//        System.out.println("seataConfig"+seataConfig.toString());
         String value = seataConfig.getProperty(dataId);
         if (null == value) {
             try {
@@ -321,9 +317,10 @@ public class NacosConfiguration extends AbstractConfiguration {
             String config = configService.getConfig(nacosDataId, getNacosGroup(), DEFAULT_CONFIG_TIMEOUT);
             if (StringUtils.isNotBlank(config)) {
                 seataConfig = ConfigProcessor.processConfig(config, getNacosDataType());
-
+                System.out.println("seataConfig"+seataConfig.toString());
                 NacosListener nacosListener = new NacosListener(nacosDataId, null);
                 configService.addListener(nacosDataId, getNacosGroup(), nacosListener);
+                System.out.println("configService"+configService.toString());
             }
         } catch (NacosException | IOException e) {
             LOGGER.error("init config properties error", e);

+ 8 - 21
core/src/main/java/io/seata/core/rpc/netty/AbstractNettyRemotingClient.java

@@ -15,20 +15,6 @@
  */
 package io.seata.core.rpc.netty;
 
-import java.lang.reflect.Field;
-import java.net.InetSocketAddress;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadLocalRandom;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.function.Function;
-
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelDuplexHandler;
 import io.netty.channel.ChannelHandler.Sharable;
@@ -43,13 +29,7 @@ import io.seata.common.thread.NamedThreadFactory;
 import io.seata.common.util.CollectionUtils;
 import io.seata.common.util.NetUtil;
 import io.seata.common.util.StringUtils;
-import io.seata.core.protocol.AbstractMessage;
-import io.seata.core.protocol.HeartbeatMessage;
-import io.seata.core.protocol.MergeMessage;
-import io.seata.core.protocol.MergedWarpMessage;
-import io.seata.core.protocol.MessageFuture;
-import io.seata.core.protocol.ProtocolConstants;
-import io.seata.core.protocol.RpcMessage;
+import io.seata.core.protocol.*;
 import io.seata.core.protocol.transaction.AbstractGlobalEndRequest;
 import io.seata.core.protocol.transaction.BranchRegisterRequest;
 import io.seata.core.protocol.transaction.BranchReportRequest;
@@ -63,6 +43,13 @@ import io.seata.discovery.registry.RegistryFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Field;
+import java.net.InetSocketAddress;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.*;
+import java.util.function.Function;
+
 import static io.seata.common.exception.FrameworkErrorCode.NoAvailableService;
 
 /**

+ 10 - 2
script/config-center/config.txt

@@ -25,7 +25,8 @@ transport.compressor=none
 #Transaction routing rules configuration, only for the client
 # 此处的mygroup名字可以自定义,只修改这个值即可
 # 分布式事务涉及到的服务:注册名字为:service.vgroup_mapping.{namespace}-seata-service-group=default
-#service.vgroupMapping.default_tx_group=default
+service.vgroupMapping.default_tx_group=default
+service.vgroup_mapping.default_tx_group=default
 service.vgroup_mapping.example-seata-service-group=default
 service.vgroup_mapping.file-seata-service-group=default
 service.vgroup_mapping.system-seata-service-group=default
@@ -33,10 +34,11 @@ service.vgroup_mapping.message-seata-service-group=default
 #service.vgroup_mapping.example-seata-service-group=default
 #service.vgroup_mapping.example-seata-service-group=default
 # 分布式事务指定的tx群组
+#grouplist为访问seata服务器的地址和端口(仅注册中心为file时使用),8091是默认端口,
 #service.vgroupMapping.calvin_test_tx_group=default
 #If you use a registry, you can ignore it
 #service.default.grouplist=127.0.0.1:8091
-service.default.grouplist=10.10.10.230:18091
+#service.default.grouplist=10.10.10.5:18091
 service.enableDegrade=false
 service.disableGlobalTransaction=false
 
@@ -85,6 +87,9 @@ store.session.mode=db
 
 #These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.
 # 修改mysql的配置
+#mysql5.+使用 driverClassName = "com.mysql.jdbc.Driver"
+#mysql8使用 driverClassName = "com.mysql.cj.jdbc.Driver"
+
 store.db.datasource=druid
 store.db.dbType=mysql
 store.db.driverClassName=com.mysql.cj.jdbc.Driver
@@ -124,3 +129,6 @@ metrics.enabled=false
 metrics.registryType=compact
 metrics.exporterList=prometheus
 metrics.exporterPrometheusPort=9898
+
+
+registry.preferredNetworks=10.10.10.230

+ 2 - 2
seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/StarterConstants.java

@@ -15,10 +15,10 @@
  */
 package io.seata.spring.boot.autoconfigure;
 
-import java.util.HashMap;
-
 import io.seata.config.ConfigurationKeys;
 
+import java.util.HashMap;
+
 /**
  * @author xingfudeshi@gmail.com
  */

+ 13 - 1
server/src/main/java/io/seata/server/Server.java

@@ -58,8 +58,20 @@ public class Server {
                 NettyServerConfig.getMaxServerPoolSize(), NettyServerConfig.getKeepAliveTime(), TimeUnit.SECONDS,
                 new LinkedBlockingQueue<>(NettyServerConfig.getMaxTaskQueueSize()),
                 new NamedThreadFactory("ServerHandlerThread", NettyServerConfig.getMaxServerPoolSize()), new ThreadPoolExecutor.CallerRunsPolicy());
-
+//        在Server.java启动代码中有校验IP有效性代码,域名如果不能被DNS解析,会被改成本地IP,我在部署k8s网络时用得k8S得服务名就会导致写服务名失效,必须得改此段代码
+//                我改的这段代码
+//        并且在向注册中心注册时需要改掉IP验证有效性,以redis为例
+//        RedisRegistryServiceImpl中得register方法修改
+//        public void register(InetSocketAddress address) {
+//            NetUtil.validAddress(address);
+//            String serverAddr = address.getHostString()+":"+address.getPort(); //NetUtil.toStringAddress(address);
+//            try (Jedis jedis = jedisPool.getResource()) {
+//                jedis.hset(getRedisRegistryKey(), serverAddr, ManagementFactory.getRuntimeMXBean().getName());
+//                jedis.publish(getRedisRegistryKey(), serverAddr + "-" + RedisListener.REGISTER);
+//            }
+//        }
         //127.0.0.1 and 0.0.0.0 are not valid here.
+        System.out.println("parameterParser.getHost()"+parameterParser.getHost());
         if (NetUtil.isValidIp(parameterParser.getHost(), false)) {
             XID.setIpAddress(parameterParser.getHost());
         } else {

+ 7 - 6
server/src/main/resources/application-dev.yml

@@ -25,12 +25,12 @@ logging:
 #    path: ${user.home}/logs/seata
 #    path: /home/sckw/logs/seata
     path: /www/wwwlogs/seata/logs
-  extend:
-    logstash-appender:
-      destination: 127.0.0.1:4560
-    kafka-appender:
-      bootstrap-servers: 127.0.0.1:9092
-      topic: logback_to_logstash
+#  extend:
+#    logstash-appender:
+#      destination: 127.0.0.1:4560
+#    kafka-appender:
+#      bootstrap-servers: 127.0.0.1:9092
+#      topic: logback_to_logstash
 
 console:
   user:
@@ -71,6 +71,7 @@ seata:
       ##if use MSE Nacos with auth, mutex with username/password attribute
       #access-key:
       #secret-key:
+    preferred-networks: 10.10.10.230
   # 选择存储模式
   store:
     # support: file 、 db 、 redis