'IOKING' TCP Transmission Server Engine ('雲猴'©TCP通訊server引擎)(預告版)
關鍵詞:
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文件夾
引 擎:
二、 執行界面
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引擎)(預告版)