`
fansfirst2008
  • 浏览: 98411 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

品读netty 装配和运行过程

阅读更多

  初次学习与研究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
1
0
分享到:
评论

相关推荐

    java应用netty服务端和客户端

    Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...

    Netty服务端和客户端调用demo

    Netty服务端和客户端调用demo是一个基于Spring Boot和Maven构建的应用,它演示了如何使用Netty框架进行网络通信。Netty是一个高性能、异步事件驱动的网络应用框架,适用于开发服务器和客户端的Java应用。这个demo...

    netty4-netty5.rar

    ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。

    netty和spring结合

    Netty和Spring是两个在Java开发领域非常重要的框架。Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于创建高并发、低延迟的网络服务,如TCP、UDP等协议的应用。Spring则是一个全面的企业级应用开发框架,...

    使用Netty解决TCP粘包和拆包问题过程详解

    使用Netty解决TCP粘包和拆包问题过程详解 Netty是一个流行的Java网络编程框架,提供了简洁、灵活的API来处理网络编程的各种问题。其中,解决TCP粘包和拆包问题是Netty的一个重要应用场景。本文将详细介绍使用Netty...

    netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》源码

    netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》源码 ...

    Netty实战.epub_netty实战epub_netty实战epub_netty_

    《Netty实战》这本书是针对Java网络编程框架Netty的一本深入实践教程,旨在帮助读者掌握Netty的核心特性和实际应用。Netty是一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种分布式系统、微服务架构以及...

    netty源码和相关中文文档

    通过学习 Netty 的源码,开发者可以更好地理解和优化其在网络通信中的性能表现,比如减少内存分配、提高并行度以及优化编码解码过程等。同时,配合中文文档,可以降低学习门槛,让开发者更快地掌握 Netty 的使用技巧...

    netty-netty-4.1.19.Final.zip_netty_netty学习_rocketmq

    可以尝试自己编写简单的Netty服务器和客户端,模拟RocketMQ的消息发布和消费过程,加深理解。 总的来说,Netty作为强大的网络通信框架,为RocketMQ这样的分布式消息中间件提供了坚实的基础。深入学习和理解Netty,...

    Netty和protocolbuf的通讯例子

    通过分析和运行这个示例,你可以更深入地理解如何将Netty和protobuf整合在一起,实现高效的数据通信。 总之,Netty和protobuf的结合为开发者提供了一种强大的网络通信解决方案。通过protobuf,我们可以定义清晰的...

    Android-netty和socket通信的demo

    在"Android-netty和socket通信的demo"中,可能已经解决或绕过了这些问题,使得Netty可以在Android设备上运行。 接下来,让我们探讨一下如何使用Netty进行Socket通信。Socket是网络通信的基础,它提供了进程间的通信...

    netty搭建TCP、UDP服务

    总的来说,Netty通过其强大的功能和简单易用的API,极大地降低了网络编程的复杂性,是构建高性能网络应用,尤其是TCP和UDP服务的首选框架。无论是在物联网、游戏服务器、大数据传输还是其他分布式系统中,Netty都能...

    Spring+Netty+WebSocket实例

    在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...

    netty客户端和服务端通讯

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本项目中,"netty客户端和服务端通讯" 实现了基于 Netty 的通信机制,允许客户端与服务端进行高效的数据...

    Netty (netty-3.2.5.Final.jar,netty-3.2.5.Final-sources.jar)

    `netty-3.2.5.Final.jar` 是Netty的可执行JAR文件,包含了所有必要的类和资源,使得开发者可以在Java环境中运行基于Netty构建的网络应用。这个版本是3.2.5.Final,这意味着它是3.2.x系列中的最后一个稳定版本,通常...

    netty4与spring集成

    在 Netty 和 Spring 集成的过程中,通常涉及以下几个关键知识点: 1. **Spring 上下文**: 在集成中,我们需要将 Netty 服务器配置到 Spring 的上下文中,这样可以通过 Spring 管理 Netty 的生命周期,如启动、停止...

    netty权威指南和源码

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是Java平台上最流行的网络编程框架之一,广泛应用于分布式系统、云计算、游戏服务器、消息中间件等领域。 ...

    Netty实现Java服务端和C#客户端联通

    Netty是Java领域的一个高性能、异步事件驱动的网络应用框架,它简化了创建高并发、高性能的TCP和UDP服务的过程。Netty的核心特性包括非阻塞I/O、零拷贝、高效内存管理和灵活的线程模型。在Java服务端,开发者可以...

    netty5.0官方自带的demo

    Netty提供了全面的异常处理机制,通过ExceptionHandler可以捕获和处理在处理I/O事件过程中发生的异常。 总的来说,通过研究Netty 5.0的官方示例,开发者可以深入了解Netty的工作原理,学习如何构建高性能的网络...

    Netty 教程 Netty权威指南

    5. **EventLoop 和 EventLoopGroup**:EventLoop 负责执行 ChannelHandler 中的事件处理方法,EventLoopGroup 是 EventLoop 的集合,负责管理和分配 EventLoop。 **二、Netty 的高级特性** 1. **零拷贝**:Netty ...

Global site tag (gtag.js) - Google Analytics