使用Aleph / Laminaasynchronous访问MongoDB

我一直在阅读Clojure一段时间,我正在考虑它作为Node.js(我已经用于另一个项目)的替代品。 最有希望的图书馆似乎是Aleph / Lamina,遗憾的是没有像Node那么多的例子。 我的问题是:

  1. 我如何处理asynchronous操作链的请求,如从MongoDB读取文档,做一些计算,保存新文档并将其发送到响应中? 我无法从Lamina wiki页面中的示例中编写它。 这听起来像一个相当常见的用例,我很惊讶没有发现任何代码显示它。 如果你能给我看一些示例代码,那将是非常好的。

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

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

  4. 有没有更好的Clojure替代节点(除了Aleph / Lamina)? 也许Clojurescript目标节点? 我的客户端不是用Javascript编写的,所以在客户端和服务器端使用相同的语言在我的情况下不是一个优势。

谢谢!

几个指针:

  1. 你需要看看在Lamina渠道抽象上构buildHTTP抽象的Aleph 。
  2. 读和写文档到MongoDB可以是asynchronous的,但图书馆应该提供这个。 在Node.js中,MongoDB库必须是asynchronous的,否则它会搞砸Node编程模型,因为在Clojure中情况并非如此,因此Clojure MongoDB库很可能提供了非asynchronous函数。
  3. asynchronous操作只对IO有帮助,例如读取/写入mongodb,发送响应等。生成计算是CPU绑定操作,与asynchronous模型无关。
  4. Vert.x是Java世界的Node.js。 Clojure支持在路线图上。 我更喜欢Aleph,因为你可以根据需要在asynchronous和非asynchronous世界中玩。