侧边栏壁纸
博主头像
为了吃方便面博主等级

行动起来,活在当下

  • 累计撰写 12 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

AKF可扩展能力立方体模型

Administrator
2023-03-21 / 0 评论 / 0 点赞 / 84 阅读 / 2009 字

我们先来了解AKF可扩展能力立方体模型,如图所示,模型来源于《架构即未来》。它有X、Y、Z三个轴,分别从三个维度来定义软件产品的扩展能力。

AKF可扩展能力立方体模型是软件扩展能力的理论基础,在云计算和微服务盛行的时代,该模型获得了越来越多的人的认可,在软件扩展能力建设方面也有很多成功的实践案例。

image

X轴:容量扩展能力

X轴关注无差别的服务和数据的复制,解决应用和数据库容量水平扩容的问题。当应用或数据库实例负载过重时,可以复制应用或数据库实例实现扩容。扩容后,任务可以通过负载均衡均匀分布到不同应用服务或数据实例,所有的实例都可以无差异地完成任务。

在分布式架构下,X轴的典型实践案例主要体现在应用和数据库实例的水平扩展能力上。如Nginx负载均衡,应用或数据库的多实例,应用的弹性伸缩,数据库多副本和读写分离等场景。

Y轴:业务扩展能力

Y轴关注应用的业务职责划分,如根据数据类型、交易类型或根据两者组合来划分业务和应用边界,在划分过程中会遵循单一职责原则。Y轴主要用于划分业务和应用边界,解决业务能力复用的问题。

Y轴的典型实践案例是从单体向微服务的演进。这个过程会有业务和应用边界拆分的问题。但是在单体拆分为微服务时经常会有人问:单体到底应该如何拆分为微服务?是否有成熟的方法来完成应用和业务边界的划分呢?

答案是肯定的!

DDD(Domain Driven Design,领域驱动设计)方法就是一种行之有效的划分业务领域边界的方法,以帮助完成应用的拆分和微服务的设计。它会按照流程或功能边界分解业务领域,根据业务上下文边界,构建领域模型,并将其作为微服务设计的输入。如将电商业务按照商品、订单、支付和客户等业务上下文边界进行Y轴拆分,构建基于不同业务边界的领域模型,最后完成微服务的设计和开发。

Z轴:数据扩展能力

Z轴关注数据的扩展能力,它按照业务类型或数据属性进行数据分片。根据数据分片策略将数据集划分为不同的数据子集,提升数据的扩展能力。如按照地域、机构或按照客户ID哈希进行数据分片。

Z轴的典型实践案例有:数据库水平切分和单元化架构。

数据库水平切分是通过数据分片规则将一个大的数据集切分为多个数据子集,并分布到不同的数据库中,按照分片规则可以路由到具体数据库完成数据查询等操作。单元化架构是按照业务特点或用户需求进行数据分片,将一个数据集水平切分为多个数据子集,然后根据数据分片分别部署业务应用单元。业务应用单元内包含若干依赖紧密的应用,应用在单元内可以不依赖单元外的服务独立完成单元内的业务全流程,以形成业务场景闭环。业务单元之间相互独立、天然隔离。当业务需要扩容时,只需增加和部署新的业务单元与数据子集就可以很容易实现扩容,从而提高业务的承载能力。单元化架构在很多多数据中心的多中心多活方案中都有实践。

综上,AKF可扩展能力立方体模型的X、Y、Z轴代表的三个维度相辅相成,涵盖业务和技术的多个领域。通过克隆应用和数据库实例,可以提高应用和数据库的业务承载容量,对应X轴扩展能力。通过划分业务职能边界建立领域模型,以拆分应用和设计微服务,可以提高业务的复用和扩展能力,对应Y轴扩展能力。通过分片策略将数据集拆分为多个数据子集或业务单元,可以提高数据的扩展能力,对应Z轴扩展能力。

企业将多个不同维度的扩展能力融合在一起,就可以实现应用能力的无限扩展了。

摘录来自《中台架构与实现:基于DDD和微服务》

0

评论区