我正在开发一个基于Netty libraby的服务器,我在如何构建与业务逻辑有关的应用程序时遇到了问题。Netty中的业务逻辑?
currenty我在最后一个处理程序中有业务逻辑,这就是我访问数据库的地方。我无法控制的东西是访问数据库的延迟(阻塞代码)。是否建议在处理程序中执行此操作,还是有其他替代方法?代码如下:
public void channelRead(ChannelHandlerContext ctx, Object msg)
throws Exception {
super.channelRead(ctx, msg);
Msg message = (Msg)msg;
switch(message.messageType){
case MType.SIGN_UP:
userReg.signUp(message.user);// blocking database access
break;
}
}
你的第一个解决方案不能缩放:如果你在阻塞调用时有100个客户端,你将很快结束所有的线程锁定在线程池中(导致每个新的连接完成)它将适用于一个非常小的应用程序,但不适用于一个正常的网站,第一个机器人爬行器将ddos您的服务器 –
诺曼mauer说:http://normanmaurer.me/presentations/2014-facebook-eng-netty/slides.html #23.0 –