使用Aleph / Lamina异步访问MongoDB

时间:2012-11-23 02:28:22

标签: node.js mongodb clojure clojurescript lamina

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

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

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

  3. 是否有任何中型或大型公司使用此类产品的例子?

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

  5. 谢谢!

1 个答案:

答案 0 :(得分:1)

几个指针:

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