【发布时间】:2021-08-23 15:48:07
【问题描述】:
我是 Clojure 的初学者,我对如何在 Web 应用程序中处理并发用户请求感兴趣。作为一个 node.js 开发者,我使用事件循环(promises/callback/async-await)来访问数据库来处理并发用户请求,这意味着主线程不会被阻塞,我可以处理其他用户的请求而无需等待数据库响应。如果我向数据库发出请求,我如何在 Clojure 中处理并发用户请求,这意味着我的线程将被阻止并且我无法处理任何其他用户请求?我应该为每个用户创建一个新线程来处理请求吗?我知道我可以在 Clojure 中使用期货来创建一个新线程,但是我如何使用它,例如对 DB 的一个请求,如果创建一个新线程,我的主线程将被阻塞以等待请求数据库的子线程?我不明白在这种情况下期货如何帮助我。最佳实践是什么,或者像 Jetty 这样的服务器可以提供更好的开箱即用处理?如果您能在这件事上帮助我,我将不胜感激。
【问题讨论】:
-
这太宽泛了。选择一个要问的问题。
-
我理解这个问题是关于在 Clojure Web 应用程序中处理用户请求的并发,而不是效率。通过对问题标题和文本进行一些改写,这可以更清楚。
标签: multithreading asynchronous web clojure