Use InternalThreadLocal in consumer side (#1825)
author时无两丶 <442367943@qq.com>
Fri, 25 May 2018 02:14:03 +0000 (10:14 +0800)
committerIan Luo <ian.luo@gmail.com>
Fri, 25 May 2018 02:14:03 +0000 (10:14 +0800)
commit0bf6910b672add6363004010ab6421158c7097dd
treea59a11bd2e1dec97297008c42470cf1a20de8843
parent47adfd047b2df5ab2f5ca9740e85676ce53066f9
Use InternalThreadLocal in consumer side (#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.
dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/support/FailbackClusterInvoker.java
dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/support/ForkingClusterInvoker.java