데이터베이스를 비동기식으로 호출하는 방법이 있는지 궁금합니다.
예를 들어, 처리하는 데 시간이 오래 걸리는 큰 요청이 있다고 가정합니다. 요청을 보내고 요청이 값을 반환 할 때 알림을 수신하려고합니다 (리스너 / 콜백 또는 기타를 전달하여). 데이터베이스가 응답하기를 기다리는 것을 차단하고 싶지 않습니다.
스레드 풀을 사용하는 것이 확장되지 않기 때문에 솔루션이라고 생각하지 않습니다. 동시 요청이 많은 경우에는 많은 수의 스레드가 생성됩니다.
우리는 네트워크 서버에서 이러한 종류의 문제에 직면하고 있으며 연결 당 하나의 스레드를 피하기 위해 select / poll / epoll 시스템 호출을 사용하여 솔루션을 찾았습니다. 데이터베이스 요청과 비슷한 기능을 갖는 방법이 궁금합니다.
참고 : FixedThreadPool을 사용하는 것이 좋은 해결 방법 일 수 있음을 알고 있지만 아무도 실제로 여분의 스레드를 사용하지 않고 비동기 시스템을 개발하지 않은 것에 놀랐습니다.
** 업데이트 **
실제 실제 솔루션이 없기 때문에 finagle-mysql 라이브러리 (finagle의 일부)를 직접 작성하기로 결정했습니다 . 기본적으로 mysql 요청 / 응답을 디코딩 / 디코딩하고 Finagle / Netty를 사용합니다. 많은 수의 연결로도 확장 성이 뛰어납니다.