初次学习与研究NETTY,有如不妥,恳求批评与改正
准备工作
在集成了MAVEN的ECLIPSE中,导入下载好的NETTY自带的项目!现在研究如下代买片段
// Configure the client.
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
// Set up the default event pipeline.
DiscardClientHandler handler = new DiscardClientHandler(firstMessageSize);
bootstrap.getPipeline().addLast("handler", handler);
// Start the connection attempt.
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
// Wait until the connection is closed or the connection attempt fails.
future.getChannel().getCloseFuture().awaitUninterruptibly();
// Shut down thread pools to exit.
bootstrap.releaseExternalResources();
由此可以看出NETTY代码优良的注释,这点让我尤其喜欢,且值得学习和借签!
信手捏来
毫无疑问,BOOTSTRAP是我们能够亲手“摸到”的机器了。但是这个机器,得装上一个核心CHANNEL的制造机器,它才能组装好,这个就一目了然了!
运行之前,还有一个关键组件得自己造,那就是HANDLER,把它添加到正确位置(PIPELINE),整个组装完成了。现在按下CONNECT按钮,机器就轰轰运行了,只要站在旁边盯着显示屏FUTURE就可以了!
至此我们能够把看得见的都看了一遍!
关键概念
CHANNEL
参考文档,这里只是个人理解。首先CHANNEL就是数据通信通道,它有状态,可以读写,是这里面的最核心概念!那么现在又疑问了,在这个机器中,是什么时候建立的呢?是在哪儿建立的呢?怎么建立的呢?
PIPELINE
本质上他就是HANDLER的容器与管理者,如何加入自己的HANDLER?如何管理?弄清楚得参考文档了,这里就上面出现的稍微分析下!
HANDLER
熟悉观察者模式,就很容易理解它了!文档上指出它就是高级的INTERCEPTOR,FILTER!这个是我们干涉这部机器的主要关键点!这里不详谈
FUTURE
它就是操作结果显示器,我们也可以添加LISTNER!但是这里我有个疑问
那就是future.getChannel().getCloseFuture()得到的FUTURE为何与上面的那个不同?
由表及里
至于它们之间的静态结构,这个请参考文档!那么它们是如何从组装到运行,一步一步生成出来,然后发挥作用的呢?
CHANNEL是个重量级东东,和SESSION,CONNECTION类似的,所以我们得为制造它创好环境,这个就是它的工厂了!我们把CHANNEL工厂嵌入进应用机器里面,这就是第一步了!那么机器建造好了之后,让我们看下它里面有上面东东
在附件中,暂不晓得如何插入到这里
由此可以看到,这个时候PIPELINE,以及PIPELINE的工厂,和CHANNEL工厂再加上些参数OPTIONS,都准备好了!
下一步就是把我们的处理器HANDLER装到PIPELINE容器中了,如果细看源代码,发现这个PIPELINE并非运行时PIPELINE,这个就是PIPELINE工厂存在的原因,它们只是名字相同,实际上是不是同一对象的!
最后一步就是连接了,连接的时候,需要所有的东西都运转起来!
CHANNEL 就是这个时候造的。
最后感言
上面好多问题都没有解释,我就草草这么结束了!有些问题是我自己没有弄明白的!
NETTY这部机器的复杂之处和精妙之处就在于它的,一抽象统一,二异步,事件模型!
这就给我这些初学者添加了理解的复杂度!但是一旦深入其中,其代码是很优良的,结构更是巧夺天工,精彩绝伦!
- 大小: 3.2 KB
分享到:
相关推荐
Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...
Netty服务端和客户端调用demo是一个基于Spring Boot和Maven构建的应用,它演示了如何使用Netty框架进行网络通信。Netty是一个高性能、异步事件驱动的网络应用框架,适用于开发服务器和客户端的Java应用。这个demo...
ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。
Netty和Spring是两个在Java开发领域非常重要的框架。Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于创建高并发、低延迟的网络服务,如TCP、UDP等协议的应用。Spring则是一个全面的企业级应用开发框架,...
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》源码 ...
使用Netty解决TCP粘包和拆包问题过程详解 Netty是一个流行的Java网络编程框架,提供了简洁、灵活的API来处理网络编程的各种问题。其中,解决TCP粘包和拆包问题是Netty的一个重要应用场景。本文将详细介绍使用Netty...
《Netty实战》这本书是针对Java网络编程框架Netty的一本深入实践教程,旨在帮助读者掌握Netty的核心特性和实际应用。Netty是一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种分布式系统、微服务架构以及...
通过学习 Netty 的源码,开发者可以更好地理解和优化其在网络通信中的性能表现,比如减少内存分配、提高并行度以及优化编码解码过程等。同时,配合中文文档,可以降低学习门槛,让开发者更快地掌握 Netty 的使用技巧...
可以尝试自己编写简单的Netty服务器和客户端,模拟RocketMQ的消息发布和消费过程,加深理解。 总的来说,Netty作为强大的网络通信框架,为RocketMQ这样的分布式消息中间件提供了坚实的基础。深入学习和理解Netty,...
通过分析和运行这个示例,你可以更深入地理解如何将Netty和protobuf整合在一起,实现高效的数据通信。 总之,Netty和protobuf的结合为开发者提供了一种强大的网络通信解决方案。通过protobuf,我们可以定义清晰的...
在"Android-netty和socket通信的demo"中,可能已经解决或绕过了这些问题,使得Netty可以在Android设备上运行。 接下来,让我们探讨一下如何使用Netty进行Socket通信。Socket是网络通信的基础,它提供了进程间的通信...
总的来说,Netty通过其强大的功能和简单易用的API,极大地降低了网络编程的复杂性,是构建高性能网络应用,尤其是TCP和UDP服务的首选框架。无论是在物联网、游戏服务器、大数据传输还是其他分布式系统中,Netty都能...
在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本项目中,"netty客户端和服务端通讯" 实现了基于 Netty 的通信机制,允许客户端与服务端进行高效的数据...
`netty-3.2.5.Final.jar` 是Netty的可执行JAR文件,包含了所有必要的类和资源,使得开发者可以在Java环境中运行基于Netty构建的网络应用。这个版本是3.2.5.Final,这意味着它是3.2.x系列中的最后一个稳定版本,通常...
在 Netty 和 Spring 集成的过程中,通常涉及以下几个关键知识点: 1. **Spring 上下文**: 在集成中,我们需要将 Netty 服务器配置到 Spring 的上下文中,这样可以通过 Spring 管理 Netty 的生命周期,如启动、停止...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是Java平台上最流行的网络编程框架之一,广泛应用于分布式系统、云计算、游戏服务器、消息中间件等领域。 ...
Netty是Java领域的一个高性能、异步事件驱动的网络应用框架,它简化了创建高并发、高性能的TCP和UDP服务的过程。Netty的核心特性包括非阻塞I/O、零拷贝、高效内存管理和灵活的线程模型。在Java服务端,开发者可以...
Netty提供了全面的异常处理机制,通过ExceptionHandler可以捕获和处理在处理I/O事件过程中发生的异常。 总的来说,通过研究Netty 5.0的官方示例,开发者可以深入了解Netty的工作原理,学习如何构建高性能的网络...
5. **EventLoop 和 EventLoopGroup**:EventLoop 负责执行 ChannelHandler 中的事件处理方法,EventLoopGroup 是 EventLoop 的集合,负责管理和分配 EventLoop。 **二、Netty 的高级特性** 1. **零拷贝**:Netty ...