【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 ...
随机推荐
- 机器学习:scikit-learn 做笑脸识别 (SVM, KNN, Logisitc regression)
scikit-learn 是 Python 非常强大的一个做机器学习的包,今天介绍scikit-learn 里几个常用的分类器 SVM, KNN 和 logistic regression,用来做笑脸 ...
- 主干(trunk)、分支(branch )、标记(tag)
主干(trunk).分支(branch ).标记(tag) 用法示例 + 图解 以svn为例,git的master相当于trunk,dev分支相当于branches --------------- ...
- 正交函数(orthogonal functions)
a map is a function. 映射即函数: 1. 双线性映射与双线性形式 bilinear map 基于同一定义域,将两个向量空间(V,W)中的向量映射为第三个向量空间(X)的向量的函数: ...
- 好记性不如烂笔头88-spring3学习(9)-schema的配置的解读和说明
Spring1使用了DTD格式,spring2以后使用的是schema的格式:使用schema的格式,支持了不同类型的配置拥有了自己的命名空间,让配置文件有了更加好的扩展性. 不论什么事情,都是有利有 ...
- DataContext和ItemSource
一对多的关系DataContext为上下文,绑定数据源ItemSource取上下文中的某属性,会一级一级往上找属性 一般ItemSource的绑定,绑定到Grid/DataGrid一类容器上,底下的控 ...
- iPhone开发笔记(20)EGOImageView的使用方法及注意事项
EGOImageView是一种实现网络图片的异步加载和缓存的第三方类库,具有相同功能的第三方类库还有SDWebImage.但是相比两个类库的安装和使用来说,EGOImageView更简单一些,下面就介 ...
- 最好的方式是用VirtualAlloc分配虚拟内存,它既不是在堆也不是在栈,而是直接在进程的地址空间中保留一块内存
申请效率的比较 栈:由系统自动分配,速度较快.但程序员是无法控制的. 堆:是由new分配的内存,最好的方式是用VirtualAlloc分配虚拟内存,它既不是在堆也不是在栈,而是直接在进程的地址空间中保 ...
- sql server 定时备份数据库
CREATE PROCEDURE [dbo].[SP_DBBackup_EveryNight_Local] @cycle INT, ---保存周期 @IsLocal INT, ---是否为本地 0表示 ...
- 【Gerrit】持续集成工具Jenkins的安装配置与使用过程中遇到的问题整理
1.下载war包 https://jenkins.io/download/ 2.安装 java -jar jenkins.war Error: Feb 21, 2019 2:17:25 AM wins ...
- 图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果
原文:图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果 本文介绍一下如何使用Photoshop来实现Instagram中的Mayfair滤镜的效果. 以上就是这个滤镜 ...