【Netty整理02-详细使用】Netty入门
重新整理版:https://blog.csdn.net/the_fool_/article/details/83002152
参考资料:
官方文档:http://netty.io/wiki/user-guide-for-4.x.html
全部DEMO:https://github.com/netty/netty
Spring中获取Bean:https://www.cnblogs.com/yjbjingcha/p/6752265.html
网上查找Netty资料,看完了官方文档,也做了Demo,现在心里仍然有很多很多疑惑,于是拜读大牛的《Netty权威指南》一书,略作总结:
前置条件:Socket、IO。
1、是什么 :是一种NIO(非阻塞)的信息处理框架。其实这里已经说的很明确了,只是最开始自己没有看懂,才感觉理解很困难,所以,此时需要深入了解一下NIO的概念。这里我不做总结。建议查一下资料有个概念。
个人理解:就是对JDK提供的NIO进行封装(Netty03),增加稳定性、高效性、以及易用性!
2、出现:
JAVA在1.4以前(忘了),都只有BIO(同步阻塞)来处理信息(参考ServerSocket与Socket使用),并且没有异步IO的缓冲区ByteBuffer等。1.4时,以JSR-51身份正式发布(参考ServerSocketChannel与SocketChannel的使用)。
3、相关概念:
a、缓冲区Buffer:简单说,缓冲器无非是把字符或者字节数据读取到缓冲区,再从缓冲区写出,这种方式肯定比一个字节一个字节的写要快很多。
b、通道Channel: 通道与输入输出流最大的区别就是,它可以读数据也可以写数据!
c、多路复用器Selector:NIO核心。Channel会注册到Selector,Selector对Channel的轮询获取就绪的Channel进行IO操作。
4、应用场景:
Tomcat、Dubbo、淘宝那个Mq等底层通信。
可以说只要有通信的地方,就可以用Netty。比如网页上嵌入一个聊天工具窗口,比如向客户端推送数据,都可以使用Netty。
5、官方文档中的解释:
问题:
现在我们使用通用应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从web服务器检索信息,并通过web服务调用远程过程调用。然而,一般目的协议或其实现有时不能很好地扩展。这就像我们不使用通用的HTTP服务器来交换巨大的文件、电子邮件消息和几乎实时的消息(如财务信息和多人游戏数据)一样。需要的是一个高度优化的协议实现,专门用于特殊目的。例如,您可能希望实现一个针对基于ajax的聊天应用程序、流媒体或大型文件传输进行优化的HTTP服务器。您甚至可以设计和实现一个全新的协议,该协议是根据您的需要定制的。另一个不可避免的情况是,您必须处理遗留的私有协议,以确保与旧系统的互操作性。在这种情况下,重要的是我们能够多快地实现该协议,而不牺牲最终应用程序的稳定性和性能。
解决方案:
Netty项目致力于提供异步事件驱动的网络应用框架和工具,以快速开发可维护的高性能·高可扩展性协议服务器和客户端。
换句话说,Netty是一个NIO客户端服务器框架,它支持快速、轻松地开发网络应用程序,如协议服务器和客户端。它极大地简化了网络编程,如TCP和UDP套接字服务器开发。“快速和简单”并不意味着产生的应用程序会受到可维护性或性能问题的影响。Netty已经通过实现许多协议(如FTP、SMTP、HTTP以及各种基于二进制和文本的遗留协议)获得的经验进行了精心设计。因此,Netty成功地找到了一种方法来实现开发的易用性、性能、稳定性和灵活性,而不需要妥协。
Netty设计的目的是为您提供最舒适的体验,无论是在API方面还是在实现方面。
【Netty整理02-详细使用】Netty入门的更多相关文章
- 【Netty整理01-快速入门】Netty简单使用Demo(已验证)
多处摘抄或手打,为了十积分厚着脸皮标为原创,惭愧惭愧~本篇文章用于快速入门搭建一个简单的netty 应用,如想稍微深入系统的了解,请参照本人下一篇博客,链接: 参考地址: 官方文档:http://ne ...
- Netty 系列(三)Netty 入门
Netty 系列(三)Netty 入门 Netty 是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络服务器和客户端程序.更多请参考:Netty Github 和 Netty中文 ...
- netty深入学习之中的一个: 入门篇
netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java ...
- 详细讲讲netty的pipiline!
前言 提到 Netty 首当其冲被提起的肯定是支持它承受高并发的线程模型,说到线程模型就不得不提到 NioEventLoopGroup 这个线程池,接下来进入正题. 线程模型 首先来看一段 Netty ...
- Netty开发redis客户端,Netty发送redis命令,netty解析redis消息
关键字:Netty开发redis客户端,Netty发送redis命令,netty解析redis消息, netty redis ,redis RESP协议.redis客户端,netty redis协议 ...
- 【Netty】最透彻的Netty原理架构解析
这可能是目前最透彻的Netty原理架构解析 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. ...
- Netty那点事: 概述, Netty中的buffer, Channel与Pipeline
Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...
- Wix学习整理(1)——快速入门HelloWorld
原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Instal ...
- Netty构建游戏服务器(三)--netty spring简单整合
一,基本方法 上节实现了netty的基本连接,这节加入spring来管理netty,由spring来开启netty服务. 在netty服务器中,我们建立了三个类:HelloServer(程序主入口) ...
- java架构之路-(netty专题)netty的基本使用和netty聊天室
上次回顾: 上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图. Netty概念: Ne ...
随机推荐
- 手把手教你启用Win10的Linux子系统(超详细)
原文:手把手教你启用Win10的Linux子系统(超详细) 版权声明:转载请保留出处,谢谢! https://blog.csdn.net/zhangdongren/article/details/82 ...
- silverlight,WPF动画终极攻略之迟来的第三章 动画整合篇(Blend 4开发)
原文:silverlight,WPF动画终极攻略之迟来的第三章 动画整合篇(Blend 4开发) 有个问题想请教下大家,我仿了腾讯的SL版QQ,相似度95%以上.我想写成教程教大家怎么开发出来,会不会 ...
- C#进程创建监控
关于c#进程创建监控的文章大多都是“遍历一次进程用if去判断存在或否”这样的方法,我觉得体验不是很好.这几天写的一个软件正好需要实时监控进程创建的模块,在网上找到了很不错的方法,整理一下分享出来给大家 ...
- HDU1728 从迷宫中逃脱 【方向BFS】
从迷宫中逃脱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- vim for windows download and installation
这是vim皇冠vim简要 ------------------------------------------------- WHAT IS VIM Vim is an almost compatib ...
- Hadoop入门实验
一.实验目的 了解Hadoop的MapeReduce工作原理 二.实验内容 实现基于单机的伪分布式运行模拟 三.实验需要准备的软件和源 1.Jdk1.6以上 下载地址:http://www.oracl ...
- STM32处理器AD难度整理
1.STM32的AD变化,任务组可以转换成两组:规则组和注射组.随机序列按随机顺序变换多种渠道构成了一组转换.例如.能够完成转换中,例如按照以下顺序:通道3.通道8.通道2.通道2.通道0.通道2.通 ...
- WPF 左键单击弹出菜单 ContextMenu
原文:WPF 左键单击弹出菜单 ContextMenu WPF中的ContextMenu在XAML中可直接做出来,但是仅限于右键弹出菜单,如果需要添加左键弹出功能,只需要在事件中添加Click事件 X ...
- Java之nio性能比较
结果:used time:53574684used time:1800077620used time:12563690可见MappedByteBuffer读写数据是最快的, 其次是FileChanne ...
- Win8 Metro(C#)数字图像处理--3.1图像均值计算
原文:Win8 Metro(C#)数字图像处理--3.1图像均值计算 /// <summary> /// Mean value computing. /// </summary> ...