Skip to content

Commit a105fa7

Browse files
carryxyhbeiwei30
authored andcommitted
Use InternalThreadLocal in consumer side (apache#1825)
* SerializerFactory 获取Serializer时,锁住整个hashmap,导致整个过程被block * 单元测试。保证一个class只有一个serializer和deserializer。单线程和多线程测试 * 增加线程数 50 模拟多个线程来获取serializer和deserializer * 当cores线程数全都使用的情况下,默认线程池会把任务放入到队列中。队列满则再创建线程(总数不会超过Max线程数) 增强线程池:在请求量阶段性出现高峰时使用 特性:cores线程全部使用的情况下,优先创建线程(总数不会超过max),当max个线程全都在忙的情况下,才将任务放入队列。请求量下降时,线程池会自动维持cores个线程,多余的线程退出。 * 当cores线程数全都使用的情况下,默认线程池会把任务放入到队列中。队列满则再创建线程(总数不会超过Max线程数) 增强线程池:在请求量阶段性出现高峰时使用 特性:cores线程全部使用的情况下,优先创建线程(总数不会超过max),当max个线程全都在忙的情况下,才将任务放入队列。请求量下降时,线程池会自动维持cores个线程,多余的线程退出。 * 补全单元测试,测试扩展是否生效 * 错误命名 * 增加@OverRide注解 long 初始化赋值时,小写l改为大写L防止误读 * 修复单元测试 * remove enhanced * remove enhanced * Change ThreadFactory for consumer side which is to use InternalThreadLocal in RpcContext.
1 parent 1f63dc4 commit a105fa7

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/support/FailbackClusterInvoker.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818

1919
import com.alibaba.dubbo.common.logger.Logger;
2020
import com.alibaba.dubbo.common.logger.LoggerFactory;
21-
import com.alibaba.dubbo.common.utils.NamedThreadFactory;
21+
import com.alibaba.dubbo.common.threadlocal.NamedInternalThreadFactory;
2222
import com.alibaba.dubbo.rpc.Invocation;
2323
import com.alibaba.dubbo.rpc.Invoker;
2424
import com.alibaba.dubbo.rpc.Result;
2525
import com.alibaba.dubbo.rpc.RpcException;
2626
import com.alibaba.dubbo.rpc.RpcResult;
27+
import com.alibaba.dubbo.rpc.RpcContext;
2728
import com.alibaba.dubbo.rpc.cluster.Directory;
2829
import com.alibaba.dubbo.rpc.cluster.LoadBalance;
2930

@@ -50,7 +51,13 @@ public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
5051

5152
private static final long RETRY_FAILED_PERIOD = 5 * 1000;
5253

53-
private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2, new NamedThreadFactory("failback-cluster-timer", true));
54+
/**
55+
* Use {@link NamedInternalThreadFactory} to produce {@link com.alibaba.dubbo.common.threadlocal.InternalThread}
56+
* which with the use of {@link com.alibaba.dubbo.common.threadlocal.InternalThreadLocal} in {@link RpcContext}.
57+
*/
58+
private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2,
59+
new NamedInternalThreadFactory("failback-cluster-timer", true));
60+
5461
private final ConcurrentMap<Invocation, AbstractClusterInvoker<?>> failed = new ConcurrentHashMap<Invocation, AbstractClusterInvoker<?>>();
5562
private volatile ScheduledFuture<?> retryFuture;
5663

dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/support/ForkingClusterInvoker.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package com.alibaba.dubbo.rpc.cluster.support;
1818

1919
import com.alibaba.dubbo.common.Constants;
20-
import com.alibaba.dubbo.common.utils.NamedThreadFactory;
20+
import com.alibaba.dubbo.common.threadlocal.NamedInternalThreadFactory;
2121
import com.alibaba.dubbo.rpc.Invocation;
2222
import com.alibaba.dubbo.rpc.Invoker;
2323
import com.alibaba.dubbo.rpc.Result;
@@ -43,7 +43,12 @@
4343
*/
4444
public class ForkingClusterInvoker<T> extends AbstractClusterInvoker<T> {
4545

46-
private final ExecutorService executor = Executors.newCachedThreadPool(new NamedThreadFactory("forking-cluster-timer", true));
46+
/**
47+
* Use {@link NamedInternalThreadFactory} to produce {@link com.alibaba.dubbo.common.threadlocal.InternalThread}
48+
* which with the use of {@link com.alibaba.dubbo.common.threadlocal.InternalThreadLocal} in {@link RpcContext}.
49+
*/
50+
private final ExecutorService executor = Executors.newCachedThreadPool(
51+
new NamedInternalThreadFactory("forking-cluster-timer", true));
4752

4853
public ForkingClusterInvoker(Directory<T> directory) {
4954
super(directory);

0 commit comments

Comments
 (0)