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