标签:个人总结 类型 strong socket eve 不用 英文 推荐 设计
java有提供的操作网络的接口有两种IO和NIO,JDK7还有NIO2,NIO就是非阻塞的IO,NIO是一个线程对应多个客户端,IO则是一个SOCKET对一个线程,两者的模型图如下
Netty则是一个封装了io和nio的高性能高可用的网络框架,通过netty简化又丰富了原生的NIO操作,并且避免了NIO的原生缺陷。
一个简单的nettydemo最少需要配置以下这些东西:Bootstrap ,然后在Bootstrap中分别指定EventLoopGroup,Channel,childHander 其中前面两个必须同是IO或者同时NIO的实现类型,childHander则是具体实现业务逻辑的地方,可以说一个hander代表一个功能,所有的hander都有共同的底层基础,通过组合各个hander,包括netty自带的和我们自己实现的,最终作为一个整体,提供应有的业务服务,netty本身提供了大量的hander来支持我们的开发,包括对常见的HTTP协议,websocket协议,spdy协议,实现了底层协议的封装,使开发者不用关心细节,而且所有这些提供的hander都实现了netty抽象出来的抽象类,因此我们还可以通过自定义的类对netty原有的类进行替换。Netty的hander都保存在ChannelContext中,分为In和Out两大类
Netty3线程模型
Netty4线程模型
本人学习netty主要是靠两本书(netty in action 英文版和翻译版)和idea,经过两本书的对比,我强烈推荐大家看英文原版,不仅可以学技术还可以提高你的英文水平,这里还要几个我觉得比较重要的点,1.hander的顺序>解密>解压缩>聚合FullHttpRequest
感谢各位能看到这儿,笔者写这篇博客主要是从个人总结的角度来写的,有什么不足之处欢迎大家指正和提出建议。
标签:个人总结 类型 strong socket eve 不用 英文 推荐 设计
原文地址:https://www.cnblogs.com/yintutu/p/9398597.html