微服务扩展性- AKF扩展立方体

162 阅读2分钟

AKF扩展立方体

三个维度扩展的对比

1.X轴扩展 服务水平复制

优点:不需要太大开发成本 通过复制多个应用实例 并做对应的负载均衡即可提高系统性能;

缺点:应用或者数据库没有拆分导致整个系统过大,只是部分需要扩展,却要复制整个实例造成资源的浪费和扩容速度较慢,而且可能因为某些问题拖垮整个系统;

场景:业务简单,数据量小,团队规模小。

2.Y轴扩展 应用拆分

优点:将应用拆分后可以实现更方便的扩容和缩容,可以实现隔离故障,可以提高响应时间;

缺点:开发协作成本变高,问题排查变得稍微复杂,无法解决数据集过大问题;

场景:业务复杂,数据量大,代码耦合度高,团队规模大。

3.Z轴扩展 分片

优点:解决大数据量和请求数据量,降低故障风险,可以带来最大的扩展性。

缺点:成本最昂贵;

场景:用户指数级快速增长

如何将理论付诸实践?

1.分割应用

X轴:从单体系统或服务,水平克隆出许多系统,通过负载均衡平均分配请求;

Y轴 :面向服务分割,基于功能或者服务分割,例如电商网站可以将登陆、商品、订单,等服务进行Y轴拆分,每一组服务再进行X轴的扩展;

Z轴 :基于用户、请求或者数据分割,可以将用户哈希到不同的地区的服务,并让同一次请求都尽可能落到相同机房,减少网络的延迟,提高系统性能 。

2.分割数据库

X轴:从单库,水平克隆为多个从库读,一个库写,多个从库读,通过数据库的自我复制实现,要允许一定的读写时延;

Y轴 :根据不同的信息类型,分割为不同的数据库,即分库,例如产品库,用户库等;

Z轴 :按照一定算法,进行分片,把订单号将数据按照不同的哈希值进行分片存储,每个分片再进行X轴冗余。