diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 28f0749374b7e3f78cfd976ff4da5719f060ca2f..91b58e4c3ca5222c06e285c69a1710aea33c808c 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -8,10 +8,10 @@ + - diff --git a/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 b/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 index e32135fa987a8b7061ec98303255d4ffc4b22d9a..5b9054f5f533b817c86559853926c2d8f1f53ae5 100644 --- a/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 +++ b/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 @@ -1,2 +1,6 @@ -U java:S106"9Replace this use of System.out or System.err by a logger.(߫ź8. \ No newline at end of file +U java:S106"9Replace this use of System.out or System.err by a logger.(߫ź8. +[ +java:S1854">Remove this useless assignment to local variable "rpcClient2".(8իؤ. +L +java:S1481"/Remove this unused "rpcClient2" local variable.(8ؤ. \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 b/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 index 9b3bb6b2a0971ab013dcab391ee89eefe6cbe118..2bd11508c783a55c0e881c522777f3db2bb9f478 100644 --- a/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 +++ b/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 @@ -1,3 +1,3 @@ G -java:S1948",Make "parameters" transient or serializable.( \ No newline at end of file +java:S1948",Make "parameters" transient or serializable.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 b/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 index 726b8cfce002f0a1adeae93c2a287c355deca1b0..7f500511a357392d373c01989ea306e3626bd961 100644 --- a/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 +++ b/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 @@ -1,3 +1,3 @@ C -java:S1948"&Make "data" transient or serializable.(ݵ8ε . \ No newline at end of file +java:S1948%"&Make "data" transient or serializable.(ݵ8ε . \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index 3eae6aa0cec6d516515e95ae310f371ece529bf9..1d3666dc17556c69e7a485b3896ed611bf9006bf 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -43,18 +43,42 @@ Xrpc-framework-common/src/main/java/github/javaguide/enumeration/RpcErrorMessage README.md,8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d  Qrpc-framework-simple/src/main/java/github/javaguide/registry/ServiceRegistry.java,4/e/4eee7bde8d258a3ad13d5aad4b1fd0f47f159c22 - -brpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcRequestHandlerRunnable.java,3/8/38c46e918cbf2fd183a4d20b5269ff145a5da008  Xrpc-framework-simple/src/main/java/github/javaguide/registry/DefaultServiceRegistry.java,8/a/8a8f0ad1908e89647431f04ae22e059fd159d0c1 - -Rrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcClient.java,8/c/8c93c859db3a1cebbda725b6225a89337732c108 - -Wrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcClientProxy.java,3/5/350655342260f50b6ee7ce69dcb361bad3956984 - -Rrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcServer.java,c/f/cf4f29284214a49bc9f1eeb91eff2d0fbb46e184 - -Srpc-framework-simple/src/main/java/github/javaguide/remoting/RpcRequestHandler.java,e/b/eb77dbc7968406e86bad5a749c9941052f4f3ccc : -.gitignore,a/5/a5cc2925ca8258af241be7e5b0381edf30266302 \ No newline at end of file +.gitignore,a/5/a5cc2925ca8258af241be7e5b0381edf30266302 + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcServer.java,4/f/4f3eda1b64c4d4f1b976343bec03d82d70d85cb1 + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyKryoDecoder.java,7/9/79a691ec739a58083ef0ac1389203a2fbd71f456 +} +Mrpc-framework-simple/src/main/java/github/javaguide/serialize/Serializer.java,a/2/a281e49e82a8ec2f7ba12a8bcb5f2186f46d0c77 + +Urpc-framework-common/src/main/java/github/javaguide/exception/SerializeException.java,1/e/1e9d139dec5a90552b914b239037df398d72bfb1 + +Vrpc-framework-simple/src/main/java/github/javaguide/serialize/kyro/KryoSerializer.java,7/7/77bd9277dc37adef29330c1e78ac2f2485032917 + +Qrpc-framework-simple/src/main/java/github/javaguide/transport/RpcClientProxy.java,2/8/28a849b18f6cfe08ef45a480dff1b8324e54e765 +| +Lrpc-framework-simple/src/main/java/github/javaguide/transport/RpcClient.java,a/2/a2293a8598601b418206102ff4a42e86ac5c116d + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcClient.java,5/0/50091113d4118fd9d05b7a80930d905591dadd6c + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyKryoEncoder.java,e/5/e5d48526802e06de10a1802186f9d33d10ff47aa +r +Bexample-server/src/main/java/github/javaguide/NettyServerMain.java,1/7/171870430a59c0c44d9340650aff70ba39acaea8 +r +Bexample-client/src/main/java/github/javaguide/NettyClientMain.java,9/e/9ec852e88ae42cd2b9eceb76fd0df53f26fa5b76 + +Wrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyRpcClient.java,a/2/a2710f8ba941b11e1d834a0c57a10db363ee4baf + +Wrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyRpcServer.java,b/a/ba3e575560636fde885135fa5277f533bf61af1c + +[rpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyClientHandler.java,c/d/cd2bc58a2ed26406a5749d14c0148f8237bb9e14 + +Trpc-framework-simple/src/main/java/github/javaguide/transport/RpcRequestHandler.java,7/6/76847b5dee1f00ac9229b826500369c60abd7b74 + +irpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcRequestHandlerRunnable.java,7/d/7dc3255c598b3c45cab343a0a79f2aab582ce3a0 + +[rpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyServerHandler.java,9/a/9a59d8568dc116ae0a68f1173ac9ae7c57ee637e \ No newline at end of file diff --git a/example-client/src/main/java/github/javaguide/NettyClientMain.java b/example-client/src/main/java/github/javaguide/NettyClientMain.java index 911cc1ae31cf12a0d0359e478777292c8dbacce2..2e08811396149c686f826bfca1ccf4e2ab092dc3 100644 --- a/example-client/src/main/java/github/javaguide/NettyClientMain.java +++ b/example-client/src/main/java/github/javaguide/NettyClientMain.java @@ -2,8 +2,7 @@ package github.javaguide; import github.javaguide.transport.RpcClient; import github.javaguide.transport.RpcClientProxy; -import github.javaguide.transport.netty.NettyRpcClient; -import github.javaguide.transport.socket.SocketRpcClient; +import github.javaguide.transport.netty.client.NettyRpcClient; /** * @author shuang.kou diff --git a/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java b/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java index b15b4fdce2a6fcc865d66c216837eacb13fbba24..08651b74c027d2bc521dff9b1f26bbef69887762 100644 --- a/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java +++ b/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java @@ -2,7 +2,7 @@ package github.javaguide; import github.javaguide.transport.RpcClient; import github.javaguide.transport.RpcClientProxy; -import github.javaguide.transport.netty.NettyRpcClient; +import github.javaguide.transport.netty.client.NettyRpcClient; import github.javaguide.transport.socket.SocketRpcClient; /** diff --git a/example-client/target/classes/github/javaguide/NettyClientMain.class b/example-client/target/classes/github/javaguide/NettyClientMain.class index 6278923b90986d4984149d381bcaaa18c06534a2..e727e6c89acdaea2148924f1b0a729f3ab3f9166 100644 Binary files a/example-client/target/classes/github/javaguide/NettyClientMain.class and b/example-client/target/classes/github/javaguide/NettyClientMain.class differ diff --git a/example-client/target/classes/github/javaguide/RpcFrameworkSimpleClientMain.class b/example-client/target/classes/github/javaguide/RpcFrameworkSimpleClientMain.class index 901803e55642ddc4b2db8d341b06464a785080f7..309ebca05d0928b0c96aab91140f82b0d50c19d4 100644 Binary files a/example-client/target/classes/github/javaguide/RpcFrameworkSimpleClientMain.class and b/example-client/target/classes/github/javaguide/RpcFrameworkSimpleClientMain.class differ diff --git a/example-server/src/main/java/github/javaguide/NettyServerMain.java b/example-server/src/main/java/github/javaguide/NettyServerMain.java index c98af16bc4a85121196f104716a33403f1108956..6e88a44914e8ec932a88a3a7447de4d3c04516f9 100644 --- a/example-server/src/main/java/github/javaguide/NettyServerMain.java +++ b/example-server/src/main/java/github/javaguide/NettyServerMain.java @@ -1,8 +1,7 @@ package github.javaguide; import github.javaguide.registry.DefaultServiceRegistry; -import github.javaguide.transport.netty.NettyRpcServer; -import github.javaguide.transport.socket.SocketRpcServer; +import github.javaguide.transport.netty.server.NettyRpcServer; /** * @author shuang.kou diff --git a/example-server/target/classes/github/javaguide/NettyServerMain.class b/example-server/target/classes/github/javaguide/NettyServerMain.class index 4e3833bd62ae9c06ba3c25563b49ee48de47c067..99914892b4292500fabf2200e9643ffb63390f2f 100644 Binary files a/example-server/target/classes/github/javaguide/NettyServerMain.class and b/example-server/target/classes/github/javaguide/NettyServerMain.class differ diff --git a/pom.xml b/pom.xml index b1880ef1cc80384eec98e8aa8e6ca60a510879e7..d65a630c971133271eecb7f1b70f57eea1d52003 100644 --- a/pom.xml +++ b/pom.xml @@ -15,8 +15,11 @@ 2.9.0 1.7.25 + 4.1.42.Final 4.0.2 + + 29.0-jre rpc-framework-core diff --git a/rpc-framework-common/pom.xml b/rpc-framework-common/pom.xml index cb798ae700a928728ad37612a9590df1b09d0cd2..54fc89b821c2d4b5071deaf547812bdcb4914614 100644 --- a/rpc-framework-common/pom.xml +++ b/rpc-framework-common/pom.xml @@ -11,5 +11,13 @@ rpc-framework-common + + + + com.google.guava + guava + ${guava.version} + + diff --git a/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java b/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..01bbe410818aa09ed7fb6abd90f0c736efeee802 --- /dev/null +++ b/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java @@ -0,0 +1,63 @@ +package github.javaguide.utils.concurrent; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * 创建 ThreadPool(线程池) 的工具类. + * + * @author shuang.kou + * @createTime 2020年05月26日 16:00:00 + */ +public class ThreadPoolFactory { + /** + * 线程池参数 + */ + private static final int CORE_POOL_SIZE = 10; + private static final int MAXIMUM_POOL_SIZE_SIZE = 100; + private static final int KEEP_ALIVE_TIME = 1; + private static final int BLOCKING_QUEUE_CAPACITY = 100; + + private ThreadPoolFactory() { + + } + + public static ExecutorService createDefaultThreadPool(String threadNamePrefix) { + return createDefaultThreadPool(threadNamePrefix, false); + } + + public static ExecutorService createDefaultThreadPool(String threadNamePrefix, Boolean daemon) { + // 使用有界队列 + BlockingQueue workQueue = new ArrayBlockingQueue<>(BLOCKING_QUEUE_CAPACITY); + ThreadFactory threadFactory = createThreadFactory(threadNamePrefix, daemon); + return new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE_SIZE, KEEP_ALIVE_TIME, TimeUnit.MINUTES, workQueue, threadFactory); + } + + + /** + * 创建 ThreadFactory 。如果threadNamePrefix不为空则使用自建ThreadFactory,否则使用defaultThreadFactory + * + * @param threadNamePrefix 作为创建的线程名字的前缀 + * @param daemon 指定是否为 Daemon Thread(守护线程) + * @return ThreadFactory + */ + private static ThreadFactory createThreadFactory(String threadNamePrefix, Boolean daemon) { + if (threadNamePrefix != null) { + if (daemon != null) { + return new ThreadFactoryBuilder().setNameFormat(threadNamePrefix + "-%d").setDaemon(daemon).build(); + } else { + return new ThreadFactoryBuilder().setNameFormat(threadNamePrefix + "-%d").build(); + } + } + + return Executors.defaultThreadFactory(); + } + +} diff --git a/rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class b/rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..fd46af41f6a8b0c3e71ffffc177e220fd2761c9d Binary files /dev/null and b/rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class differ