来源于《架构即未来》的AKF可扩展能力立方体模型是软件扩展能力的理论基础,在云计算和微服务盛行的时代,该模型获得了越来越多的人的认可,在软件扩展能力建设方面也有很多成功的实践案例。
![](https://img.haomeiwen.com/i6362040/dfe3a3b2e6673341.png)
X轴关注无差别的服务和数据的复制,解决应用和数据库容量水平扩容的问题。当应用或数据库实例负载过重时,可以复制应用或数据库实例实现扩容。扩容后,任务可以通过负载均衡均匀分布到不同应用服务或数据实例,所有的实例都可以无差异地完成任务。在分布式架构下,X轴的典型实践案例主要体现在应用和数据库实例的水平扩展能力上。如Nginx负载均衡,应用或数据库的多实例,应用的弹性伸缩,数据库多副本和读写分离等场景。
Y轴关注应用的业务职责划分,如根据数据类型、交易类型或根据两者组合来划分业务和应用边界,在划分过程中会遵循单一职责原则。Y轴主要用于划分业务和应用边界,解决业务能力复用的问题。Y轴的典型实践案例是从单体向微服务的演进。这个过程会有业务和应用边界拆分的问题。
Z轴关注数据的扩展能力,它按照业务类型或数据属性进行数据分片。根据数据分片策略将数据集划分为不同的数据子集,提升数据的扩展能力。如按照地域、机构或按照客户ID哈希进行数据分片。Z轴的典型实践案例有:数据库水平切分和单元化架构。
AKF可扩展能力立方体模型的X、Y、Z轴代表的三个维度相辅相成,涵盖业务和技术的多个领域。通过克隆应用和数据库实例,可以提高应用和数据库的业务承载容量,对应X轴扩展能力。通过划分业务职能边界建立领域模型,以拆分应用和设计微服务,可以提高业务的复用和扩展能力,对应Y轴扩展能力。通过分片策略将数据集拆分为多个数据子集或业务单元,可以提高数据的扩展能力,对应Z轴扩展能力。
网友评论