我在 2014 年 1 月写这篇文章。Parse.com 正在迅速发展和扩展他们的平台。我不能说这些信息会正确多久,或者我的观察会保持多久。
那就是说...
第一。Parse.com 按交易次数收费。许多小交易可能会给应用程序所有者带来更高的成本。我们正在使用 Parse.com 的专业计划。专业计划有以下限制:
- 每月 1500 万次 HTTP 请求
- 每秒 40 个请求的突发限制
如果您有 4,500 个用户,每个用户每天向 Parse.com 发送 125 个 HTTP 请求,那么您已经在每 30 天查看 16,850,000 个请求。Parse.com 还提供更高级别的服务,称为 Parse Enterprise。有关该计划的详细信息未公布。
其次,Parse.com 的预期目的是成为移动应用程序的轻量级后端。我相信 Parse.com 是一个非常好的移动后端即服务(MBaaS - 链接到有关该主题的 Forrester 文章)。
我正在使用 Parse.com 构建服务器端应用程序。我使用 REST 接口、Cloud Functions 和 Cloud Jobs。在我看来,Parse.com 是一个笨拙的应用服务器。它没有公开强大的工具来操作数据。例如,删除表的唯一方法是单击 Parse 的 Web 数据浏览器中的按钮。另一个例子是 Parse 在第一次保存对象时设置属性的类型。如果对象中的数据类型发生更改,例如从字符串更改为指针,Parse.com 将拒绝保存该对象。
Cloud Function 编程模型基于 Node.js 构建。复杂的业务逻辑会让你很快陷入回调地狱,因为所有数据库查询和保存操作都是异步的。也就是说,当你保存或查询一个对象时,你递给 Parse 一个函数并说“当保存/查询完成时,运行这个函数”。这对于 LISP 程序员来说可能很自然,但对于在 Java 或 .Net 上长大的 OO 程序员来说却不是。如果您打算为您的应用程序编写云代码,请注意这一点。当我开始编写 Cloud Functions 时,我的工作效率急剧下降。
我在 Parse.com 遇到的最大挑战是往返时间。以下是一些非正式的基准:
通过 REST API 获取单个对象的 RTT 相当一致,为 800 毫秒
ICMP 被阻止,但敲门需要 400-800 毫秒,具体取决于日期。
Parse.com 位于北弗吉尼亚的亚马逊数据中心。我使用 Ookla 的 Speedtest 来估计我对该区域的延迟。到达 Ashburn 的 Richmond Business Center 服务器 (75.103.15.244) 后,我的 ping 时间为 95 毫秒。DC 的服务器给了我 97 毫秒的 ping 时间。200 毫秒的 Internet 开销不是问题。
云函数执行的查询或保存操作越多,响应时间就越长。具有一两个查询或保存操作的 Cloud Functions 的 RTT 介于 1 到 3 秒之间。具有多个查询和保存操作的 Cloud Functions 的 RTT 介于 3 到 10 秒之间。
发送到 Parse.com 的 HTTP 请求在 15 秒后超时。我有一个用于测试的云函数,用于删除数据库中的所有对象。这个云函数可以在超时之前删除几百行。我将 Cloud Function 转换为 Cloud Job,因为作业最多可以运行 15 分钟。该作业删除 400-500 个对象,需要 30-60 秒才能完成。作业状态只能通过 Web 浏览器获得。我必须创建一个轻量级的工作状态系统,以便其他开发人员可以查询他们的工作状态。
Parse 的最佳用例是编写游戏并需要存储用户的高分但对服务器一无所知的 iPhone 开发人员。在强大的地方使用 Parse。