Netty > java.nio + java.net
Netty 是一个 NIO 框架。
它的设计强调了“分离关注点”(Separation Of Concerns)。
它通过事件机制,将业务逻辑与无关的技术逻辑隔离,通过抽象层填补 基础平台 和 业务开发 之间的鸿沟。
Netty 极大地简化了网络编程(如,TCP/UDP socket 服务器)。可以利用它更快速容易地开发网络应用。
Netty 如何实现高性能
Netty 没有 Java 核心类库那么强烈的通用性、跨平台等负担。
它针对性能等特定目标、及Linux等特定环境,采用了极致的优化手段。
- 通过更优雅的 Reactor 模式实现灵活的线程模型,
利用 EventLoop 等机制,高效地管理大量的 Channel。 -
充分利用 Java 的 Zero-Copy 机制等多种技巧,从多种角度降低内存分配和回收的开销。如:
池化的 Direct Buffer 可提高IO性能、减少对象的创建与销毁。
利用反射直接操纵 SelectionKey - 使用更多本地代码。如,直接利用 JNI 调用 Open SSL,性能比 Java 内建的 SSL引擎更好。
- 通信协议、序列化 等其它方面的优化。
《Writing Highly Performant Network Frameworks on the JVM - A Love-Hate Relationship》
如,Netty 的 ChannelOutboundBuffer 中利用 AtomicLongFieldUpdater 而不是直接使用 AtomicLong。
public final class ChannelOutboundBuffer { private static final AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER = AtomicLongFieldUpdater.newUpdater(ChannelOutboundBuffer.class, "totalPendingSize"); private volatile long totalPendingSize; ... }
借鉴意义
虽然 Netty 的很多优化技巧对于追求极致性能有一定借鉴意义,但一般业务开发中要谨慎采用。
如,直接调用本地方法会对加大内存管理的难度,不同平台上部署应用时兼容性风险较大。
不同版本的JDK中,某些 Unsafe 方法的命名空间就不同。
使用 Netty 时的关键组件
基于官方代码示例 EchoServer
-
ServerBootstrap:服务端程序入口。Netty通过这种机制简化服务端的生命周期管理。
创建 Channel、注册端口、绑定 Handler 等。
客户端对应的是 Bootstrap -
Channel:Netty 中的各类 Channel 针对应用开发,提供了相对易用的抽象方法。
Channel 和 Selector 等概念依然是 Netty 的基础组件。 - EventLoop:这是 Netty 处理事件的核心机制。它负责 注册感兴趣的事件、调度Handler 等。
-
ChannelFuture:这是 Netty 实现异步IO 的基础。它保证了同一个 Channel 操作的调用顺序。
Netty 扩展了 Java 标准 Future,提供了针对特定场景的 Future。 - ChannelHandler:这是放置业务逻辑的地方。
- ChannelPipeline:这是 ChannelHandler 链条的容器。
相关推荐
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty-netty-4.1.69.Final.tar.gz”文件是Netty的最新稳定版本,版本号为4.1.69.Final,它是一个压缩包...
MongoDB是一个开源的NoSQL数据库系统,以其灵活的数据模型(JSON-like格式)、高性能、高可用性和可扩展性而闻名。在即时聊天系统中,MongoDB可以存储用户信息、聊天记录等数据。由于其文档型数据结构,对于处理结构...
- 异步模型使得 Netty 能够在处理大量并发连接时保持高性能。 - 通过 ChannelFuture 和 ChannelPromise,Netty 支持异步操作的链式调用和回调机制。 5. **Android 应用中的注意事项** - Android 的内存限制可能...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在Java领域,Netty因其高效、稳定和丰富的特性,被广泛应用于各种分布式系统、微服务架构以及高并发场景。...
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。在Java世界中,Netty因其易用性、灵活性以及强大的性能而备受推崇,广泛应用于各种分布式系统、微服务架构以及高...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Netty-all-4.0.23.Final.jar"文件是Netty框架的一个完整集合,包含了4.0.23.Final版本的所有组件和功能...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty4-demos”项目显然包含了关于 Netty 4 的一系列示例,帮助开发者理解并应用 Netty 框架。 在深入...
Netty是一款高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本教程可能涵盖了Netty的基本概念、核心组件、以及如何构建高效网络应用的实践案例。 Netty的核心概念包括: ...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在Android平台上,尽管Java NIO (非阻塞I/O)并不直接支持,但开发者依然可以通过引入第三方库如Netty来实现...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty实战-netty-thing.zip”压缩包可能包含了一个关于Netty实战项目的源代码和相关文档,名为“netty-...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty-4.1.4-jar包”包含了两个重要的文件:“netty-all-4.1.17.Final.jar”和“netty-all-4.1.17....
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨 Netty 4.1 的中文API帮助文档和用户指南,以及如何利用这些资源来提升你的网络编程...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Netty-4.1.19.Final"版本是该框架的一个稳定版本,提供了所有功能的一体化打包,包括源代码,方便开发者...
Netty是一个高性能、异步事件驱动的网络应用框架,适用于开发可维护的高性能协议服务器和客户端。RPC(Remote Procedure Call)是一种允许程序在分布式环境中调用另一个系统上的程序的方法,就像是在本地调用一样,...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty-4.1.9.Final”版本是Netty框架的稳定版本,提供了完整的开发包,包含了所有必要的jar文件,以便...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Netty 实战-netty-practise.zip"文件很可能包含一系列的示例代码和教程,帮助开发者深入理解并熟练运用...
Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。以下是基于这个主题的详细知识点讲解: 1. **Netty简介**: Netty是由JBOSS提供的一个开源框架,最初由...
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。Redis则是一款内存数据结构存储系统,既可以用作数据库,也可以用作缓存和消息中间件。而ZooKeeper是一个分布式的...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Netty实战-leolee-netty-practice.zip"压缩包中的项目"leolee-netty-practice-master"显然是一个针对...