极限的拆分原则

在分布式软件环境下,为了保障分布式架构的可靠性、可扩展、高性能,通常会通过集群、扩容、数据分治等思想来实现,比如很多中间件的使用Redis、ZK、Kafka等,都可以通过这种设计思想来提高系统架构吞吐量。AKF 是一个系统化的拓展思想,它从三个维度来实现分布式系统拆分(三个维度可以理解为x,y,z轴)

在分布式软件环境下,为了保障分布式架构的可靠性、可扩展、高性能,通常会通过集群、扩容、数据分治等思想来实现,比如很多中间件的使用Redis、ZK、Kafka等,都可以通过这种设计思想来提高系统架构吞吐量。

AKF是一个系统化的拓展思想,它从三个维度来实现分布式系统拆分(三个维度可以理解为x,y,z轴),常见到的各种系统扩展方案,都可以归结到 AKF 立方体的这三个维度上。

  • X轴:水平拓展(副本),也就是复制机器扩容,比如做主从复制等。 

  • Y轴:业务拆分,比如将数据根据业务场景进行划分,并将数据分别使用不同的节点处理。

  • Z轴:数据分区,比如单类业务就可能存在导致压力问题,这时可以通过将该类数据通过一定规则定位不到不同分区节点,这些规则可以是Hash取模算法,可以是数据区间等等。

以下使用Redis系统使用来说明相关拓展思想。

1、水平拓展(x轴)

这个比较好理解,比如企业有一个商品系统,数据信息需要通过Redis实现缓存存储。起初当商品量不是很大时,只使用到了一个单机Redis节点。后续商品客户量大了,并发量越来越大时,可能单台Redis节点吞吐达到了瓶颈。

此时我们可以添加副本,通过主从复制读写分离手段来提供更高吞吐量,以及保障可靠性。

2、业务拆分(y轴)

除了以上方式也可以采用业务拆分的手段来实现扩容,比如再实现了副本之后,随着商品的增长,已经满足不了当前性能需求。此时可以通过业务角度进行数据拆分存储,比如将商品分为饮食类、工具类、服装类等,不同的类型数据存储再不同的节点上,同时每个类型商品节点都可以结合水平扩容实现。

注意:AKF三个维度思想可以组合使用也可以单独使用,主要依赖于系统需求。

3、数据分区(z轴)

这个就是我们常说的分区思想,比如饮食类单类型可能需求量大,当前方式也不能支撑了。此时还可以通过数据分区方式将饮食类中的数据依照一定的规则进行分治。比如通过对key进行hash取模,相关的取模结果数据放入到同一个节点中。

AKF从三个维度提出了一种拆分思想,保障分布式系统架构可靠性、高性能、可扩展。X、Y、Z 轴的扩展并不是孤立的,我们可以单一或者组合使用。AKF 提供了一种自上而下的设计思想,解决不同场景下面临的瓶颈问题。

知秋君
上一篇 2024-08-18 10:48
下一篇 2024-08-18 10:12

相关推荐