完成連接埠的深入理解及一種變態用法

來源:互聯網
上載者:User

本文作者:sodme
本文出處:http://blog.csdn.net/sodme
聲明:本文可不經作者同意,任意被轉載、引用、複製,但任何對本文的引用都必須註明本文作者,出處以及本行聲明資訊。謝謝。

  作為WIN平台下同時管理數千個串連的最為高效的網路模型,完成連接埠已經被越來越多的人認識和熟悉。通常情況下,一種經典的完成連接埠使用模式是:
  (1)建立完成連接埠,並在指定連接埠開始監聽;
  (2)建立接受連接線程,用accept或acceptEx接受用戶端串連;
  (3)建立工作者線程,處理用戶端的資料收發。
  
  眾所周知,CreateIoCompletionPort函數,有兩個作用,一是“建立”一個完成連接埠,二是將一個socket與已經建立的完成連接埠控制代碼相“綁定”,綁定之後,基於該socket的收、發、斷開等事件都可以被完成連接埠感知。一般情況下,較為正常的思維狀態下,CreateIoCompletionPort的綁定是選在accept函數執行以後或acceptEx函數完成之時與通訊端相綁定。但是,這並不說明CreateIoCompletionPort函數就不能進行其它形式的綁定。

  事實上,CreateIoCompletionPort關心的只是一個通訊端,它並不關心這個通訊端到底是通過accept而來的,還是用來connect的。也就是說,它並不關心當前的這個socket是用於接受用戶端串連的,還是用來串連其它伺服器的。那就是說,CreateIoCompletionPort函數,也可以用來綁定一個串連到其它伺服器的用戶端socket。

  這個問題的提出,是我在設計閘道伺服器時。

  閘道伺服器,承擔的主要工作就是兩個:向內,負責用戶端資料包的分發;向外,負責把內部伺服器所有的返回資料包統一通過網關發送出去。閘道伺服器上,我建立了兩個IOCP,一個用來向外接受玩家與網關的資料交換,另一個用來與內部的伺服器進行資料轉寄。由於本人較懶,所以想在內部的那個伺服器上,也採用IOCP模型來作。

  在網關上負責向內部伺服器提供資料轉寄的這個IOCP,必須要能正確識別哪一個內部伺服器使用的是哪一個通訊端。這樣,內部伺服器與閘道伺服器之間的通訊端確認就有兩種方式。一種方式,是由內部伺服器串連到閘道伺服器上,隨後向閘道伺服器發送一個註冊包,告訴閘道伺服器當前的這個socket是哪個內部伺服器;另一種方式,是由閘道伺服器先建立若干個指定的socket,然後用這些socket去串連指定類型的內部伺服器。前面,我已經說過,IOCP可以綁定的通訊端,不僅是可以被accept來的通訊端,也可以是connect其它伺服器的通訊端。所以,我選用了後一種方式。這樣在閘道伺服器對內的IOCP的邏輯處理上,就少了一項判定和一個包的邏輯解析。當網關流量非常巨大時,每節省一項判定或一種分支,效率和資源都會得到更有效利用,高效能從哪裡來?就是從這樣的一點一滴的改進中來。到目前為止,我能測試到的閘道伺服器資料傳輸量上限是每秒10M到12M,據說,區域網路的某些HUB給每台機子的頻寬只分了10M左右的出口頻寬,所以,我無法確定如果把區域網路的交換器換成電信級的,資料交換量會不會有一個更大的提高,不久,公司會進一個這樣的電信級交換器,到時可以作進一步的測試。

  過段時間,我會在我的BLOG(http://blog.csdn.net/sodme)上公布我的IOCP底層通訊模型的架構設計以及一個通用的高效能伺服器模型架構,希望能與各位同仁共同研究高效能伺服器研發問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.