【问题标题】:How to deploy a scalable Parse LiveQuery Server?如何部署可扩展的 Parse LiveQuery 服务器?
【发布时间】:2017-10-23 22:31:30
【问题描述】:

最近,我们开始为我们的应用开发聊天功能,由于我们已经在使用 Parse SDK/Server,我们决定使用 Parse LiveQuery...

问题是,没有足够的文档说明如何在单独的服务器上部署 Parse LiveQuery 服务器!我们看到了这个:http://docs.parseplatform.org/parse-server/guide/#scalability,但我们并没有真正弄清楚如何继续......

所以我们有几个问题:

为了创建可扩展的 Parse LiveQuery 服务器,我们需要做什么? (最好在 Digital Ocean / Heroku 上)

它如何与存储 MongoDB 的原始 Parse 服务器通信?

【问题讨论】:

  • 我之前的回答解决了你的问题?
  • @JulienKode 是的,我对开发的那部分没意见!现在我想完成部署部分,我对此一无所知...
  • 是的,我有...我现在想要的是 Parse LiveQuery 服务器,用于与我的单独 Parse 服务器及其数据库进行通信
  • 是的,但是让我提醒您,数据库在 Parse Server A 上,而 Parse LiveQuery Server 在 Parse Server B 上!那么 Parse LiveQuery 服务器(服务器 B)将如何收到服务器 A 数据库更改的通知?
  • 在 Parse Server B 中,提供数据库 A 的 databaseUri: var api = new ParseServer({ databaseURI: 'mongodb://myMogoURL',

标签: javascript parse-platform server parse-server scalable


【解决方案1】:

这是我们在 Heroku 上设置可扩展 Parse LiveQuery 服务器的方法 因为 Heroku 上只有一个“网络”进程,它将分为两个 Heroku 应用:Main 和 LiveQuery。

A:主应用 - 除 LiveQuery 服务器外的所有功能

步骤 A1。 在 Heroku 上设置 Parse 应用程序

步骤 A2。 添加 Heroku Redis(免费计划足以进行测试)

步骤 A3. 配置 Parse 应用,为 liveQuery 添加 redisURL

var api = new ParseServer({
  ...
  liveQuery: {
    classNames: [...],
    redisURL: REDIS_URL_ON_MAIN
  },
  ...
});

B:LiveQuery 应用程序 - 用于主应用程序的可扩展 LiveQuery 服务器

步骤 B1。 在 Heroku 上启动另一个 Parse 应用程序

步骤 B2. 配置 Parse 应用,不要设置 liveQuery

var api = new ParseServer({
  appId: APP_ID_ON_LIVEQUERY,
  masterKey: MASTER_KEY_ON_LIVEQUERY,
  serverURL: SERVER_URL_ON_LIVEQUERY,
  databaseURI: // (Optional) Only warning even if leave it default
});

步骤 B3。 创建 LiveQuery 服务器

var app = express();
app.use(PARSE_MOUNT_ON_LIVEQUERY, api);

var httpServer = require('http').createServer(app);
httpServer.listen(PORT_ON_LIVEQUERY, function() {
  /* Create HTTP server successfully */
});

ParseServer.createLiveQueryServer(httpServer, {
  redisURL: REDIS_URL_ON_MAIN // Redis URL from Mani app
});

C:客户端 - 以 Swift 为例

步骤 C1. 使用初始化客户端实例

Client(server:applicationId:clientKey:)

let client = Client(server: SERVER_URL_ON_LIVEQUERY, 
                    applicationId: APP_ID_ON_LIVEQUERY, 
                    clientKey: nil)

步骤 C2。 订阅 LiveQuery

let subscription = client.subscribe(query)
subscription.handle(Event.created, { query, object in
  /* Handle CREATE event */
})

最后,我们可以在 Heroku 上的 LiveQuery 应用中扩展 Web 进程 ^_^

欢迎在我的glist 上任何 cmets

【讨论】:

  • 谢谢@ananfang。我正在设置这个。我们使用 AWS,所以它有点不同。试图为此解释本指南。有什么建议?如果我只使用设置 A,LiveQueries 是否可以在不明确执行 createLiveQueryServer 的情况下工作?
  • @ZackShapiro 如果你想只使用一个实例来处理实时查询的解析服务器,你可以参考:parse-community/parse-server-example
【解决方案2】:

在 Parse Server B 中,给出数据库 A 的 databaseUri: var api = new ParseServer({ databaseURI: 'mongodb://myMogoURL',

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2021-01-13
    • 2016-06-15
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多