parse-platform - 解析服务器 Saas(角色或多个安装)
问题描述
我需要帮助。我计划开发一个 Saas 项目并为 500-1000 名客户提供服务。每个客户将有大约 1000 名成员,每个成员都可以使用移动应用程序来跟踪健身信息。
所以我的问题!部署和交付或实现项目的最佳方式是什么。
A) 每个客户都有一个解析服务器安装,登录时用户必须输入客户 ID、电子邮件和密码。customerId 映射到子域,子域映射解析服务器。这里的示例 customerId 100123 映射到 100123.example.com
B)使用角色并将每个对象上的角色设置为customerId
解决问题的最佳方法是什么。在解决方案 A) 中,这是管理、配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案 B) 中很容易扩展,解析服务器可以托管在 heroku 上,通过一些点击,我可以自动扩展新客户。
有没有一些经验?是否有可能 500K 或 1M 用户可以使用一台解析服务器。
解决方案
我们有一个包含超过 1500 个“客户/公司”的 Parse Server 安装(选项 B),并使用多个角色来管理每一行的 ACL。这可以完美运行并且可以轻松扩展(我们使用 Sashido 和 back4App 以及它们的自动扩展功能)。
我们这样做的方式(使用您的术语)是有一个Customer
类,它保存该客户的主记录。然后,我们使用 Customer.id 作为角色名称的前缀创建多个角色,例如对于 Customer wDEuKFGTBo
,我们创建角色 : wDEuKFGTBo_admin
、wDEuKFGTBo_user
等。每个角色都User
被分配/添加到其适当的角色中。
然后,我们确保每个其他类都有一个Customer
包含指向相应客户条目的指针的列。
然后我们为每个类添加以下beforeSave
钩子:
Parse.Cloud.beforeSave("CLASS", function(request,response) {
var acl = new Parse.ACL();
var comp = request.object.get('Customer').id;
acl.setRoleReadAccess(comp + '_admin', true);
acl.setRoleWriteAccess(comp + '_admin', true);
acl.setRoleReadAccess(comp + '_user', false);
acl.setRoleWriteAccess(comp + '_user', false);
request.object.setACL(acl);
response.success();
});
推荐阅读
- javascript - 未捕获的类型错误:无法读取未定义 Discord 的属性“替换”
- ios - 使用大导航标题和适合文本
- ignite - Ignite SQL 线程池查询示例
- javascript - 如何使用javascript通过当前复选框动态更改默认复选框?
- airflow - Apache 气流 SLA 未命中 - 不发送电子邮件
- tinylog - 使用 TinyLog 时出现 Writer 错误
- c# - C# 审查中的 JSON Web Token 漏洞测试
- html - CSS 媒体查询,忽略移动设备上的属性
- python - 根据标签查找属于一起的字符串
- javascript - 多日日历 Datepicker JQuery 插件