有多台嵌入式Linux的数据采集器,通过3G模块拨号上网后,将采集的数据提交到服务器。数据采集器数量最多允许达到65535台(实际没那么多了。。),而且考虑到数据最好不出错,采用TCP协议传输数据而不是UDP;
数据采集器的数据提交周期大于4分钟。请教大家这种情况下采用方案1:服务器与每个数据采集器之间建立长连接,即每次传输完成后仍保持连接;
还是采用方案2:服务器与每个数据采集器之间建立短连接,即每次传输前建立连接,传输并确认完成后断开连接。个人倾向采用方案2,并且服务器建立一定大小的线程池以减少频繁创建销毁线程的损耗。
但还是没多少这方面的实际经验,希望有经验的朋友能够指点指点。
数据采集器的数据提交周期大于4分钟。请教大家这种情况下采用方案1:服务器与每个数据采集器之间建立长连接,即每次传输完成后仍保持连接;
还是采用方案2:服务器与每个数据采集器之间建立短连接,即每次传输前建立连接,传输并确认完成后断开连接。个人倾向采用方案2,并且服务器建立一定大小的线程池以减少频繁创建销毁线程的损耗。
但还是没多少这方面的实际经验,希望有经验的朋友能够指点指点。
一般采集数据都是接近与实时的,所以一般不要求数据没有任何错误,偶尔丢失是完全可以接收的,所以实时采集数据很少采用TCP,而更多使用UDP。
采集器提交的数据有些是实时数据(大约每四分钟提交一次),但是有些是日常统计数据(每天才提交一次),如果采用UDP,不巧这个日常统计数据丢了怎么办?
考虑数据采集器可能会达到很多(比如几千或上万台),这样的话同时保持这么多长连接要开好多线程。。论坛查了有很多用IOCP的,请教熟悉IOCP的朋友,我这种情况是不是比较适合用IOCP?
这样服务器端用IOCP,数据采集器端用普通tcp client是否可行?