1

我一直在阅读有关 Clojure 的文章,我正在考虑将它作为 Node.js 的替代品(我已将其用于另一个项目)。最有前途的库似乎是 Aleph/Lamina,不幸的是,它没有 Node.js 那么多的示例。我的问题是:

  1. 如何使用一系列异步操作处理请求,例如从 MongoDB 读取文档、进行一些计算、保存新文档并在响应中发送?我无法从 Lamina wiki 页面中的示例中编写它。这听起来像是一个很常见的用例,我很惊讶没有找到任何显示它的代码。如果您能给我看一些示例代码,那就太好了。

  2. 这种设置是否足以用于重负载服务器(例如每秒数万个请求)?我无法为每个新请求创建一个线程,所以我需要类似于 Node 方法的东西。

  3. 有没有中型或大型公司使用这些的例子?

  4. 有没有更好的 Clojure 替代 Node(除了 Aleph/Lamina)?也许 Clojurescript 以 Node 为目标?我的客户端不是用 Javascript 编写的,因此在客户端和服务器中使用相同的语言对我来说并不是一个优势。

谢谢!

4

1 回答 1

1

几点建议:

  1. 您需要查看Aleph,它在 Lamina 通道抽象上构建 HTTP 抽象。
  2. 向 MongoDB 读取和写入文档可以是异步的,但库应该提供这一点。在 Node.js 中,MongoDB 库必须是异步的,否则会搞砸 Node 编程模型,而 Clojure 并非如此,因此很可能 Clojure MongoDB 库提供了非异步功能。
  3. 异步操作仅在 IO 的情况下有用,即读取/写入 mongodb、发送回响应等。生成计算是 CPU 绑定操作,与异步模型无关。
  4. Vert.x是 Java 世界的 Node.js。Clojure 支持在路线图上。我更喜欢 Aleph,因为您可以根据需要在异步和非异步世界中玩。
于 2012-11-23T04:20:55.037 回答