最近頭腦裡面一直在想怎麼樣讓能讓大家基於DIOCP上寫出穩定的服務端程序。很多朋友問我,你DIOCP穩定嗎,我可以用他來做三層服務器嗎? 當時我是這樣回答的,我只能保證DIOCP底層通信的穩定。
說實話,服務端要穩定,並不容易,寫過服務端的程序員都清楚。特別是這種可以直接操作指針,自己分配內存和釋放內存的語言(想C++, C, Delphi),一不小心就一個坑,一個坑可能就會引發,內存的釋放越界,訪問非法地址。導致整個進程的直接奔潰。
經過一些研究和咨詢,我可以利用多進程來實現通信層和邏輯層的徹底獨立,還可以將邏輯層分布到局域網的其他電腦,進行邏輯的分布式。通訊層單獨的做數據轉發,即使邏輯層,一不小心奔潰,還可以投遞到另外的邏輯處理服務進程, 多進程直接使用socket(0MQ)進行通信。這樣大家可以專注於邏輯進程的編寫,甚至可以單個邏輯進程采用單線程的方式編寫,這樣就可以避免多線程代理的居多麻煩,然後用0MQ投遞到通訊層進行數據的返回。
草圖如下:
DEMO代碼正在編寫中,請關注DIOCP項目。
>>>>>>DIOCP討論群:320641073
>>>>>>SVN源碼和DEMO下載:https://code.google.com/p/diocp/