diff --git a/README.md b/README.md
index bec3697..0259d90 100644
--- a/README.md
+++ b/README.md
@@ -203,20 +203,22 @@

-
-
# 版本五
-- 添加Hessian、protostuff、kryo等序列化方式
-- 优化了服务端的关闭
-- 配置顶
- SPI机制
+- 配置顶
+- 新增kryo、Hessian、protostuff等序列化方式
+- 优化关闭方法

+
+
+
+
# TodoList
-- [ ] 集成Spring
+- [ ] 使用注解注册服务,消费服务
- [ ] 主动下线失败次数过多的节点
diff --git a/version5/.idea/.gitignore b/version5/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/version5/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/version5/.idea/compiler.xml b/version5/.idea/compiler.xml
new file mode 100644
index 0000000..c8f73e3
--- /dev/null
+++ b/version5/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/encodings.xml b/version5/.idea/encodings.xml
new file mode 100644
index 0000000..1da27bf
--- /dev/null
+++ b/version5/.idea/encodings.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/inspectionProfiles/Project_Default.xml b/version5/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..c8e8ddc
--- /dev/null
+++ b/version5/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/jarRepositories.xml b/version5/.idea/jarRepositories.xml
new file mode 100644
index 0000000..5a2f139
--- /dev/null
+++ b/version5/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/misc.xml b/version5/.idea/misc.xml
new file mode 100644
index 0000000..4914f21
--- /dev/null
+++ b/version5/.idea/misc.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/uiDesigner.xml b/version5/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/version5/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/vcs.xml b/version5/.idea/vcs.xml
new file mode 100644
index 0000000..d843f34
--- /dev/null
+++ b/version5/.idea/vcs.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/version5/krpc-api/pom.xml b/version5/krpc-api/pom.xml
new file mode 100644
index 0000000..c0f741b
--- /dev/null
+++ b/version5/krpc-api/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+ com.kama
+ version5
+ 1.0-SNAPSHOT
+
+
+ krpc-api
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/version5/krpc-api/src/main/java/com/kama/pojo/User.java b/version5/krpc-api/src/main/java/com/kama/pojo/User.java
new file mode 100644
index 0000000..3713995
--- /dev/null
+++ b/version5/krpc-api/src/main/java/com/kama/pojo/User.java
@@ -0,0 +1,26 @@
+package com.kama.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName User
+ * @Description User对象
+ * @Author Tong
+ * @LastChangeDate 2024-12-05 0:53
+ * @Version v5.0
+ */
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class User implements Serializable {
+ // 客户端和服务端共有的
+ private Integer id;
+ private String userName;
+ private Boolean gender;
+}
diff --git a/version5/krpc-api/src/main/java/com/kama/service/UserService.java b/version5/krpc-api/src/main/java/com/kama/service/UserService.java
new file mode 100644
index 0000000..388978b
--- /dev/null
+++ b/version5/krpc-api/src/main/java/com/kama/service/UserService.java
@@ -0,0 +1,19 @@
+package com.kama.service;
+
+
+import com.kama.pojo.User;
+
+/**
+ * @InterfaceName UserService
+ * @Description 接口
+ * @Author Tong
+ * @LastChangeDate 2024-12-05 0:52
+ * @Version v1.0
+ */
+
+public interface UserService {
+ // 查询
+ User getUserByUserId(Integer id);
+ // 新增
+ Integer insertUserId(User user);
+}
diff --git a/version5/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class b/version5/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class
new file mode 100644
index 0000000..261a629
Binary files /dev/null and b/version5/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class differ
diff --git a/version5/krpc-api/target/classes/com/kama/pojo/User.class b/version5/krpc-api/target/classes/com/kama/pojo/User.class
new file mode 100644
index 0000000..1dc838d
Binary files /dev/null and b/version5/krpc-api/target/classes/com/kama/pojo/User.class differ
diff --git a/version5/krpc-api/target/classes/com/kama/service/UserService.class b/version5/krpc-api/target/classes/com/kama/service/UserService.class
new file mode 100644
index 0000000..b95b247
Binary files /dev/null and b/version5/krpc-api/target/classes/com/kama/service/UserService.class differ
diff --git a/version5/krpc-api/target/krpc-api-1.0-SNAPSHOT.jar b/version5/krpc-api/target/krpc-api-1.0-SNAPSHOT.jar
new file mode 100644
index 0000000..6cbcde5
Binary files /dev/null and b/version5/krpc-api/target/krpc-api-1.0-SNAPSHOT.jar differ
diff --git a/version5/krpc-api/target/maven-archiver/pom.properties b/version5/krpc-api/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..243e555
--- /dev/null
+++ b/version5/krpc-api/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu Dec 05 15:18:25 CST 2024
+groupId=com.kama
+artifactId=krpc-api
+version=1.0-SNAPSHOT
diff --git a/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..bf00c34
--- /dev/null
+++ b/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,3 @@
+com\kama\pojo\User$UserBuilder.class
+com\kama\pojo\User.class
+com\kama\service\UserService.class
diff --git a/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..f327769
--- /dev/null
+++ b/version5/krpc-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,2 @@
+D:\java_stduy\version5\krpc-api\src\main\java\com\kama\pojo\User.java
+D:\java_stduy\version5\krpc-api\src\main\java\com\kama\service\UserService.java
diff --git a/version5/krpc-common/pom.xml b/version5/krpc-common/pom.xml
new file mode 100644
index 0000000..9434747
--- /dev/null
+++ b/version5/krpc-common/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ com.kama
+ version5
+ 1.0-SNAPSHOT
+
+
+ krpc-common
+
+
+ com.kama
+ krpc-api
+ 1.0-SNAPSHOT
+
+
+ cn.hutool
+ hutool-all
+ 5.8.10
+ compile
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/version5/krpc-common/src/main/java/common/exception/SerializeException.java b/version5/krpc-common/src/main/java/common/exception/SerializeException.java
new file mode 100644
index 0000000..33a75a5
--- /dev/null
+++ b/version5/krpc-common/src/main/java/common/exception/SerializeException.java
@@ -0,0 +1,17 @@
+package common.exception;
+
+/**
+ * @ClassName SerializeException
+ * @Description ToDo
+ * @Author Tong
+ * @LastChangeDate 2024-12-02 19:18
+ * @Version v1.0
+ */
+public class SerializeException extends RuntimeException{
+ public SerializeException(String message) {
+ super(message);
+ }
+ public SerializeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/version5/krpc-common/src/main/java/common/message/MessageType.java b/version5/krpc-common/src/main/java/common/message/MessageType.java
new file mode 100644
index 0000000..51f44c0
--- /dev/null
+++ b/version5/krpc-common/src/main/java/common/message/MessageType.java
@@ -0,0 +1,13 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum MessageType {
+ REQUEST(0), RESPONSE(1);
+ private int code;
+
+ public int getCode() {
+ return code;
+ }
+}
diff --git a/version5/krpc-common/src/main/java/common/message/RpcRequest.java b/version5/krpc-common/src/main/java/common/message/RpcRequest.java
new file mode 100644
index 0000000..b44a931
--- /dev/null
+++ b/version5/krpc-common/src/main/java/common/message/RpcRequest.java
@@ -0,0 +1,31 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName RpcRequest
+ * @Description 定义请求消息格式
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:12
+ * @Version v5.0
+ */
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class RpcRequest implements Serializable {
+ //接口名、方法名、参数列表参数类型
+ private String interfaceName;
+
+ private String methodName;
+
+ private Object[] params;
+
+ private Class>[] paramsType;
+}
diff --git a/version5/krpc-common/src/main/java/common/message/RpcResponse.java b/version5/krpc-common/src/main/java/common/message/RpcResponse.java
new file mode 100644
index 0000000..3d0fc81
--- /dev/null
+++ b/version5/krpc-common/src/main/java/common/message/RpcResponse.java
@@ -0,0 +1,37 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName RpcResponse
+ * @Description 定义响应消息格式
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:14
+ * @Version v5.0
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class RpcResponse implements Serializable {
+ //状态信息
+ private int code;
+ private String message;
+ //更新:加入传输数据的类型,以便在自定义序列化器中解析
+ private Class> dataType;
+ //具体数据
+ private Object data;
+
+ public static RpcResponse sussess(Object data) {
+ return RpcResponse.builder().code(200).dataType(data.getClass()).data(data).build();
+ }
+
+ public static RpcResponse fail(String msg) {
+ return RpcResponse.builder().code(500).message(msg).build();
+ }
+}
diff --git a/version5/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java b/version5/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java
new file mode 100644
index 0000000..16c2d26
--- /dev/null
+++ b/version5/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java
@@ -0,0 +1,58 @@
+package common.serializer.mycoder;
+
+
+import common.exception.SerializeException;
+import common.message.MessageType;
+import common.serializer.myserializer.Serializer;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.ByteToMessageDecoder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @ClassName MyDecoder
+ * @Description 解码器
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:32
+ * @Version v5.0
+ */
+@Slf4j
+public class MyDecoder extends ByteToMessageDecoder {
+ @Override
+ protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf in, List