사용자 요청을 받아서 MYSQL 데이터베이스에 넣는 웹 응용 프로그램이 있습니다. 이제 일반적인 사용자 요청은 완료하는 데 상당한 시간이 걸리는 워크 플로를 따라 수행해야합니다. 이 문제를 해결하려면 MYSQL 테이블을 계속 수신하는 비동기 프로세서가 있어야합니다.Java에서 비동기 프로세스 트리거
무한 루프에서 MYSQL 테이블을 폴링하면 응용 프로그램이 배포 된 상자의 CPU 사용량이 급격히 높아져 종종 사용할 수없는 것으로 나타났습니다.
MYSQL 데이터베이스에 활성 요청이 없을 때마다 '어느 정도'시간 동안 비동기 프로세스가 잠자기하는 옵션이 있지만 마지막 수단으로 사용하고 싶습니다.
단일 요청을 처리하는 데 소요되는 워크 플로가 소요되는 시간과 백 엔드가 발전 할 수 있도록 프런트 엔드에서 처리를 분리해야하기 때문에이 프로세스를 동기식으로 만드는 것은 옵션이 아닙니다.
비동기 프로세스를 트리거하여 CPU 사용량을 줄이고 비동기 프로세서에서 최적의 응답 시간을 얻을 수있는 지 알아 보려합니다.
모든 조언을 부탁드립니다.
감사 p1ng
이 질문을 구성한 방법에 따라 두 개의 개별 응용 프로그램이 있음을 알 수 있습니다. 방금 데이터베이스에 삽입 된 데이터를 비동기 적으로 처리하는 다중 스레드 웹 응용 프로그램을 가질 수없는 이유가 있습니까? – Carth
모든 실제적인 목적을 위해 프론트 엔드와 백엔드는 서로 다른 응용 프로그램으로 간주 될 수 있습니다. 내가 멀티 스레드 방식으로 갈 수없는 이유는 각 요청을 처리하는 데 관련된 워크 플로가 단수이고 스레드가 아닌 리소스를 사용하고 요청 단위로 해당 리소스를 차단하고 싶지 않기 때문입니다. 또한 비동기 프로세서는 계속 발전하고 있으며 디커플링에 대한 필요성은 앞으로도 외부 API 호출을 위해이를 열 계획이기 때문에 또한 필요합니다. – ping
CPU 사용량이 급증하는 이유를 자세히 설명해 주시겠습니까? 백 엔드를 멀티 스레드로 만드는 것 외에, 왜 처음부터 문제가 있는지 이해하지 않고 무엇을 할 수 있는지를 알지 못합니다. –