Netty之ChannelOption

來源:互聯網
上載者:User

標籤:使用者   儲存   delay   channel   狀態   參考   模糊   發送資料   活動   

一、概述

  最近在寫一個分布式服務架構,打算用netty架構做底層網路通訊,關於netty的學習可以參考如下資料:

    http://blog.csdn.net/column/details/enjoynetty.html

    李林鋒的《Netty權威指南》

二、詳情

  在用netty作為底層網路通訊的時候關於ChannelOption的參數讓我一直模糊不清楚,於是去看一下linux網路編程,發現ChannelOption的各種屬性在通訊端選項中都有對應

  下面簡單的總結一下ChannelOption的含義已及使用的情境

  1、ChannelOption.SO_BACKLOG

    ChannelOption.SO_BACKLOG對應的是tcp/ip協議listen函數中的backlog參數,函數listen(int socketfd,int backlog)用來初始化服務端可串連隊列,

    服務端處理用戶端串連請求是順序處理的,所以同一時間只能處理一個用戶端串連,多個用戶端來的時候,服務端將不能處理的用戶端串連請求放在隊列中等待處理,backlog參數指定了隊列的大小

  2、ChannelOption.SO_REUSEADDR

    ChanneOption.SO_REUSEADDR對應於通訊端選項中的SO_REUSEADDR,這個參數表示允許重複使用本地地址和連接埠,

    比如,某個伺服器處理序佔用了TCP的80連接埠進行監聽,此時再次監聽該連接埠就會返回錯誤,使用該參數就可以解決問題,該參數允許共用該連接埠,這個在伺服器程式中比較常使用,

    比如某個進程非正常退出,該程式佔用的連接埠可能要被佔用一段時間才能允許其他進程使用,而且程式死掉以後,核心一需要一定的時間才能夠釋放此連接埠,不設定SO_REUSEADDR

    就無法正常使用該連接埠。

  3、ChannelOption.SO_KEEPALIVE

    Channeloption.SO_KEEPALIVE參數對應於通訊端選項中的SO_KEEPALIVE,該參數用於設定TCP串連,當設定該選項以後,串連會測試連結的狀態,這個選項用於可能長時間沒有資料交流的

    串連。當設定該選項以後,如果在兩小時內沒有資料的通訊時,TCP會自動發送一個活動探測資料報文。

  4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF

    ChannelOption.SO_SNDBUF參數對應於通訊端選項中的SO_SNDBUF,ChannelOption.SO_RCVBUF參數對應於通訊端選項中的SO_RCVBUF這兩個參數用於操作接收緩衝區和發送緩衝區

    的大小,接收緩衝區用於儲存網路通訊協定站內收到的資料,直到應用程式讀取成功,發送緩衝區用於儲存發送資料,直到發送成功。

  5、ChannelOption.SO_LINGER

    ChannelOption.SO_LINGER參數對應於通訊端選項中的SO_LINGER,Linux核心預設的處理方式是當使用者調用close()方法的時候,函數返回,在可能的情況下,盡量發送資料,不一定保證

    會發生剩餘的資料,造成了資料的不確定性,使用SO_LINGER可以阻塞close()的調用時間,直到資料完全發送

  6、ChannelOption.TCP_NODELAY

    ChannelOption.TCP_NODELAY參數對應於通訊端選項中的TCP_NODELAY,該參數的使用與Nagle演算法有關

    Nagle演算法是將小的資料包組裝為更大的幀然後進行發送,而不是輸入一次發送一次,因此在資料包不足的時候會等待其他資料的到了,組裝成大的資料包進行發送,雖然該方式有效提高網路的有效

    負載,但是卻造成了延時,而該參數的作用就是禁止使用Nagle演算法,使用於小資料即時傳輸,於TCP_NODELAY相對應的是TCP_CORK,該選項是需要等到發送的資料量最大的時候,一次性發送

    資料,適用於檔案傳輸。

三、總結

  最近使用netty感覺netty真的很強大,也很好用,推薦大家學習一下。

Netty之ChannelOption

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.