Electronic Joint Business

Solution for E-Business

multi-tenancy

基于 ASP.NET 开发多租户应用

在本文中,我们将创建一个多租户(multi-tenant)的 SaaS 应用,用到的技术包括:

  • 应用框架:ASP.NET Boilerplate
  • Web 框架:ASP.NET MVC 和 ASP.NET Web API
  • ORM : Entity Framework
  • SPA 框架:Angularjs
  • HTML/CSS 框架:Bootstrap

在阅读本文之前1,读者可以先试试在线演示

创建应用模板
ASP.NET Boilerplate 提供了许多模板可以更快地创建启动项目。利用 http://aspnetboilerplate.com/Templates 的模板,创建启动项目如下:

这里选择的是 “ABP + module zero” 模板 ( zero 模块为框架添加了用户、角色、租户…等等管理基础件),该模板为我们创建了一个“即用”的解决方案,包括登录页面、导航以及一个基于 bootstrap 的布局。下载之后,你就可以通过 Visual Studio 打开该解决方案,其层级结构(包括单元测试项目)如下:

First, we select EventCloud.Web as startup project. Solution comes with Entity Framework Code-First Migrations. So, (after restoring nuget packages) we open the Package Manager Console (PMC) and run Update-Database command to create the database:

 

, , , ,

用 PostgreSQL Schemas 创建多租户 Rails 应用

许多 Rails 应用有多租户的需求。为此可以采取多种不同的策略,而每种策略都各有利弊。Guy Naor 曾对每一策略的利弊都进行了详细论述,具体可以参考他的 2009 Acts As Conference talk(必看)。1

这些多租户策略之一运用了 Postgresql 特有的称为 “Schemas” 的特性。不过 Guy 只是在技术层面泛泛带过,并未深入到实现细节。要如何运用这一策略来实际完成多租户应用,你可以从网上搜到几篇博客、StackOverflow 的讨论以及一些半成品,但诸多细节还要自己推敲,这里我将之记录下来,以飨读者。

为什么使用 PostgreSQL Schemas
Guy 列举了多租户 Rails 应用的三种基本策略:2

  • 每个租户使用独立数据库
  • 单一数据库,用记录维护着租户关系的范围
  • 单一数据库,每个租户使用不同的 Schemas (只适用 PostgreSQL)

选择哪一种策略需要诸多考量,这里不一一列举,我想说的是,对于第 3 种策略,应用应有以下特征:

  • 租户的数据是私有的,不能泄露给其他租户
  • 几乎不进行跨租户数据聚合的查询
  • 租户数量很多,无法承担过高管理开销

由于应用间存在千差万别,所以个人建议你最好认真看完该演讲,然后自己阿里做决定。如果你最终还是选择了 PostgreSQL Schema ,你再回来继续读完这篇文章。

>>> 阅读全文

 

, , ,

多租户技术与 Hibernate 4.0 (一)

在多租户技术中,租户(tenant)是指使用系统或电脑运算资源的客户,其所使用的是供应商所开发或配置的应用系统或运算资源等。供应商所设计的应用系统会容纳数个以上的用户在同一个环境下使用,为此应用程序与运算环境必须要特别设计,除了可以让系统平台可以允许同时让多份相同的应用程序同时执行外,保护租户数据的隐私与安全也是多租户技术的关键之一。

多租户是决定 SaaS 效率的关键因素。多租户技术在实际业务上运用的成功且广为人知的案例之一,是由 Salesforce.com 所创建的 CRM 应用系统。在这样一个典型的企业 SaaS 环境中,用户是指某个特定组织的员工组成的多个组,这个组织就是所谓的租户。

在未出现 SaaS 之前,组织会购买一个软件应用程序供自己的成员使用;组织的员工就是应用程序的用户,而该组织就是所有者。在 SaaS 和云的世界中,许多组织都将使用同一个应用程序,组织是租户,而非所有者,但是组织的员工仍然是用户的身份。每名用户都具体关联到一个特定租户(组织),而 SaaS 为每个租户分别提供一份应用程序的副本,以供他们的用户使用,同时只允许每个组织自己的成员访问其组织的数据。

可见,多租户技术有下列特色:

  • 由于多个租户共用一个应用程式或运算环境,其相关的硬件成本,操作系统与相关软件的授权成本都可由多个租户一起分担,对供应商来说可以有效降低成本。
  • 通过不同的数据源管理手段,多租户技术的数据可以用不同的方式进行数据隔离,而良好的数据隔离方法可以降低供应商的维护成本(包含设备与人力),而供应商可以在合理的授权范围内取用这些数据分析,以作为改善服务的依据。
  • 多租户架构下所有使用者都共用相同的软件环境,因此在软件版本变动时可以只发布一次,就能在所有租户的环境上生效。
  • 具多租户架构的应用软件虽可定制化,但定制化难度较高,通常需要平台层与工具的支持,才可降低定制化的复杂度。

传统 Web 应用和 SaaS 应用的区别
传统 web 应用程序和支持云的 SaaS 应用程序的主要区别,在于两个容量利用特性:

>>> 阅读全文

 

, , , ,