架构扩展性:应用扩展 数据扩展 组织扩展 流程扩展
核心方法论–扩展立方体:
x轴:无脑克隆
y轴:功能分割
z轴:客户分割
扩展立方体在应用扩展的应用:
x轴:横向克隆
对于无状态的应用,多节点克隆复制
负载均衡器,控制业务负载流向
有状态应用,状态剥离(比如Session的处理)
y轴:服务分割
子系统 模块 聚合拆分
后台数据相应进行y轴分割
z轴:
用户UserID分割,多节点水平复制
地理位置分割,Set单元化
产品ID分割,SPU/SKU
应用扩展–套娃组合法:
扩展立方体在数据扩展的应用:
x轴:水平复制
传统SQL,读写分离,1写多读
NoSql 多副本replica
缓存读取,横向扩展
y轴:库表分割
配合应用Y轴分割
表、库享有独立数据库集群/节点
微服务、康威定律
z轴:hash取模
支持各种key:user spu sku
传统sql 分表分库
Nosql 多shard/chunk分片
组织扩展的应用:
目标一致
人员数量少
配合应用和数据的Y轴扩展
流程扩展的应用:
CMMI软件成熟度模型
SMART原则:
扩展性实现方案:
如何多快好省实现扩展性:
多:分布式架构设计、横向扩展
快:X轴无脑克隆和复制
应用:无状态、容器化、Serverless无服务器化
数据:多副本、读写分离,冷热分离
中间件:缓存、最终一致性
工具:SQL CDC技术
好:Y轴服务和数据分割
服务拆分、界限上下文交互
服务发现、服务治理、负载均衡、服务追踪
省:z轴哈希取模特征分割
应用:负载均衡 客户端Ribbon 服务端Nginx k8s Service 中间件ESB API Gateway
数据:分布式多片架构 分库分表 客户端sharding-jdbc 数据库Spanner 中间件(Mycat aurora)
单体应用从100节点到10000节点的扩展历程:
扩展到10000个: