zoukankan      html  css  js  c++  java
  • 01_Netty简述

    【Netty的NIO模型与常见的NIO模型对比】

    【原始的BIO模型】

    ServerSocket serverSocket = new ServerSocket(portNumber);//1
    Socket clientSocket = serverSocket.accept();             //2
    BufferedReader in = new BufferedReader(                     //3
            new InputStreamReader(clientSocket.getInputStream()));
    PrintWriter out =
            new PrintWriter(clientSocket.getOutputStream(), true);
    String request, response;
    while ((request = in.readLine()) != null) {                 //4
        if ("Done".equals(request)) {                         //5
            break;
        }
    }
    response = processRequest(request);                        //6
    out.println(response);                                    //7
    }  

    [ 流程分析 ]

    1.ServerSocket创建并监听端口的连接请求

    2.accept()调用阻塞,直到一个连接建立,返回一个新的Socket用来处理客户端与服务端的及哦啊胡

    3.流被创建用于处理socket的属于和输出数据,BufferReader读取从字符输入流的文本,并用PrintWriter打印格式化展示的对象到文本输出流。

    4.处理循环readLine()阻塞,读取字符串直到最后的是换行后者输入终止。

    5.处理"Done"

    6.处理请求参数,返回响应

    7.响应返回客户端

    [ 缺点分析 ]

    每次只能处理一个连接,为了实现多个并行的客户端,需要分配一个新的Thread给每个新的客户端Socket,这种方法来吃力大量的同步长连接,在很多时候,线程是处于休眠状态,等待输入或输出数据,造成大量的资源浪费。

     [ 使用场景 ]

    如果应用中连接数较少,还是可以接受的。

    【NIO模型】

    Selector最终决定哪一组注册Socket主备执行I/O,这种I/O操作设置为非阻塞模式。通过通知,一个线程可以同时处理多个并发连接。

    [ 优点 ]

    1.可以用较少的线程处理更多连接,意味着更少的开销在内存和上下文切换上

    2.当没有I/O处理时,线程可以被重定向到其他任务上。

    【Netty的特点】

    [ 设计 ]

      1.针对多种传输类型的统一接口——阻塞和非阻塞

      2.简单但更强大的线程模型

      3.真正的无连接的数据报套接字支持

      4.链接逻辑支持复用

    [ 性能 ]

      1.比核心Java API更好的吞吐量,较低的延时

      2.资源消耗更少,这个得益于共享池和重用

      3.较少内存拷贝

    [特点]

      1.消除由于慢、快或重载连接产生的OOM错误

      2.消除经常发现在NIO高速网络中的应用中的不公平的读/写比。

    [ 安全 ]

      1.完整的SSL/TLS和StartTLS的支持

      2.运行在受限环境例如 Applet或OSGI

      

  • 相关阅读:
    linux CGI GET POST 用户登录
    linux内核 简化版ksetexample.c解析
    定制.vimrc配置文件
    procfs信息读取实现案例
    基于Extent 的文件存储(fiemap)
    inode_operations介绍
    Linux 文件系统概述
    linux硬链接与软连接的区别
    procfs读写信息实例
    VC 常见问题百问 20080129 13:37 271人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/HigginCui/p/10323210.html
Copyright © 2011-2022 走看看