关于服务拆分的切入点,我们先从MartinL.Abbott所著《架构即未来》中所介绍的AKF扩展立方体出发寻找一些灵感,然后给出本文中关于服务拆分的两大维度。
1. AKF扩展立方体
AKF扩展立方体(Scalability Cube)是一种可扩展模型,这个立方体有三个轴线,每个轴线描述扩展性的一个维度(见下图),分别是:
- X轴
代表无差别的克隆服务和数据,工作可以很均匀的分散在不同的服务实例上
- Y轴
关注应用中职责的划分,比如数据类型、交易执行类型的划分
- Z轴
关注服务和数据的优先级划分,如分地域划分
以上X、Y和Z轴的划分可以概括为X 轴关注水平复制,Z 轴类似数据分区,而Y 轴则强调基于不同的业务拆分。理论上按照这三个扩展维度,可以将一个单体系统进行无限扩展。举例来说,比如用户预约挂号应用,一个集群撑不住时,分了多个集群,后来用户激增还是不够用,经过分析发现是用户和医生访问量很大,就将预约挂号应用拆成了患者服务、医生服务、支