故障隔离的架构会给平台或产品的可用性带来很大的好处。当一个故障隔离城或泳道在平台或系统架构级别出了故障,你失去的只是驻留在这些泳道的服务器中的功能、地理位置或客户群。当然,前提是你的泳道架构设计正确,其他泳道不会调用这个出问题的泳道。在这个例子中,不论哪个泳道出故障都不会给可用性带来什么好处,但影响却有大小之分,所以泳道的架构就显得非常重要。为了说明这一点, 让我们来对比一下支持高可用性的泳道架构和架构设计不良的泳道架构。
我们在介绍各个主题时,都采用了虚构的AllScale公司为例,这次也不例外。AllScale公司的团队决定把创建泳道的概念应用到新开发的客户关系管理系统(CRM)和已有的人力资源管理系统(HRM)上。这两个系统都是SaaS (软件即服务)平台。CTO约翰尼.菲克斯和他的团队从无到有地开发了CRM平台,这个平台支持公司层面上的多租户,也就是说,多个公司可以驻留在一个物理数据库中,这样可以减少整体成本,更有效地利用资本。AllScale公司的架构师还认识到了长期扩展的需求,因为它们的客户是不断增长的。因此,他们决定,对于新开发的CRM解决方案和已有的HRM解决方案,都以客户为边界,划分应用和数据库。约翰尼和AllScale公司的团队决定了,不再需要划分的最小的客户分块是公司内的一个部门。AllScale公 司的架构师还确定了要在美国范围内,运行多个活动的数据中心。
AllScale公司的架构师选择了泳道,或者说故障隔离的架构。他们大致按一个非常 大的公司部门配以几个较小的公司的方式分配数据中心,这些客户所需的所有服务都来自于这个数据中心。数据中心的选址尽量靠近数据中心所服务的公司的企业总部。任何一个组件发生了故障,那么只有驻留在这个数据中心的客户会在发生停机或服务中断的过程中在数据中心之间进行通信。因此,一旦一个数据中心中从数据库到边界路由器的任何服务都不能受到影响。
局城网分段和多个数据库,就可以把多个部门或一组公司放到数据中心的一个故障隔离域中。 这 Aslal公司的架构师进一步发现了一种利用泳道在数据中心中进行扩展的方法。 借助虚拟样地,服务也不能跨故障隔离城通信。这样的话,除了共享的网络设备外(如路由器和边界路由 样还可以对内部路由器后的系统和服务进行故障隔离,包括局城网、数据库、应用服务器等。同期,它允许公司把eca饭本的产品发布给相互隔离的客户分段,从而进步降低了风险)。其他任何设备故障都会被隔离在数据中心的一一个区或城中。在实现时,这种设计超出了预故障隔离的架构,而不是以客户为边界。在这种情况下,该团队可能会为登录服务创建一个泳道,另一种方法是按照服务来划分故际隔离城。让我们假讨AlSeal的团队以服务为边界创建了为更新销售线索集的服务创建一个泳道,为查看销售线索的服务创建一个泳道,为制作销售线索衡量指标的报表的服务创建一个泳道。这种方法的问题在于,一旦其中任何一个服务出了故障,都可能给其他服务带来意想不到的影响。例如,在上述例子中,一旦登录服务发生故障,导致系统无法访问,那么尽管其他服务仍然可用,但可以想见,系统的用量会逐渐下降,因为新的登录操作都不被接受了。这样要与平台进行交互的客户在登录失败后会100%受到影响。
这并不是说,绝对不应该采用这种面向服务的隔离方法。恰好相反,这种方法可以很好地隔离代码库、通过隔离来缩短上市时间以及通过缓存特定服务的动作来减少扩展需求。然而,一旦你的服务要依赖于其他服务,无论是以前面提到的同步方式,还是要按照时间序列,一个服务要在另一个服务之前调用,那么你都使自己陷人了故障高发的境地。这时你可以通过确保先发生的服务具有更高的可用性和冗余度,以降低它们出故障的风险,或者也可以进行多次划分,进一步隔离故障。
如果要采用前一种方法,即让先发生的服务具有更高的可用性,常用的方法是极大地增加产能。此外,对每个公司进行功能减负),也会有助于隔离某些问题。对于新的登录代码,强制性地让少量用户采用特定的登录池服务,可以减少新代码带给AllScale公司的风险。在服务器上建立连接限制,可以在出于某些原因造成服务变慢时,仍然使某些客户能够正确登录系统。
设计为能够禁用的,我们称之为功能减负。有了功能减负的设计,就可以把产品中的某个功能禁用掉,从而不会影响到,其他功能。公司路动能减负投贵的常见原因是,限制新的功能发布对可用性和 口可扩展性的负面影响。功能减负实施得当,就能够在修复问题代码成系统时,让一个新发布的版本保留在生产环境中,需无需回退整个发布。通常可以通过一个软开关让有问题的代码成系统离线,在引发意外行为的问题得到解决后,再让它上线。
采用这种方法,AlSal公同既按照服务进行了划分,又以公司为基础按照客户进行 我们倾向于采用后一种方法,即进行网站设计的多次划分来隔离故障,因为它同时解决了可扩展性和可离,然后又在这个服务泳道中,采用泳道进行了面向客户的划分。此外,AlSale公司还可以交 了划分。首先ASCal公司以面向技术的划分方法为主要划分方法,通过登录服务泳道实现了隔离划分的顺序,首先为组公司创建一 个客户豆荚 (或泳道),然后在豆荚中,用泳道来划分服务,其中一一种服务可以是登录服务。虽然大多数公司认为面向客户的划分方法更自然,但无论哪种方法都是可行的。划分类型,其中将介绍AKF立方以及如何把它应用到服务、数据库和存储结构上。
本文地址://www.xrqsnxx.com//article/3892.html