asp.net - 一个大型应用程序实例,还是许多中型应用程序实例?

标签 asp.net scaling multi-tenant

我们为一个客户编写的 Web 应用程序将被产品化并出售给数十家公司,我们将负责托管。

我可以使用一些指导来了解为每个客户推出单独的实例与使用单个(或极少量) Multi-Tenancy 实例的优缺点。

首先,随着我们的发展,我将必须为每个新客户推出一个单独的应用程序实例(他们一次会上线一个),因为这是唯一的直接选择。我认为就维护而言,这不会很好地扩展 - 一旦存在超过 4 或 5 个实例,推出更改将变得非常乏味,并且可能容易出错。除非我们以某种方式实现自动化。

此外,如果人们需要定制,单实例哲学似乎可能会导致一堆 fork 。如果能避免这种情况就好了。

那么您在这方面有什么经验?

额外问题 1: 10 个每个有 200 万条记录的 SQL Server 与一个有 2000 万条记录的大型 SQL Server 之间的性能差异是什么?假设它们都在一张表中,我们主要对单个记录进行插入和选择。有时,选择位于索引的 varchar(12) 或日期字段上。

额外问题#2:我想为了避免 fork ,我们必须使自定义可配置,或者构建一个插件架构。但是,这可能会增加进行定制的成本,而且我不想成为那些需要一周时间调整文本框大小的商店之一,而且我不想过度投资基础设施。对此有什么想法吗?

秤详细信息

每个客户都将拥有大量数据——最多几百万条记录。

并发用户数量非常少,每个客户只有几个,再加上我们这边的少数内部代表。

目前还不清楚每个客户是否都需要定制,但我想说其中一些可能会需要,而且也许其中一些更改是其他客户不希望看到的。

最佳答案

当面临类似的挑战时,我们做了以下事情:

  1. 我们有一个包含多个 SQL 服务器的代码库。我们确实维护多个具有相同代码库副本的 iis 服务器。我们可以自由地将客户端从一个 SQL Server 转移到另一个 SQL Server,以最大限度地提高性能。

  2. 如果客户有资金,我们将把它们安装在他们自己的服务器上,并为他们维护一个单独的 iis 服务器。这适应了最大的客户,他们每月支付更多的钱(多出十倍的钱)。但是,我们不会为他们提供单独的代码库。如果他们需要模组,我们会根据每个客户提供可见的模组(请参阅 #3)

  3. 自定义编程通常会产生可配置的选项。即使是那些付钱给我们拥有自己的服务器的人也能得到相同版本的代码。有时它就像代码中的一个子句一样简单,“如果客户=“ourbigcustomer,则打开此选项”。是的,这是笨拙的硬编码,但如果客户有足够的钱,那对我来说没问题。

  4. 我没有完全从你的问题中得到答案:你是否想将不同客户的数据混合到一个大数据库中。我们的规则是我们从不这样做(从不)。这是我们做过的最明智的选择之一。它使数据操作的风险大大降低,数据恢复也更加容易。

关于asp.net - 一个大型应用程序实例,还是许多中型应用程序实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1421764/

相关文章:

java - 一个 JVM 内多个独立的 H2 数据库

java - 如何为 Multi-Tenancy 配置 Spring Oauth2

c# - 无法使 NGen 与 ASP.NET 一起工作

javascript - 如何使用更好的插值在 html5 Canvas 上缩放图像?

asp.net - 丢失 ASP.NET/SQL Server 的 session 状态

python - scikit-learn:StandardScaler() 在梳中卡住。使用 Pipeline 和 GridSearchCV

ios - 快速地,我如何缩放和定位 SKSpriteNode 以适合每部 iPhone?

asp.net - 在SAAS架构中,如何处理 Multi-Tenancy 的数据库模式和MVC用户登录

asp.net - Windows进程激活服务错误2 :The system cannot find the file specified

c# - 更改页面后 RadGrid 分页无法正常工作