代码地址
- https://github.com/yutian1999/my-cache
升级功能
-
支持主从模式
通过主从不同节点实现读写分离,进而支持更高的并发
依赖技术
-
webSocket
-
netty
基于netty实现的webSocket用于master节点与salve节点实现通信
设计与实现
同步的两种机制
- 同步
- 命令传播
master节点作为服务端,salve节点作为客户端,salve节点向master节点发起连接,master节点向salve节点传输数据。
master 服务端代码
@Slf4j
public class WebSocketServer {
/**
* 单例
*/
public static WebSocketServer singleInstance = new WebSocketServer();
public static WebSocketServer inst() {
return singleInstance;
}
public final EventLoopGroup group = new NioEventLoopGroup();
private Channel channel;
/**
* 停止即时通讯服务器
*/
public void stop() {
if (channel != null) {
channel.close();
}
group.shutdownGracefully();
}
/**
* 启动即时通讯服务器
*/
public void start() {
final WebSocketServer webSocketServer = new WebSocketServer();
ChannelFuture channelFuture = null;
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(group)
.channel(NioServerSocketChannel.class)
.childHandler(new ChatServerInitializer());
InetSocketAddress address = new InetSock