java-netty-study-1-bio和nio

前言
netty 學習系列,資料來源網絡
(連接:https://pan.baidu.com/s/16wV1... 密碼:qzw1)服務器

Netty 應用場景

  1. hadoop、dubbo、akka等具備分佈式功能的框架,底層RPC通訊都是基於netty實現的
  2. 遊戲服務器

傳統io socket 通訊

弊端

  • 兩處阻塞
    *第一處是
    ServerSocket server=new ServerSocket(10101);
    final Socket socket = server.accept();//第一處
    *第二處是
    InputStream inputStream = socket.getInputStream();
  • 一個鏈接要一個線程

    clipboard.png

NIO

主要有一個Selector:
簡單說,就是Selector會不斷的輪詢註冊在其上的通道(Channel),若是某個通道發生了讀寫操做,這個通道就處於就緒狀態,會被Selector輪詢出來,而後經過SelectionKey能夠取得就緒的Channel集合,從而進行後續的IO操做。一個多路複用器(Selector)能夠負責成千上萬的通道(Channel),沒有上限。這也是JDK使用了epoll代替傳統的select實現,得到鏈接句柄(客戶端)沒有限制。那也就意味着咱們只要一個線程負責Selector的輪詢,就能夠接入成千上萬個客戶端,這是JDK NIO庫的巨大進步。網絡

ServerSocketChannel ==> ServerSocket框架

SocketChannel ==> Socketsocket

Selector==>監聽多個Channel分佈式

SelectionKeyoop

clipboard.png

相關文章
相關標籤/搜索