依赖
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<lombok.version>1.18.22</lombok.version>
<hutool.version>5.7.22</hutool.version>
<logback.version>1.3.14</logback.version>
<netty.version>4.1.77.Final</netty.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
SocketRpcClient实现
发送请求RpcReq到服务端
SocketRpcServer实现
接受客户端的请求, 并返回数据RpcResp
处理客户端请求
调用对应实现类的方法, 获取结果
- RpcReqHandler
服务发布与注册
{
"com.pig.api.UserService + 1.0 + common": new CommonUserServiceImpl1(),
"com.pig.api.UserService + 2.0 + common": new CommonUserServiceImpl2(),
"com.pig.api.UserService + 1.0 + admin": new AdminUserServiceImpl1(),
"com.pig.api.UserService + 2.0 + admin": new AdminUserServiceImpl2(),
}
实现ServiceProvider
多线程请求处理
SocketReqHandler
- 忘记调用shutdownHookUtils了
动态代理实现发送请求
- 静态代理
- 动态代理 (aop)
-
- jdk动态代理 (被代理类必须实现接口, 动态生成被代理类接口的实现类)
-
- cglib动态代理 (动态生成被代理类的子类)
RPC - Netty+Zookeeper实现
Zookeeper实现服务注册
Zookeeper使用
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
zookeeper本地缓存
ZkServiceProvider