node.js - 使用 Aleph/Lamina 异步访问 MongoDB

标签 node.js mongodb clojure clojurescript lamina-clojure

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

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

  2. 此设置对于重负载服务器(例如,每秒数万个请求)来说足够吗?我无法为每个新请求创建一个线程,因此我需要类似于 Node 的方法。

  3. 是否有任何中型或大型公司使用此技术的示例?

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

谢谢!

最佳答案

一些提示:

  1. 您需要查看Aleph它在 Lamina channel 抽象之上构建 HTTP 抽象。
  2. 向 MongoDB 读取和写入文档可以是异步的,但库应该提供此功能。在 Node.js 中,MongoDB 库必须是异步的,否则会搞砸 Node 编程模型,而 Clojure 则不然,所以 Clojure MongoDB 库很可能提供非异步功能。
  3. 异步操作仅在 IO 情况下有用,即读/写 mongodb、发回响应等。生成计算是 CPU 密集型操作,与异步模型无关。
  4. Vert.x是 Java 世界 Node.js。 Clojure 支持已在路线图中。我更喜欢 Aleph,因为你可以根据需要在异步和非异步世界中进行游戏。

关于node.js - 使用 Aleph/Lamina 异步访问 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13522414/

相关文章:

javascript - Nodejs/puppeteer - 导航超时错误

javascript - 如果在其他浏览器选项卡中写入,则数据绑定(bind)到我的应用程序

ruby-on-rails - 蒙古人 : IPv6 addresses storage

node.js - Redis 中的复杂数据结构

Clojure:应用或到列表

javascript - KOA框架中设置header缓存控制

javascript - 基本 Express.js 应用程序中的 "Failed to lookup view"

MongoDB - "The dollar ($) prefixed field\' $$hashKey\' in\' 字段名".$$hashKey\' is not valid for storage.' "

serialization - 序列化 zipper ?

clojure - 匹配并生成可变长度的有序向量的 Clojure 规范