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