多租户架构( 二 )

  • 再次昂贵 。当一台服务器上有多个数据库,其总容量大于RAM大小时,数据将被转储到交换文件中,因此访问硬盘非常慢 。出路是购买更多服务器
  • 解析度:
    对于主要目标是安全性且愿意付款的客户(例如银行),这是最佳解决方案 。
    4.实际例子
    多租户架构

    文章插图
    > Serverless single database multi-tenant architecture on google Cloud
     5.优势
    • 节省成本:共享环境成本,这些节省(来自供应商)通常转移到软件成本中 。
    • 数据聚合:不是从可能具有不同数据库模式的多个数据源收集数据,而是将所有客户的所有数据存储在单个数据库模式中 。因此,在客户之间运行查询,挖掘数据并寻找趋势要简单得多 。
    • 简化版本管理:该软件包仅需要安装在单个服务器上 。相同的软件版本对所有客户可用 。
    • 供应商利用的维护和更新:客户无需支付昂贵的维护费用即可保持软件最新 。供应商推出新功能和更新 。
    6.缺点
    • 开发的复杂性增加:由于额外的自定义(自定义品牌,工作流程中的差异,数据模型的扩展,访问控制),以及维护每个租户元数据的需求,因此多租户应用程序需要进行更大的开发工作 。
    • 增加的新发行版风险:由于只有一个软件实例为多个租户服务,因此即使请求更新并且仅对一个租户有用,对该实例的更新也可能导致所有租户停机 。此外,应用新版本导致的一些错误和问题可能会在其他租户对应用程序的个性化视图中体现 。
    • 有限的自定义:虽然您确实增加了集成优势,但是对数据库的自定义更改通常不是一个选项,因为它在多个用户之间共享 。
    • 降低的安全性:由于在同一数据库上允许多个用户(与您的组织不相关),因此这种更广泛的访问降低了对安全性的控制 。示例如下:一个租户可以访问邻居的数据,数据被意外返回给错误的租户,或者一个租户在资源共享方面给另一个租户带来了负面影响 。可以利用这些漏洞谋取个人利益 。
    • 糟糕的性能:您的共同租户可能正在消耗共享资源并拖慢了速度 。容量应该具有弹性并可以根据需要扩展,但并非总是如此 。
    • 更新:如果您依赖与其他SaaS产品的集成并且更新了其系统,则可能会导致这些连接的应用程序出现问题 。
    7.用例
    • 软件即服务(SaaS)/应用即服务(AaaS)
    • 平台即服务(PaaS)
    • 基础架构即服务(IaaS)[可用于服务的硬件和软件]
    • 通常,多个客户使用相同的算法,数据,应用程序堆栈 。核心功能可以相同或模块化,并且可以基于每个客户端进行自定义 。
    8.总结
    • 多租户=该软件及其支持基础结构的单个实例为多个客户提供服务 。每个客户共享该软件应用程序,还共享一个数据库 。每个租户的数据都是孤立的,其他租户看不到 。
    • 使用一个数据库,一种通用模式可以节省金钱(使用更少的服务器),但代价是更大的安全性和备份风险以及更大的开发工作量 。除非您知道分区是什么,否则;)使用一个数据库和多个模式作为成本与开发工作/安全性和备份风险之间的平衡平衡 。对于主要目标是安全性并准备为此付费的客户,请使用单独的数据库 。
    • 好处包括简化的数据聚合,发布,更新,维护管理;他们通常更具成本效益
    • 缺点包括复杂的开发,发行和更新风险,有限的自定义,降低的安全性和较差的性能 。
    • 当多个客户使用相同的算法,数据和应用程序堆栈时,可用于SaaS,PaaS,IaaS应用程序 。核心功能可以相同或模块化,并且可以基于每个客户端进行自定义 。
     (本文由闻数起舞翻译自Lokajit Tikayatray的文章《Multi-Tenant Architecture》,转载请注明出处,
    原文链接:https://levelup.gitconnected.com/multi-tenant-architecture-8c1f597e069c)




    推荐阅读