'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊伺服器引擎)(預告版)
關鍵詞:
IOKING IOCP TCP Transmission Server Engine Lock Free Interlocked
雲猴完成埠TCP通訊伺服器引擎 無鎖 原子鎖(函式)
'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊伺服器引擎)(預告版)
下載連線:
http://download.csdn.net/detail/guestcode/7474171
補充:
無鎖訊息引擎已經完成:
http://blog.csdn.net/guestcode/article/details/44964951
一、 技術要點
I O C P:基於Windows的IOCP模型
控制程式碼重用:避免重複建立socket控制程式碼
內 存 池:專有的IO記憶體管理
無 鎖:訊息佇列、連線池和記憶體池的多執行緒競爭不僅僅實現了0核心態,還是連原子函式均未使用的真正得的“無鎖”
限 速:限制客戶端傳送最大流量(避免惡意流量攻擊),限制客戶端接收最小流量(客戶端接收資料連續低於此速率3秒鐘,將會被斷開,避免惡意連線)
X86&X64:完全相容兩個系統平臺
IPv4&IPv6:完全相容兩種IP格式
日 志:具有更完善的日誌資訊,便於伺服器的故障分析,每秒採用資料存於Logs目錄
引 擎:內建了生產消費者執行緒(包含能用於資料庫操作和磁碟操作的執行緒)和生產消費佇列,設定佇列的生產消費關係可以架構複雜的應用伺服器框架,不需要考慮執行緒的建立和佇列的同步問題,僅需定義訊息格式然後在相應的消費者執行緒裡處理該訊息即可。
二、 執行介面
1、 點選Start
2、 設定監聽IP和埠點選Listen
三、 主要配置引數
iBuf:輸入(接收)緩衝
oBuf:輸出(傳送)緩衝
IsIPv6:Socket控制程式碼初始化預設是否是IPv6,如果監聽地址是IPv6,最好打鉤,可以避免控制程式碼重用時的初始化
Max Input:最大輸入速率(KB/S),限制傳送客戶端速率,避免惡意攻擊,0為不限制
Min Output:最小輸出速率(KB/S),客戶端接收資料連續低於此速率3秒鐘,將會被斷開,避免惡意連線,0為不限制
四、 測試表現
用例1:
客戶端:GSocket客戶端,1000個連線,回射模式:客戶端收到上一個回射資料包後再傳送下一個資料包
GSocket Server:CPU平均佔用25%
IOKING Server:CPU平均佔用22%+
資料包的往返時間一致
用例2:
客戶端:GSocket客戶端,1000個連線,密集資料模式:客戶端投遞完一個資料包後立即再投遞下一個資料包
GSocket Server:CPU平均佔用26%+
IOKING Server:CPU平均佔用15%-
GSocket Server:資料包往返時間超過2秒
IOKING Server:資料包往返小於600毫秒
結果:用例1情況下,基本沒有多大差別;但在用例3情況下,資料越密集,與GSOCKET相比,IOKING具有更佳的表現。達到了設計預期。
五、 開發過程
IOKING是GSOCKET1.0釋出以後就開始著手做的,原來只是考慮通訊引擎功能,前後歷經了5年,為最求真正的“無鎖”很多技術問題需要慢慢的測試和求證,前後經過無數次的推到重建,期間研究了很多鎖和佇列,經過充分分析IO事件的緊要等級和合理調配執行緒的角色,才得以“無鎖”的實現(所謂無鎖是指程式設計師能控制的執行緒競爭區域實現的無鎖操作,包括不使用原子函式(指令)在內實現的同步機制)。
在開發後期,加入了生產消費者執行緒和生產消費佇列,這是個人每次做伺服器程式都很討厭的重複建立伺服器程式框架程式碼,有了這個功能即減少了重複工作也避免了新程式碼的Bug,還降低了伺服器程式架構的所需的技術水平要求。
因此整個元件命名為:TCP通訊伺服器引擎。由網路IO引擎和訊息引擎(生產消費)這兩大核心模組組成。
原定中文名為:泛虎(IO為泛,king為虎),經過多番思量才在2010年最終定為:雲猴(IO為雲,King為猴)。不想它能有多大作為,僅為體現一個程式設計師認真的做事態度和完美的執著最求。
六、 釋出說明
1、 訊息引擎尚未完全測試,暫時釋出EchoServer
2、 測試可能因為個人硬體配置和軟體配置等因素影響
3、 尚未做好保護措施,Demo暫不包含元件LIB檔案。
4、 附帶的exe具有完全功能可做壓力測試用以參考。使用前請對exe進行安全監測,本人無法確定自己的機器是否具有“危險”亦無法確定exe是否已經感染了“危險”,對此本人不擔負任何責任。
5、 待所有功能都測試完畢後再連一些測試資料和截圖一起釋出,因此此次釋出定為預告版。
相關文章
- TCP通訊TCP
- modbus tcp通訊TCP
- Linux TCP通訊示例LinuxTCP
- Android TCP socket通訊AndroidTCP
- NModbus4 TCP通訊TCP
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- Windows Socket程式設計精華《TCP通訊伺服器》Windows程式設計TCP伺服器
- 匯川Easy521的TCP伺服器通訊TCP伺服器
- TCP/IP 通訊傳輸流TCP
- Java實現TCP通訊程式JavaTCP
- 通訊協議:HTTP、TCP、UDP協議HTTPTCPUDP
- Linux中的TCP通訊LinuxTCP
- C語言實現TCP通訊C語言TCP
- 網路通訊4:TCP廣播TCP
- TCP/IP的通訊過程-VeCloudTCPCloud
- Go語言實現TCP通訊GoTCP
- Vert.x TCP 通訊實踐TCP
- QT下控制檯TCP通訊例程QTTCP
- 西門子PLC Modus TCP通訊TCP
- Linux學習/TCP Socket通訊LinuxTCP
- golang寫的即時通訊伺服器gim,支援TCP,WebSocketGolang伺服器TCPWeb
- 清晰易懂TCP通訊原理解析(附demo、簡易TCP通訊庫原始碼、解決沾包問題等)C#版TCP原始碼C#
- Tcp, WebSocket 和 http 之間的通訊TCPWebHTTP
- 手把手教你 Socket 通訊(TCP/IP)TCP
- TCP通訊處理粘包詳解TCP
- 分散式架構基石-TCP通訊協議分散式架構TCP協議
- 圖形介面的TCP/IP簡單通訊TCP
- QT之不同主機之間TCP通訊QTTCP
- java tcp網路通訊 傳輸檔案JavaTCP
- golang有現成的tcp通訊框架嗎?GolangTCP框架
- TCP通訊之經典問題解決TCP
- 網路通訊協議-TCP協議詳解!協議TCP
- ModBus RTU與ModBus TCP通訊協議詳解TCP協議
- C#使用TCP/IP與ModBus進行通訊C#TCP
- 【TCP/IP】TCP伺服器併發處理&原始碼TCP伺服器原始碼
- 分分鐘讀懂tcp/ip通訊協議原理(含視訊)TCP協議