1. 程式人生 > >'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊server引擎)(預告版)

'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊server引擎)(預告版)

隊列 ipv6 spa href 什麽 監聽 內存 關鍵詞 由於

關鍵詞:

IOKING IOCP TCP Transmission Server Engine Lock Free Interlocked

雲猴完畢portTCP通訊server引擎 無鎖 原子鎖(函數)


‘IOKING‘ TCP Transmission Server Engine (‘雲猴‘?TCP通訊server引擎)(預告版)


下載連接:

http://download.csdn.net/detail/guestcode/7474171

補充:

無鎖消息引擎已經完畢:

http://blog.csdn.net/guestcode/article/details/44964951


一、 技術要點

I O C P:基於Windows的IOCP模型

句柄重用:避免反復創建socket句柄

內 存 池:專有的IO內存管理

無 鎖:消息隊列、連接池和內存池的多線程競爭不只實現了0內核態,還是連原子函數均未使用的真正得的“無鎖”

限 速:限制client發送最大流量(避免惡意流量攻擊)。限制client接收最小流量(client接收數據連續低於此速率3秒鐘,將會被斷開,避免惡意連接)

X86&X64:全然兼容兩個系統平臺

IPv4&IPv6:全然兼容兩種IP格式

日 誌:具有更完好的日誌信息,便於server的故障分析,每秒採用數據存於Logs文件夾

引 擎:

內置了生產消費者線程(包括能用於數據庫操作和磁盤操作的線程)和生產消費隊列,設置隊列的生產消費關系能夠架構復雜的應用server框架,不須要考慮線程的創建和隊列的同步問題,僅需定義消息格式然後在對應的消費者線程裏處理該消息就可以。

二、 執行界面

技術分享


技術分享


1、 點擊Start

2、 設置監聽IP和port點擊Listen

三、 主要配置參數

iBuf:輸入(接收)緩沖

oBuf:輸出(發送)緩沖

IsIPv6:Socket句柄初始化默認是否是IPv6,假設監聽地址是IPv6,最好打鉤,能夠避免句柄重用時的初始化

Max Input:最大輸入速率(KB/S),限制發送client速率,避免惡意攻擊,0為不限制

Min Output:最小輸出速率(KB/S),client接收數據連續低於此速率3秒鐘,將會被斷開。避免惡意連接,0為不限制

四、 測試表現

用例1:

client:GSocketclient,1000個連接。回射模式:client收到上一個回射數據包後再發送下一個數據包

GSocket Server:CPU平均占用25%

IOKING Server:CPU平均占用22%+

數據包的往返時間一致

用例2:

client:GSocketclient。1000個連接,密集數據模式:client投遞完一個數據包後馬上再投遞下一個數據包

GSocket Server:CPU平均占用26%+

IOKING Server:CPU平均占用15%-

GSocket Server:數據包往返時間超過2秒

IOKING Server:數據包往返小於600毫秒

結果:用例1情況下,基本沒有多大區別。但在用例3情況下,數據越密集,與GSOCKET相比,IOKING具有更佳的表現。

達到了設計預期。

五、 開發過程

IOKING是GSOCKET1.0公布以後就開始著手做的。原來僅僅是考慮通訊引擎功能,前後歷經了5年,為最求真正的“無鎖”非常多技術問題須要慢慢的測試和求證。前後經過無數次的推到重建。期間研究了非常多鎖和隊列。經過充分分析IO事件的緊要等級和合理調配線程的角色,才得以“無鎖”的實現(所謂無鎖是指程序猿能控制的線程競爭區域實現的無鎖操作,包含不使用原子函數(指令)在內實現的同步機制)。

在開發後期,增加了生產消費者線程和生產消費隊列。這是個人每次做server程序都非常討厭的反復創建server程序框架代碼,有了這個功能即降低了反復工作也避免了新代碼的Bug,還降低了server程序架構的所需的技術水平要求。

因此整個組件命名為:TCP通訊server引擎。由網絡IO引擎和消息引擎(生產消費)這兩大核心模塊組成。

原定中文名為:泛虎(IO為泛,king為虎),經過多番思量才在2010年終於定為:雲猴(IO為雲,King為猴)。不想它能有多大作為。僅為體現一個程序猿認真的做事態度和完美的執著最求。

六、 公布說明

1、 消息引擎尚未全然測試,臨時公布EchoServer

2、 測試可能由於個人硬件配置和軟件配置等因素影響

3、 尚未做好保護措施。Demo暫不包括組件LIB文件。

4、 附帶的exe具有全然功能可做壓力測試用以參考。

使用前請對exe進行安全監測。本人無法確定自己的機器是否具有“危急”亦無法確定exe是否已經感染了“危急”,對此本人不擔負不論什麽責任。

5、 待全部功能都測試完成後再連一些測試數據和截圖一起公布,因此此次公布定為預告版。

'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊server引擎)(預告版)