如何构建可伸缩和可用的云计算多租户架构?

2019-02-26    来源:多智时代

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

云计算多租户几乎用于所有软件即服务(Software as a Service,SaaS)应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定。话虽如此,用户可以通过Internet访问多种类型的SaaS应用程序,从小的基于Internet的小部件到大型企业软件应用程序。根据存储在企业网络之外的软件供应商的基础架构上的数据不同,安全需求也在不断增长。应用程序需要多租户是有许多原因的,其中最明显的原因就是成本:在大多数情况下,为每个客户增加几个服务器和一个数据库是远远不够的,尽管在安全要求很高的情况下这么做有点用处。

本文是一篇概述性文章,调查并描述了可用的多租户的类型,并提供了实现用例。

多租户的概念包含三层用户集成:

数据中心层

基础架构层

应用程序层

云计算技术设计中的重要内容是多租户的基础架构和应用程序层集成。此集成经过特别的调整,可节约成本和开发具有高度可伸缩性的SaaS应用程序,而这是以牺牲安全性和客户隔离需求(segregation requirement)为代价。很多情况下,这样的设计都是有效的,尽管可能不太适用于金融应用程序。

在数据中心租用空间并提供服务器、路由器和线缆以支持多个客户软件,这项功能自从硅谷创立初期就已经存在,因此用户对于数据中心层多租户应该并不陌生。如果正确实现此配置,则该配置能够提供最高级别的安全需求,它用防火墙和访问控制来满足业务需求,还定义了对提供SasS的基础架构的物理位置的安全控制。大多数情况下,可以将数据中心层多租户用作服务供应商,向公司提供场地来安置硬件、网络以及软件。

基础架构层的多租户是最简单软件栈概念,一个栈专用于一个特定客户。与数据中心层多租户相比,此配置更节约成本,因为栈是根据实际的客户账户部署的。在这种情况下,可以根据实际的服务使用来增加硬件需求。另外,基础架构层的每个用户都可以选择高可用性。每个客户都知道栈,所以软件和硬件最佳实践提供了一些实现选项。

应用程序层多租户需要在软件层和基础架构层基础上进行架构实现。需要修改现有软件架构,包括应用程序层的多租户模式。例如,多租户应用程序需要一些应用程序方法和数据表来访问和存储不同用户账户的数据,这会牺牲安全性。但如果正确实现此操作,就可以节省成本。对于小部件和简单的Web应用程序,应用程序层多租户是一个可行的解决方案,因为单个开发人员可以更快地开发软件,也负担得起调整规模的费用。不足之处在于更复杂的应用程序架构和实现;与基础架构处理多租户不同的是,如果基础架构发生变化,应用程序团队需要保持编程模式的可伸缩性和可靠性,而且在未来可用。

多租户服务指定从在软件应用程序中构建并直接访问的HTTP RESTful接口或WSDL Web服务终端访问。这些服务是建立多租户模式的面向服务的应用程序的关键,因为它们可重用于多种事务类型。例如,多租户应用程序层服务的客户可以通过调用URL来调用服务,它的返回结果会产生XML作为响应码:

以下是引用片段:

https://visa.com/services/paymentOverview?account=OnlineShoesInc&pass=1234&range=1_month

OnlineShoesIncReport

01/01/201120.11

02/01/201122.24

03/01/201120.21

多租户的最关键部分是在URL中设置账户参数,让基础架构知道哪个客户在请求访问数据。这是服务层的多租户的路由机制。

应用服务器是应用程序和基础架构层多租户的关键部件,因为多租户会影响安装、配置和应用程序代码。对于基础架构层,应用服务器的多租户意味着调整更快、更广,它配置了额外的服务器,其中包括应用服务器安装、配置和应用程序代码。多租户层不需要更改代码(除非应用程序设置了特别的需求),调整也很简单,一般由 IT 运营机构完成,而不是由开发人员重新设计应用程序源代码。通常,如果添加了新客户,则需要添加一个相同配置的栈,以便更轻松地满足安全需求。

以一个栈为例,假设该栈具有预先配置好的Web层(HTTP服务器)、应用程序层(应用服务器)和数据库层(数据库服务器),这些层既可以部署到物理硬件,也可以部署到操作系统的虚拟实例。这是对基于Web的应用程序增长进行规划的一种典型方法,因为用户对应用程序的需求可能是今天高、明天低的。可以在容量小的时候调低这些实例,然后再根据需要增加实例。在基础架构的预防维修过程中(从需求收集的增加到运行实际的客户事务),在大多数情况下,几乎可以立即完成调整,因为这些栈是预先配置而且自动部署。

在应用程序层,应用服务器的多租户需要更改应用程序代码,因为多个客户会共享相同的应用服务器。无论用户是运行一项事务还是同时运行一千项事务,响应时间都会受到影响,因为其他的客户不仅是在同一个服务器硬件上运行,而且在相同的逻辑系统内存中运行。根据应用程序的不同,可能会有额外的安全需求。

多租户基础架构和应用程序需要用事务来验证每个客户提交的请求。此过程有助于验证和授权用户可以访问的事务资源类型。

从应用程序层提取认证和授权服务有助于提高多租户事务的可伸缩性、可维护性和重用性。大多数添加到基础架构的应用程序服务都需要授权,而专门用于授权的独立子网、云或应用服务器集群可以满足可伸缩性、可维护性和重用性需求。授权服务也是一样,因为可以在云中或子网中根据事务增长来重用和调整此架构。

作为很多应用程序的核心部件,数据库对于多租户的可伸缩性是至关重要的。由于可伸缩性数据库需要对基础架构和应用程序层进一步规划,因此您需要了解应用程序的需求,以及可伸缩数据库基础架构的最佳实践。如果基础架构对每个客户账户都有一个单独的数据库,那么实现可伸缩性就会很简单,因为已经存在针对单个数据库的故障转移的最佳实践。还要考虑成本,因为大多数商用数据库在每次增加客户账户时都要进行授权,所以成本会呈指数级增长。

如果多租户架构是应用程序层实现,那么您必须足够了解应用程序,然后才能进行数据库规划。应用于多租户架构的数据库模式可能会有不同,因此必须进行相应的规划。在单个许可上节约成本和调整大小的一个常见应用设计方法是将客户账户放入表名称中,例如,customer123_payment,其中的customer123是用户账户的唯一标识符。在为每个客户添加数据库实例时,或者在每个表中创建一个数据列以验证客户是否访问合适的数据时,这种设计会大大增加表的数量。

构建多租户服务的要求包括:

定义基于RESTfu或WSDL的服务。

定义响应时间和性能目标。

确定可伸缩性和高可用性需求。

定义每个事务需要的服务。

根据事务客户确定服务的负载量。

为服务创建部署和网络拓扑。

为实现配置和安装而创建部署自动化脚本。

为实现开发而创建Unified Modeling Language (UML)序列图。

在不久的将来,云计算一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏云计算,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

标签: http服务器 安全 大数据 代码 防火墙 服务器 服务器安装 服务器硬件 脚本 金融 数据库 网络 应用服务器 云计算 云计算技术

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:55秒搭建一个云服务器

下一篇:国内云存储市场规模2014年增至2.1亿美元