高并发实时系统涉及到多线程处理,这样合理么?

智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。
目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。

就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。

谢谢大家。

我看到你只写到设备要向服务器发送数据,没有写到服务器会推送数据到设备,如果只是这样,那用HTTP协议也并非不可以。如果有双向的需求,但是数据上传是有一定间隔的,并不是实时都在传送,那可以考虑使用非阻塞IO来实现,这样把IO响应做到系统底层去,而Java层只要再有数据传送的时候建立线程来处理即可,可以减少线程开销。如果真的是200个设备连接就会是200个设备同时上传并一直不断的传递数据,那只能升级配置,其他方法反倒费力不讨好。

可以考虑golang的协程概念

发表评论

电子邮件地址不会被公开。 必填项已用*标注