解析服务器 Saas(角色或多个安装)

Posted

技术标签:

【中文标题】解析服务器 Saas(角色或多个安装)【英文标题】:Parse Server Saas (Roles or Multiple Installations) 【发布时间】:2018-04-26 20:36:33 【问题描述】:

我需要一些帮助。我计划开发一个 Saas 项目并服务于 500-1000 个客户。每个客户将有大约 1000 名成员,每个成员都可以使用移动应用程序来跟踪健身信息。

所以我的问题!部署和交付或实现项目的最佳方式是什么。

A) 每个客户都有一个解析服务器安装,并且在登录时用户必须输入客户 ID、电子邮件和密码。 customerId 映射到子域,子域映射解析服务器。这里的示例 customerId 100123 映射到 100123.example.com

B) 使用角色并将每个对象的角色设置为 customerId

解决问题的最佳方法是什么。在解决方案 A) 中,这是管理、配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案 B) 中很容易扩展,解析服务器可以托管在 heroku 上,通过一些点击,我可以自动扩展新客户。

有什么经验吗? 500K 或 1M 用户是否可以使用一台解析服务器。

【问题讨论】:

【参考方案1】:

我们有一个包含 1500 多个“客户/公司”的 Parse Server 安装(选项 B),并使用多个角色来管理每一行的 ACL。这可以完美运行并且可以轻松扩展(我们同时使用 Sashido 和 back4App 以及它们的自动扩展功能)。

我们这样做的方式(使用您的术语)是有一个 Customer 类,它保存该客户的主记录。然后,我们使用 Customer.id 作为角色名称的前缀创建多个角色,例如对于客户wDEuKFGTBo,我们创建角色:wDEuKFGTBo_adminwDEuKFGTBo_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();

);

【讨论】:

听起来很酷 :) 我喜欢这个解决方案。您每天有多少用户,是否存在一些性能问题?

以上是关于解析服务器 Saas(角色或多个安装)的主要内容,如果未能解决你的问题,请参考以下文章

科普Windows Server 2019 DNS域名解析服务器安装部署(DNS)

SaaS流行术语

SaaS产品复杂性解析1|具有权限的用户≠权限拥有人:通过微信登录捆绑探析角色共鸣

SaaS服务商在企业数字化成功转型中扮演了啥角色?

经验之谈 | 软件即服务 (SaaS) 的 5 大优势

saas是啥