我已经阅读了很多关于服务器端事件驱动编程的内容,主要是与Akka和Play有关。我理解减少活动线程数的潜在好处。然而,我不能围绕一个特定的场景:
想象一下,我的一个演员必须使用阻塞jdbc来执行数据库操作。如果我们遵循每个actor一个线程的简单假设,那意味着对DB的后续调用将以非常同步的方式执行。虽然线程消耗不会上升,但似乎这种方法非常不切实际,因为在获得数据库响应之前,客户端必须等待越来越长的时间。
这是专用线程池。我们可以运行有限数量的专用于数据库访问的线程,而不是为每个actor运行一个线程。虽然这种方法避开了每个角色运行一个线程的基本命题,但它肯定是可能的。
然而,在一般事件序列中,我没有看到这种方法的真正好处,对于一个项目,90%的客户端请求需要访问数据库。实际上,控制器/应用程序逻辑将在单个线程上运行,但数据访问逻辑不会。最后,我问自己,这与为应用程序本身运行线程池有何不同,只是在自己的线程中为每个请求提供服务。
如果我错了,请证明我,但我的数学不然。你为什么要采取这种情况?
答案 0 :(得分:2)
这是一个非常普遍的问题,但这里有一些食物供您参考:
TLDR :效果并不重要。弹性是:)