MFa*_*ave 5 http clojure luminus
截至目前(2018),当您使用默认设置设置 luminus 模板项目时,使用的 http/tcp 服务器是什么?
我读到 luminus 使用 immutant,但是,immutant 是其他东西的集合。我还读到,immutant 中使用的底层服务器是 undertow。
我假设默认服务器处于低潮状态是否正确?如果是这样,默认设置对于非阻塞 IO 的执行情况如何?该服务器是否提供像 nginx/nodejs 这样的非阻塞事件循环架构?
Immutant 使用 Undertow 作为其 Web 服务器,这一点是正确的。
Undertow 使用非阻塞 IO 线程(通常每个 CPU 核心一个),并且还管理一组工作线程。引用他们的文档:
XNIO 工作线程管理 IO 线程和可用于阻塞任务的线程池。一般来说,非阻塞处理程序将从 IO 线程中运行,而诸如 Servlet 调用之类的阻塞任务将被分派到工作线程池。
IO线程在循环中运行。这个循环做了三件事:
- 运行已安排由 IO 线程执行的任何任务
- 运行任何已超时的计划任务
- 调用 Selector.select(),然后调用所选键的任何回调
该架构与节点架构之间的明显区别是工作线程池的分离,允许阻塞。
恐怕我无法谈论比较实际性能,这将是特定于用例的。
归档时间: |
|
查看次数: |
404 次 |
最近记录: |