我正在尝试构建基于Web的SaaS解决方案,并且我遇到了一条我不确定使用多租户或多实例的道路.我将尝试描述我想要实现的目标,以及每种方法的优点和缺点(我的观点,根据我所读到的).请提供您的建议,以防我错过任何一种方法而不是另一种方法.
正如我所提到的,我正在尝试构建的应用程序是一个SaaS解决方案,公司可以在其中创建帐户,每个帐户/公司都拥有自己的用户,客户,产品,服务等.每个用户; 谁是公司员工; 与一个帐户/公司相关的只能访问他/她公司的客户,产品和服务.公司可以拥有无限数量的客户,产品和服务,因此每家公司都应拥有自己的数据中心.
为此我决定创建一个共享数据库(为登录目的保存所有用户凭据)和多个数据库共享模式(每个帐户/公司的数据库).基本上,多租户.
然后有人建议使用Multi Instance,其中每个公司都有自己的应用程序实例(即代码,库,数据库,框架等)与其他公司完全分开.这听起来更好,因为我不需要处理额外的层,我需要确保每个租户的用户只能访问他们公司的数据.我认为值得一提的是我依赖Docker来实现这种方法(我之前从未使用过它),但我认为它缺乏功能(后面会更多)我将来需要(至少我没有通过一点点搜索找到它们.
但是,每种方法都有利有弊,所以我无法决定采用哪种方法.这是一个列表,但由于我缺乏对它们的了解,所以我可能会遇到一些我不知道的事情,或者是我在网上找不到的问题的解决方案:[每种方法都有一个有序列表,我跟着一个一个比较]
多租户:
多实例:
如果我想手动执行任何操作(因为手动为每个租户创建实例),所有优点和缺点都是多余的,这就是我怀疑Docker解决方案的原因,除非有办法解决这个问题,这可能是主要的问题的原因.如果您能够通过参考解决方案来回答问题,我将不胜感激,为什么您认为这种方法比其他方法更好.
为了证明这个问题,我将解释我想要实现的目标.我正在使用AngularUI日历创建一个预订系统,问题是当事件数量增加时(100多个事件,日历将需要几分钟来绑定数据),日历的性能开始迅速下降.由于我每次用户更改视图(周,月,日,上一页,下一行等等)时都通过发送AJAX请求来尝试从后端获取数据,这是我开始时有问题.
正如在AngularUI日历网站上建议我可以使用此功能:$scope.eventsF = function (start, end, timezone, callback) {...}
并将其添加到$scope.eventSources
它,它将在每个视图开关上调用.我添加了$scope.eventsF
我的$scope.eventSources
但它永远不会更新.
这是示例(获取所有数据,并且它正在工作):
$scope.mainEvents = []; //To initiate the event source
Event.getEvents().then(function (events) { // Event is a factory
if (events) { //Checking if I have events
// If I try: $scope.mainEvents = events; the $scope.eventSources won't update
angular.forEach(events, function(value) {
this.push(value);
}, $scope.mainEvents);
} else {
// Tell the user no events to render...
}
}, function (error) {
console.log(error);
});
$scope.eventSources …
Run Code Online (Sandbox Code Playgroud)