Netty,百度百科地址:点击跳转
Netty,官网地址地址:点击跳转
Netty, 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。
Netty ,是由JBOSS提供的一个JAVA开源框架,现为GIthub 项目;
Netty,是一个异步的,基于事件驱动的网络应用框架,用以快速开发高性能,高可靠性的网络IO程序;
Netty ,主要针对在TCP协议下,面向Clients 端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用;
Netty,本质是一个NIO框架,适用于服务器通讯相关的多种应用场景;
Netty,结构构成大致如下:
百度百科地址:点击跳转
事件驱动是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。在计算机编程、公共关系、经济活动等领域均有应用。
Netty 能做什么简单地说就是你点什么按钮(即产生什么事件),电脑执行什么 *** 作(即调用什么函数). 当然事件不仅限于用户的 *** 作。事件驱动的核心自然是事件。从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如 *** 作系统、应用程序本身等)。事件发送器负责将收集器收集到的事件分发到目标对象中。事件处理器做具体的事件响应工作,它往往要到实现阶段才完全确定,因而需要运用虚函数机制(函数名往往取为类似于 HandleMsg 的一个名字)。对于框架的使用者来说,他们能够看到的是事件处理器。这也是他们所关心的内容
传统的 HTTP 服务器的原理。有了 Netty,你可以实现自己的 HTTP 服务器,FTP 服务器,UDP 服务器,RPC 服务器,WebSocket 服务器,Redis 的 Proxy 服务器,MySQL 的 Proxy 服务器等等。如果你想知道 Nginx 是怎么写出来的,如果你想知道 Tomcat 和 Jetty 是如何实现的,如果你也想实现一个简单的 Redis 服务器,它们高性能的原理都是类似的。
创建一个 ServerSocket,监听并绑定一个端口;
一系列客户端来请求这个端口;
服务器使用 Accept,获得一个来自客户端的 Socket 连接对象
启动一个新线程处理连接
读 Socket,得到字节流解码协议,得到 Http 请求对象处理 Http 请求,得到一个结果,封装成一个 HttpResponse 对象编码协议,将结果序列化字节流写 Socket,将字节流发给客户端
继续循环步骤 3
HTTP 服务器之所以称为 HTTP 服务器,是因为编码解码协议是 HTTP 协议,如果协议是 Redis 协议,那它就成了 Redis 服务器,如果协议是WebSocket,那它就成了 WebSocket 服务器,等等。
使用 Netty 你就可以定制编解码协议,实现自己的特定协议的服务器。
上面我们说的是一个传统的多线程服务器,这个也是 Apache 处理请求的模式。在高并发环境下,线程数量可能会创建太多, *** 作系统的任务调度压力大,系统负载也会比较高。那怎么办呢?
于是 NIO 诞生了,NIO 并不是 Java独有的概念,NIO 代表的一个词汇叫着 IO 多路复用。它是由 *** 作系统提供的系统调用,早期这个 *** 作系统调用的名字是 select,但是性能低下,后来渐渐演化成了 Linux 下的 epoll和 Mac 里的kqueue。我们一般就说是 epoll,因为没有人拿苹果电脑作为服务器使用对外提供服务。而 Netty 就是基于 Java NIO技术封装的一套框架。为什么要封装,因为原生的Java NIO使用起来没那么方便,而且还有臭名昭著的 bug,Netty 把它封装之后,提供了一个易于 *** 作的使用模式和接口,用户使用起来也就便捷多了。
Netty 特性 设计
统一的 API,适用于不同的协议(阻塞和非阻塞);
基于灵活、可扩展的事件驱动模型;
高度可定制的线程模型;
可靠的无连接数据 Socket 支持(UDP);
性能
更好的吞吐量,低延迟;
更省资源;
尽量减少不必要的内存拷贝;
安全
完整的 SSL/TLS 和 STARTTLS 的支持;
能在 Applet与 Android 的限制环境运行良好;
健壮性
不再因过快、过慢或超负载连接导致 OutOfMemoryError;
不再有在高速网络环境下 NIO 读写频率不一致的问题;
易用
完善的 JavaDoc,用户指南和样例;
简洁简单;
仅信赖于 JDK1.5;
Netty ,应用场景官方地址,点击跳转
互联网行业- 互联网行业:在分布式系统中,各个节点之间需要远程服务调用,高性能的RPC框架必不可少,Netty作为异步高性能的通信框架,往往作为基础通信组件被这些RPC框架使用;典型的应用有:阿里分布式框架Dubbo的RPC框架使用的Dubbo协议进行节点间通信,Dubbo协议默认使用Netty作为基础通信组件,用于实现各进程节点之间的内部通信;
- 无论是手游服务端还是大型的网络游戏,JAVA语言得到了越来越广泛的应用;Netty,作为高性能的基础通信组件,提供了TCP/UDP和HTTP协议栈,方便定制和开发私有协议栈,账号登录服务器;地图服务器之间可以方便的通过Netty进行高性能的通信;
- 经典的Hadoop的高性能通信和序列化组件(AVRO实现数据文件共享)的RPC框架,默认采用Netty进行跨界点通信;它的Netty Service 基于Netty框架二次开发;
Netty in Action-中文版,百度云盘下载地址,点击跳转 ,提取码:8hif5.6《Netty权威指南(第2版)》,百度云盘下载地址,点击跳转,提取码:a7eg
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)