4

截至目前(2018 年),当您使用默认设置设置 luminus 模板项目时,使用的 http/tcp 服务器是什么?

我正在阅读 luminus 使用 immutant,但是,immutant 是其他东西的集合。而且我还读到 immutant 中使用的底层服务器处于低潮状态。

我是否正确假设默认服务器处于低级状态?如果是这样,默认设置对于非阻塞 IO 的执行情况如何?该服务器是否提供像 nginx/nodejs 这样的非阻塞事件循环架构?

4

4 回答 4

2

Immutant 使用 Undertow 作为其 Web 服务器是正确的。

Undertow 使用非阻塞 IO 线程(通常每个 CPU 内核一个)并且还管理一个工作线程池。引用他们的文档

XNIO worker 管理 IO 线程和可用于阻塞任务的线程池。通常,非阻塞处理程序将从 IO 线程运行,而阻塞任务(如 Servlet 调用)将被分派到工作线程池。

IO 线程循环运行。这个循环做了三件事:

  • 运行已被 IO 线程调度执行的任何任务
  • 运行任何已达到超时的计划任务
  • 调用 Selector.select(),然后为选定的键调用任何回调

这种架构与节点架构的明显区别在于工作线程池的分离,允许阻塞。

恐怕我无法比较实际性能,这将是特定于用例的。

于 2018-05-17T13:23:18.707 回答
2

截至 2019 年年中,默认的 HTTP 服务器是Jetty通过luminus-jetty包。这是在这里编码的,其他支持的服务器以默认命名:

(set-feature "+jetty" #{"+aleph" "+http-kit" "+immutant" "+war"})

资料来源:Luminus

于 2019-09-08T19:46:04.503 回答
1

看起来它默认使用 immutant,但您可以选择替代服务器

于 2018-05-16T11:04:33.083 回答
1

截至 2020 年年中,Liminus 已切换到ring-undertow作为默认服务器。

于 2020-07-14T23:35:24.007 回答