关于大规模服务器程序的设计
各位高手大家好,我现在在做一个数据采集系统,需要采集数万个设备的数据,设备做客户端,服务器做服务端。
他们之间的数据量很小。
我大概算了一下,一台服务器必须得连接1万台设备才能达到采集要求,整个流程是这样的:
1、服务器上启动监听端口,等待设备连接。
2、设备连接上了以后每隔几分钟会向服务器发送一段数据,服务器接收到数据后回复一个响应报文,同时服务器把接收到的数据存入数据库里面。
3、服务程序会不断的遍历数据库的一张表,一旦发现这张表里有他正在连接的设备的数据要发送时,取出数据,主动发送给设备,设备收到后,会返回报文,然后处理完存到数据库里面。
4、设备一旦上线会保持不断线,是长连接。
5、各个设备之间不需要通讯,也没有什么数据要互相同步,各个设备之和服务器之间通讯。
现在请教各位有什么好的设计模式
我现在想出的办法是
1:一个进程监听一个端口,等待连接200个设备,每个连接入的设备启动一个线程,每个线程占一个数据库连接,200个线程对应200个终端。然后启动50个进程,这样每台服务器就是50个进程*200个线程=1W个连接。
不知道这样稳定性如何,用的的windows 2008,不知道有没有连接数的限制?
2:使用IOCP
因为之前的项目都没有这么大的连接数,所以这种方式没有用到过,不知道是否是最适合这个项目。
大家还有什么好的办法?请赐教,如果有好的办法在加分。