java - 高并发实时系统涉及到多线程处理,这样合理么?
PHPz
PHPz 2017-04-18 09:18:03
0
2
336

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

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

谢谢大家。

PHPz
PHPz

学习是最好的投资!

모든 응답(2)
黄舟

장치가 서버에 데이터를 보낸다고만 썼고 서버가 장치에 데이터를 푸시한다고는 쓰지 않은 것으로 보입니다. 이 경우 HTTP 프로토콜을 사용하는 것이 불가능하지 않습니다. 양방향 수요가 있지만 데이터가 특정 간격으로 업로드되고 실시간으로 전송되지 않는 경우 이를 달성하기 위해 비차단 IO를 사용하는 것을 고려할 수 있습니다. 이러한 방식으로 IO 응답이 하위 계층으로 전송됩니다. 시스템과 Java 계층은 데이터를 다시 전송하기만 하면 됩니다. 처리할 스레드를 생성하기만 하면 스레드 오버헤드를 줄일 수 있습니다. 실제로 200개의 장치 연결이 있는 경우 200개의 장치가 동시에 업로드되고 지속적으로 데이터를 전송하게 됩니다. 유일한 방법은 구성을 업그레이드하는 것이며 다른 방법은 도움이 되지 않습니다.

PHPzhong

golang의 코루틴 개념을 고려해 볼 수 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿