最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序。很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定。
说实话,服务端要稳定,并不容易,写过服务端的程序员都清楚。特别是这种可以直接操作指针,自己分配内存和释放内存的语言(想C++, C, Delphi),一不小心就一个坑,一个坑可能就会引发,内存的释放越界,访问非法地址。导致整个进程的直接奔溃。
经过一些研究和咨询,我可以利用多进程来实现通信层和逻辑层的彻底独立,还可以将逻辑层分布到局域网的其他电脑,进行逻辑的分布式。通讯层单独的做数据转发,即使逻辑层,一不小心奔溃,还可以投递到另外的逻辑处理服务进程, 多进程直接使用socket(0MQ)进行通信。这样大家可以专注于逻辑进程的编写,甚至可以单个逻辑进程采用单线程的方式编写,这样就可以避免多线程代理的居多麻烦,然后用0MQ投递到通讯层进行数据的返回。
草图如下:
DEMO代码正在编写中,请关注DIOCP项目。
>>>>>>DIOCP讨论群:320641073
>>>>>>SVN源码和DEMO下载:https://code.google.com/p/diocp/