提交 b3971b6f 编写于 作者: T tuohai666

#1099, change FrontendExecutorContext to UserGroupContext

上级 788d3c3f
......@@ -48,14 +48,14 @@ public final class ShardingProxy {
private static final RuleRegistry RULE_REGISTRY = RuleRegistry.getInstance();
private final FrontendExecutorContext frontendExecutorContext = FrontendExecutorContext.getInstance();
private final BackendExecutorContext backendExecutorContext = BackendExecutorContext.getInstance();
private EventLoopGroup bossGroup;
private EventLoopGroup workerGroup;
private final UserGroupContext userGroupContext = UserGroupContext.getInstance();
public ShardingProxy() {
RULE_REGISTRY.initShardingMetaData(backendExecutorContext.getExecutorService());
}
......@@ -84,7 +84,7 @@ public final class ShardingProxy {
} finally {
workerGroup.shutdownGracefully();
bossGroup.shutdownGracefully();
frontendExecutorContext.getExecutorService().shutdown();
userGroupContext.getUserGroup().shutdownGracefully();
backendExecutorContext.getExecutorService().shutdown();
if (RULE_REGISTRY.getBackendNIOConfig().isUseNIO()) {
ShardingProxyClient.getInstance().stop();
......@@ -102,6 +102,7 @@ public final class ShardingProxy {
private void groupsEpoll(final ServerBootstrap bootstrap) {
workerGroup = new EpollEventLoopGroup(RULE_REGISTRY.getExecutorSize());
userGroupContext.setUserGroup(new EpollEventLoopGroup(RULE_REGISTRY.getExecutorSize()));
bootstrap.group(bossGroup, workerGroup)
.channel(EpollServerSocketChannel.class)
.option(EpollChannelOption.SO_BACKLOG, 128)
......@@ -114,6 +115,7 @@ public final class ShardingProxy {
private void groupsNio(final ServerBootstrap bootstrap) {
workerGroup = new NioEventLoopGroup(RULE_REGISTRY.getExecutorSize());
userGroupContext.setUserGroup(new NioEventLoopGroup(RULE_REGISTRY.getExecutorSize()));
bootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 128)
......
......@@ -17,31 +17,29 @@
package io.shardingsphere.proxy.frontend;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import io.shardingsphere.proxy.config.RuleRegistry;
import io.netty.channel.EventLoopGroup;
import lombok.Getter;
import java.util.concurrent.Executors;
import lombok.Setter;
/**
* Frontend executor context.
* User group context.
*
* @author zhangyonglun
*/
public final class FrontendExecutorContext {
public final class UserGroupContext {
private static final FrontendExecutorContext INSTANCE = new FrontendExecutorContext();
private static final UserGroupContext INSTANCE = new UserGroupContext();
@Getter
private final ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(RuleRegistry.getInstance().getExecutorSize()));
@Setter
private EventLoopGroup userGroup;
/**
* Get frontend executor context instance.
* Get user group context instance.
*
* @return instance of frontend executor context
* @return instance of user group context
*/
public static FrontendExecutorContext getInstance() {
public static UserGroupContext getInstance() {
return INSTANCE;
}
}
......@@ -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.frontend.FrontendExecutorContext;
import io.shardingsphere.proxy.frontend.UserGroupContext;
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)
: FrontendExecutorContext.getInstance().getExecutorService();
: UserGroupContext.getInstance().getUserGroup();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册