传统IO(BIO,NIO)三缺点:
1.基于流,数据流,机械性能消耗大。
2.阻塞,服务器开了一个端口,只要没有客户端连接,它一直处于阻塞状态。
多线程方案,来一个客户端,就给他开个线程单独处理,产生了线程开销很大。
3.读和写并没有完全分离,读和写一定是在同一个线程完成的,读和写一定一起。
NIO解决问题:
1.基于管道,先把通讯的道路修好,轮询处理。
2.非阻塞(好像默认是阻塞,可以设定非阻塞),提高处理效率。
3.读写可以分离的,大大提高通讯效率,
缓冲区做成两个,一个专门读一个专门写
对NIO操作,非常繁琐,读写分离还得分配两个缓冲区,
得开管道,一个比较繁琐的过程,来一个客户端要开一个线程。
这种前提下,我们的NIO框架就产生了。
为解决大家一个操作繁琐的过程,对NIO操作进行封装。
Netty,不仅仅对NIO封装
socket基本通信原理:
第一次,建立连接握手。
知道对方IP地址通不通,要知道对方端口能不能访问。
第二次,开始发送信息
服务端跟客户端,就相当于是进行实际的交互了。
第三次,服务端,要给客户端反馈。
第四次,通信完毕,连接断开或关闭
通信机制:
上层开发:做上层开发的话,是很少直接基础到底层协议的。
底层协议:
规范:
http协议:再熟悉不过
FTP协议:文件传输协议
MAIL协议:又见协议SMTP协议
Netty 封装了很多RPC
RMI就是RPC的一种 RPC>RMI
webService:基于soap这种协议规范,xml里面规定了传输对象类型,
调用方法名,传输到我们调用端的时候还得需要对xml进行解析,解析xml又非常的繁琐。
RMI:协议,字节流协议 序列化(客户端)和反序列化(服务器端)
字节流操作还需要转化成java对象 (socket),
对象的class字节码保存起来,classLoader反射
性能非常低下,
webService,RMI最终都转化成了二进制。
Netty
1.提高通信的性能。
2.对RPC操作进行的封装,使得我们操作简单化。
Dubbo dubbo:// 基于Netty进行封装,类似于RMI
小结:
1.NIO操作进行了封装
2.RPC进行了封装
二.Netty能做什么?
IO框架,只要做网络之间通信,Netty都能做。
三.Netty下的网络协议:
工作原理:
master主线程
work从线程
四:代码:
问题思考 netty为什么没有使用AIO
https://github.com/netty/netty/issues/2515
- 大小: 26.4 KB
- 大小: 280 KB
分享到:
相关推荐
netty相关源码1
Netty 5.0.0.Alpha2 版本,包含:Jar包+源代码+API文档。 官网Netty 5.0版本已经废弃,所以发布出来,方便大家下载。 《Netty权威指南》一书使用的就是Netty 5.0
作为Java语言领域最流行、表现最优异的NIO框架,Netty深受大家喜爱,但是长期以来除了 UserGuide 之外,国内鲜有 Netty 相关的系统性文章供广大 NIO 编程爱好者学习和参考。由于 Netty 源码的复杂性和 NIO 编程本身...
java面试 Spring和Netty相关问题
netty 是基于Java NIO的网络通信架构,文件中包含netty所需jar包
netty-3.7.0.Final.jar,netty-all-4.1.73.Final.jar,netty-buffer-4.1.82.Final.jar,netty-codec-4.1.82.Final.jar,...netty-codec-stomp-4.1.73.Final.jar,netty-codec-xml-4.1.73.Final等netty相关的jar文件
netty-4.1.4-jar包
基于springboot+netty+webscoket实现的及时通讯,封装netty相关接口
《Netty进阶之路:跟着案例学Netty》中的案例涵盖了Netty...在案例的分析过程中,还穿插讲解了Netty的问题定位思路、方法、技巧,以及解决问题使用的相关工具,对读者在实际工作中用好Netty具有很大的帮助和启发作用。
第5章,介绍Netty相关基础知识,并使用Netty实现长连接服务端的编码。 适用人群 具有一定的Java开发基础; 学习Java开发领域Spring框架之外的东西; 想快速通过实战项目提升个人能力的同学。 想通过实战入门NIO、...
在本书中,作者将在过去几年实践中遇到的问题,以及Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在...
netty 相关jar 包 下载 netty-all-5.0.0.Alpha2-javadoc.jar 2015-03-04 6.09M netty-all-5.0.0.Alpha2-sources.jar 2015-03-04 2.01M netty-all-5.0.0.Alpha2.jar 2015-03-04 2.56M netty-all-5.0.0.Alpha2.pom...
netty-4.1.16 jar包,包含 netty相关4.1.16所有包!
本书适合架构师、设计师、软件开发工程师、测试人员和其他对Java NIO框架、Java通信感兴趣的相关人士阅读,相信通过学习本书,能够熟悉和掌握Netty这一优秀的异步通信框架,实现高可用分布式系统的构建。
netty源码和相关中文文档。帮助您快速上手netty开发。netty体验之旅祝您愉快
《Netty 权威指南(第2 版)》适合架构师、设计师、软件开发工程师、测试人员以及其他对JavaNIO 框架、Netty 感兴趣的相关人士阅读,通过《Netty 权威指南(第2 版)》的学习,读者不仅能够掌握Netty 基础功能的使用...
”然后留下一顿崇拜的目光离开,回来后悄悄打开netty相关知识,开始编程。 什么是Netty?Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。如果你还得去看...
《Netty 权威指南(第2 版)》适合架构师、设计师、软件开发工程师、测试人员以及其他对JavaNIO 框架、Netty 感兴趣的相关人士阅读,通过《Netty 权威指南(第2 版)》的学习,读者不仅能够掌握Netty 基础功能的使用...
《Netty权威指南》适合架构师、设计师、软件开发工程师、测试人员和其他对Java NIO框架、Java通信感兴趣的相关人士阅读,相信通过学习《Netty权威指南》,能够熟悉和掌握Netty这一优秀的异步通信框架,实现高可用...