转自:
https://akfpartners.com/growth-blog/scale-cube/
比例立方体
2018年4月25日| 发布者:Robin McGlothin
Scale Cube是用于定义微服务和扩展技术产品的模型。AKF Partners于2007年发明了Scale Cube,最初于2007年在我们的博客上在线发布(原创文章),随后在我们的第一本书“ 可伸缩性艺术”和第二本书“ 可伸缩性规则”中发布。
Scale Cube(有时称为“AKF Scale Cube”或“AKF Cube”)由3个轴组成:
•X轴:服务和数据的水平复制和克隆
•Y轴:功能分解和分段 - 微服务(或微服务)
•Z轴:沿客户边界的服务和数据分区 - 碎片/盒
这些轴及其含义如下图1所示。
图1
在设计解决方案和改进现有系统时,Scale Cube可帮助团队牢记系统规模的关键维度。
下面的图2显示了如何在现代体系结构中分解多维数据集(如有时称为微服务体系结构),克隆服务和数据源以及将类似客户(如客户)分割为“pods”。
图2
使用Scale Cube的X轴缩放
扩展解决方案最常用的方法是在负载均衡器后面运行多个相同的应用程序副本,也称为X轴缩放。这是提高应用程序容量和可用性的好方法。
使用X轴缩放时,每个服务器都运行相同的服务副本(如果已分解)或整体。X轴的一个好处是它通常在智能上易于实现,并且从事务角度来看它可以很好地扩展。实现X轴的障碍包括繁重的会话相关信息,这些信息通常难以分发或需要服务器持久性 - 这两者都可能导致可用性和可伸缩性问题。X轴的比较缺点在于,虽然在理论上易于实现,但是数据集必须全部复制,这增加了操作成本。此外,随着数据大小随交易量的增加,缓存在许多层面上都会降低。最后,X轴不会产生更高水平的组织规模。
图3解释了X轴可伸缩性的优缺点,并介绍了传统的3层架构,以解释它是如何实现的。
图3
使用Scale Cube的
Y轴缩放Y轴缩放(认为面向服务的体系结构,微服务或整体的功能分解)侧重于沿名词或动词边界分离服务和数据。这些分裂彼此“不相似”。商业解决方案中的示例可以是从浏览中分离搜索,从添加到购物车结账,从帐户状态登录等。在实现拆分时,Y轴缩放将单片应用程序拆分成一组服务。每个服务都实现了一组相关的功能,如订单管理,客户管理,库存等。此外,每个服务都应该有自己的非共享数据,以确保高可用性和故障隔离。Y轴缩放与多维数据集的所有轴共享增加事务可伸缩性的好处。
此外,由于Y轴允许对团队进行分段以及代码和数据的所有权,因此增加了组织可扩展性。高速缓存命中率应该随着数据和服务被适当地分段而增加,并且类似大小的存储空间可以被分配给由相对较少的事务访问的较小数据集。通常可以降低运营成本,因为系统可以缩小到商用服务器的规模,或者可以使用更小的IaaS实例。
图4解释了Y轴可扩展性的优缺点,并显示了一个故障隔离的服务示例,每个服务都有自己的数据存储,用于故障隔离。
图4
使用Scale Cube的Z轴缩放
尽管Y轴解决了不相似事物的分裂(通常沿着名词或动词边界),但Z轴解决了“相似”事物的分割。示例可以包括沿着customer_id的无偏模量或沿着有些偏差(但对响应时间有利)地理边界分割客户。产品目录可以按SKU拆分,内容可以按content_id拆分。与所有轴一样,Z轴缩放可提高解决方案的事务可扩展性,如果故障隔离,则可用性。由于部署到服务器的软件在每个Z轴分片中基本相同(但数据不同),因此组织可伸缩性没有增加。缓存命中率通常随着较小的数据集而增加,并且运营成本通常会下降,因为可以使用商用服务器或更小的IaaS实例。
图5解释了Z轴可扩展性的优缺点,并显示了一个故障隔离的pod结构,在美国有2个独特的客户端,在欧盟内有2个。请注意,Z轴刻度的另一个好处是能够将豆荚细分为符合当地隐私法,例如欧盟的GDPR。
图5
摘要
就像Goldilocks和三只熊一样,分解的目标不是拥有太小的服务,或者服务太大,而是确保系统在规模,成本,可用性,时间等方面“恰到好处”。市场和响应时间。