我想知道是否有办法对数据库进行异步调用?
例如,假设我有一个需要很长时间才能处理的大请求,我想发送请求并在请求返回值时接收通知(通过传递监听器/回调或其他东西).我不想阻止等待数据库回答.
我不认为使用线程池是一种解决方案,因为它不能扩展,在繁重的并发请求的情况下,这将产生大量的线程.
我们正面临网络服务器的这种问题,我们通过使用select/poll/epoll系统调用找到了解决方案,以避免每个连接有一个线程.我只是想知道如何在数据库请求中使用类似的功能?
注意:我知道使用FixedThreadPool可能是一个很好的解决办法,但我很惊讶没有人开发出一个真正异步的系统(没有使用额外的线程).
**更新**
由于缺乏真正实用的解决方案,我决定自己创建一个库(finagle的一部分):finagle-mysql.它基本上解码/解码mysql请求/响应,并在引擎盖下使用Finagle/Netty.即使有大量的连接,它也能很好地扩展.