Unverified Commit b3ee2bd3 authored by 张亮's avatar 张亮 Committed by GitHub
Browse files

Merge pull request #1100 from tuohai666/dev

separate thread pool for frontend and backend
parents 9ce3dd85 e403a093
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePac
import io.shardingsphere.proxy.transport.mysql.packet.command.query.QueryResponsePackets;
import io.shardingsphere.proxy.transport.mysql.packet.generic.ErrPacket;
import io.shardingsphere.proxy.transport.mysql.packet.generic.OKPacket;
import io.shardingsphere.proxy.util.ExecutorContext;
import io.shardingsphere.proxy.util.BackendExecutorContext;
import lombok.RequiredArgsConstructor;

import javax.transaction.Status;
@@ -87,7 +87,7 @@ public final class JDBCBackendHandler extends AbstractBackendHandler {
        if (!RULE_REGISTRY.isMasterSlaveOnly() && SQLType.DDL == sqlStatement.getType() && !sqlStatement.getTables().isEmpty()) {
            String logicTableName = sqlStatement.getTables().getSingleTableName();
            TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(
                    ExecutorContext.getInstance().getExecutorService(), new ProxyTableMetaDataConnectionManager(RULE_REGISTRY.getBackendDataSource()));
                    BackendExecutorContext.getInstance().getExecutorService(), new ProxyTableMetaDataConnectionManager(RULE_REGISTRY.getBackendDataSource()));
            RULE_REGISTRY.getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, RULE_REGISTRY.getShardingRule()));
        }
        return merge(sqlStatement);
+2 −2
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ import io.shardingsphere.proxy.transport.mysql.packet.command.query.ColumnDefini
import io.shardingsphere.proxy.transport.mysql.packet.command.query.FieldCountPacket;
import io.shardingsphere.proxy.transport.mysql.packet.generic.EofPacket;
import io.shardingsphere.proxy.transport.mysql.packet.generic.OKPacket;
import io.shardingsphere.proxy.util.ExecutorContext;
import io.shardingsphere.proxy.util.BackendExecutorContext;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@@ -59,7 +59,7 @@ public abstract class JDBCExecuteEngine implements SQLExecuteEngine {
    
    private final BackendConnection backendConnection;
    
    private final ExecutorService executorService = ExecutorContext.getInstance().getExecutorService();
    private final ExecutorService executorService = BackendExecutorContext.getInstance().getExecutorService();
    
    private final JDBCExecutorWrapper jdbcExecutorWrapper;
    
+2 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ import io.shardingsphere.proxy.transport.mysql.constant.ColumnType;
import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePackets;
import io.shardingsphere.proxy.transport.mysql.packet.generic.ErrPacket;
import io.shardingsphere.proxy.transport.mysql.packet.generic.OKPacket;
import io.shardingsphere.proxy.util.ExecutorContext;
import io.shardingsphere.proxy.util.BackendExecutorContext;
import io.shardingsphere.proxy.util.MySQLResultCache;
import io.shardingsphere.proxy.util.SynchronizedFuture;
import lombok.Getter;
@@ -145,7 +145,7 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
        if (!RULE_REGISTRY.isMasterSlaveOnly() && SQLType.DDL == sqlStatement.getType() && !sqlStatement.getTables().isEmpty()) {
            String logicTableName = sqlStatement.getTables().getSingleTableName();
            TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(
                    ExecutorContext.getInstance().getExecutorService(), new ProxyTableMetaDataConnectionManager(RULE_REGISTRY.getBackendDataSource()));
                    BackendExecutorContext.getInstance().getExecutorService(), new ProxyTableMetaDataConnectionManager(RULE_REGISTRY.getBackendDataSource()));
            RULE_REGISTRY.getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, RULE_REGISTRY.getShardingRule()));
        }
        return result;
+23 −19
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ import io.netty.handler.logging.LoggingHandler;
import io.shardingsphere.proxy.backend.netty.ShardingProxyClient;
import io.shardingsphere.proxy.config.RuleRegistry;
import io.shardingsphere.proxy.frontend.common.netty.ServerHandlerInitializer;
import io.shardingsphere.proxy.util.ExecutorContext;
import io.shardingsphere.proxy.util.BackendExecutorContext;
import io.shardingsphere.proxy.util.FrontendExecutorContext;

import java.net.MalformedURLException;

@@ -48,14 +49,16 @@ public final class ShardingProxy {
    
    private static final RuleRegistry RULE_REGISTRY = RuleRegistry.getInstance();
    
    private final ExecutorContext executorContext = ExecutorContext.getInstance();
    private final FrontendExecutorContext frontendExecutorContext = FrontendExecutorContext.getInstance();
    
    private final BackendExecutorContext backendExecutorContext = BackendExecutorContext.getInstance();
    
    private EventLoopGroup bossGroup;
    
    private EventLoopGroup workerGroup;
    
    public ShardingProxy() {
        RULE_REGISTRY.initShardingMetaData(executorContext.getExecutorService());
        RULE_REGISTRY.initShardingMetaData(backendExecutorContext.getExecutorService());
    }
    
    /**
@@ -82,7 +85,8 @@ public final class ShardingProxy {
        } finally {
            workerGroup.shutdownGracefully();
            bossGroup.shutdownGracefully();
            executorContext.getExecutorService().shutdown();
            frontendExecutorContext.getExecutorService().shutdown();
            backendExecutorContext.getExecutorService().shutdown();
            if (RULE_REGISTRY.getBackendNIOConfig().isUseNIO()) {
                ShardingProxyClient.getInstance().stop();
            }
+2 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ package io.shardingsphere.proxy.frontend.common.executor;
import io.netty.channel.ChannelId;
import io.shardingsphere.core.constant.TransactionType;
import io.shardingsphere.proxy.config.RuleRegistry;
import io.shardingsphere.proxy.util.ExecutorContext;
import io.shardingsphere.proxy.util.FrontendExecutorContext;
import lombok.RequiredArgsConstructor;

import java.util.concurrent.ExecutorService;
@@ -44,6 +44,6 @@ public final class ExecutorGroup {
     */
    public ExecutorService getExecutorService() {
        return TransactionType.XA.equals(RULE_REGISTRY.getTransactionType()) ? ChannelThreadExecutorGroup.getInstance().get(channelId)
            : ExecutorContext.getInstance().getExecutorService();
            : FrontendExecutorContext.getInstance().getExecutorService();
    }
}
Loading