云平台多租户系统的设计方案
多租户(Multi Tenancy)是指在一个云平台上,多个不同的客户共用相同的平台和架构但又相互独立并对各自的用户提供服务。多租户相同有4个特点:①共用平台和架构;②相互独立;③数据隔离;④对外表现为使用不同的子域名但页面形式一致;⑤由平台统一管理。在数据库和应用程序层面上,有如下3种解决方案:
(1)数据库物理隔离、应用程序物理隔离:各客户使用独立的数据库和应用程序。优点:各客户的数据和程序绝对隔离互不影响。缺点:①部署复杂,每新增一个客户就要重建一个新的数据库和应用程序,比较冗余且占用多余存储空间;②升级麻烦,每当数据库和应用程序需要升级时,得为每一个客户一一升级;③配置繁琐,得为每一个客户一一配置,如配置数据库、绑定域名等。适用:小量客户。
(2)数据库物理隔离、共用应用程序:各客户使用独立的数据库,但使用相同的应用程序。优点:①各客户的数据绝对隔离互不影响;②应用程序部署、升级和配置简单。缺点:①数据库部署复杂,每新增一个客户就要重建一个新的数据库;②数据库升级麻烦,每当数据库需要升级时,得为每一个客户一一升级;③数据库配置繁琐;④绑定泛域名需要程序根据子域名自动匹配对应的客户;⑤需要根据子域名自动确定访问哪个数据库。适用:中小量客户。
(3)共用数据库和应用程序:各客户使用相同的数据库和应用程序。优点:①各客户共用所有应用程序和数据库,只需部署一次、配置一次;②升级简单;③数据逻辑隔离。缺点:①程序中实现数据的逻辑隔离较繁琐;②绑定泛域名需要程序根据子域名自动匹配对应的客户。适用:大量客户。