• java io 网络编程 高性能NIO


         很久没写了,一是觉得这后台不怎么方便,二是 写的时候突然觉得没兴趣了。

     还好,今天突然想记一下,那就随便写吧。   

          

         1.一开始还是放几个连接。

          什么是 同步,异步,阻塞,非阻塞 : http://blog.csdn.net/historyasamirror/article/details/5778378

              从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式:http://blog.csdn.net/cutesource/article/details/6192016

                 相关文档: Scalable IO in Java

                 

               2.由于最近的一个项目要用到网络编程,以后也没怎么用过,只是网上看过一些,实际经验并不足,没办法从Tomcat7.0.2(具体版本号不记得了),把里面的

    NIO给抽出来了,弄了个NIO_Server,还行,能用。但后面由于数据量比较大时,总有点不放心,然后想着以后方便维护和扩展,打算采用Netty,于是最近又开始学习

    Netty 了,最新版本:netty-5.0.0.Alpha1,觉得这儿分析的不错:http://my.oschina.net/geecoodeer/blog?disp=1&catalog=0&sort=time&p=2

    但别人的总是别人的,自己不去肯,体会不到其中的差别。于是开始读源码贝。

        3.下面就写写自己的一些体会,那里写错了或不对向各位专家指点。

          

            NIO 模式都差不多,只是细节的处理和扩展性及场景考虑,也就是Jetty,Netty,Mina,Tomcat中都是NIO事件处理模块,模式(架构)都应该差不多,只

    是具体业务处理和扩展性不同巴了(目前我是这么认为的)。

          

          应该都是:一个或一组门神 (Accetpor) -------------->(一组Reactor)------>业务处理。跟餐馆差不多,几个负责招呼进门的,然后再分派给给里面相应

    服务的。然后.......然后看你要什么服务罗.................

          然后说说Netty,个人觉得Netty类层次各命名有点拗口,特别是什么EventLoop,EventLoopGroup,EventExecutor…………。我去,真难懂,反正我看起来比较费劲,最后觉得好像是这个感觉了:

                               

          1.凡是带Group,可以把Group想像成Pool,对应java里面的池子,一个Group调用引用的多个相应的不带Group的类。

                     2.EventExecutor应该线程调用者(也可以一个线程池),负责调用EventLoop(具体线程)处理相关业务。

                     3.流程大概是:EventExecutorGroup--->(调用)---->EventLoopGroup--->(调用)--->EventLoop--->处理业务,

    当然其中,每次调用都是交给EventExecutor(调用线程池)去做,由 EventExecutor.next选择相应的线程去调用各个调用者。

          4.至于其它,得接着看,只把一个例子或协议看懂了(也说是主流程弄懂了),其它的都一样,具体有兴趣的可以自己研究了…………。

      说明:学艺不精,哪儿写的不对,自己多考虑哈。。…。……………

                

  • 相关阅读:
    构建之法第二次作业
    wav音频的剪切
    构建之法结对编程
    模拟数据库事务实现转账
    Quirks模式是什么?它和Standards模式有什么区别
    CSS都有哪些选择器?
    简述渐进增强和优雅降级之间的不同?
    市面上浏览器的内核分别是什么?有哪些?
    html与xhtml有什么区别?
    关于对WEB标准以及W3C的理解与认识问题
  • 原文地址:https://www.cnblogs.com/jpfss/p/10231795.html
Copyright © 2020-2023  润新知