如何将流星连接到现有后端?

Posted

技术标签:

【中文标题】如何将流星连接到现有后端?【英文标题】:How to connect meteor to an existing backend? 【发布时间】:2013-11-22 11:44:42 【问题描述】:

我最近发现了 Meteor,我真的很喜欢它为编写新应用程序带来的简单性。我的问题是:你如何将它连接到现有的后端?我们有大量现有的 Clojure 代码,也与 MongoDB 一起运行。我想做的是使用 Meteor 来构建我的应用程序的前端。我想我可以将我的 Meteor 应用程序直接连接到后端的 MongoDB 实例,但这似乎不是一个好习惯......或者是吗?

我想象的另一个选择是从 webapp 或 Clojure 代码访问数据库,并使用队列机制或套接字在两者之间创建单独的通信方式。任何指向相关文档的提示或指针都会有所帮助!

【问题讨论】:

看看 Meteor 的DDP specification。您应该可以在 Clojure 中编写自己的 DDPServer 我们做同样的事情,但在后端使用 Django 和 mysql。队列是一个不错的选择。你的前端有它自己的 MongoDB,你可以把数据从后端放到前端。 有关通过 clojure 讲 DDP 的示例,您可以查看 meteor-load-test 项目。如果您愿意分享,我很乐意听到更多关于您的 clojure 项目的信息。 @seb,你能谈谈你的 clojure 项目吗?我很想听到更多关于它的信息。如果是这样,请联系我,我的联系信息在我的个人资料中。 @alanning,抱歉我现在不能透露这个项目;如果可能,我们会与您联系。 【参考方案1】:

看看 Meteor 的环境变量设置。通过设置这些变量,您可以轻松定义外部 MongoDB 实例。特别是

$export MONGO_URL="mongodb://yourmongodbserver/your-db"

有一个 eventedmind.com 针对这个特定主题的截屏视频https://eventedmind.com/feed/sg3ejYnmhxpBNoWan 非常丰富。

【讨论】:

【参考方案2】:

关于将它们指向相同的“如何”,@Michael 的answer 是正确的;只需将 Meteor Web 服务器指向同一个 MongoDB。

要不要,看你的情况。让所有东西都运行在同一个数据库上当然可以简化事情。

拥有单独的数据库可能会减少数据库层的负载,因为您可以有选择地选择在 clojure 和 Meteor 数据库之间复制哪些写入/更新。

这两种方法的一个问题是更改通知的速度。目前,Meteor 服务器每 10 秒轮询一次数据库以识别更改。令人高兴的是,一旦 oplog 分支合并到 master 中,它将大大提高在数据库中所做的外部更改(而不是直接通过 Meteor 服务器)在 Meteor 客户端中反映的速度。 oplog 支持将使 Meteor 服务器能够模拟副本集实例,跟踪 oplog,这意味着几乎可以即时通知数据库更改。

使用队列作为中间件层会引入复杂性并增加另一个故障点。它还增加了通知的延迟。不过,这些问题可以得到缓解,并且将来可能会有其他基础设施部分受益于这样的中间件队列。例如,其他感兴趣的系统可以在队列中注册以接收更改通知,而无需查询或需要了解您的数据库。您还可以独立扩展 MongoDB 实例并调整队列以确定“最终一致”保证中的“最终”含义。

我认为要问的问题是:

clojure 数据集和 Meteor 数据集之间有多少重叠 您需要多长时间才能在两者之间反映更改 随着您的成长,中间件队列在其他情况下是否有用

关于可能需要研究的队列技术,我听说过关于 RabbitMQ 的非常好的消息。 Clojure NYC 聚会上的Oct. 2013 talk 描述了由于 SQS 的延迟问题而从 Amazon SQS 切换到 RabbitMQ,而且据说 RabbitMQ 对他们来说是坚如磐石的。

【讨论】:

以上是关于如何将流星连接到现有后端?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止流星重新连接到服务器

Meteor -- 如何连接到 mongodb? [复制]

将服务连接到现有的流星帐户

将 Auth0 连接到我的后端后,如何将其连接到我的 NextJS 前端?

如何将 Android 应用程序连接到 python-socketio 后端?

如何将前端 HTML/JQuery 连接到后端 Python