可扩展性设计(一)相关概念

我们也可以把加机器得到的性能提升叫做横向扩展。

横向扩展(scale out)也叫水平扩展,指用更多的节点支撑更大量的请求例如1台机器支撑10000TPS,两台机器是否能支撑20000TPS?

纵向扩展(scale up)也叫垂直扩展,扩展一个点的能力支撑更大的请求。通常通过提升硬件实现,例如把磁盘升级为SSD。

横向扩展通常是为了提升吞吐量,响应时间一般要求不受吞吐量影响即可。因为本身在访问量比较小的时候,响应时间就是可接受的范围,例如去分布式缓存get一条数据的响应时间在毫秒级,理想情况如图5-1所示,只要在吞吐量不断提升的情况下保持这个响应时间就可以。当然,响应时间和吞吐量在资源一定的情况下,通常是互斥关系,如果要降低响应时间,可以通过纵向扩展,提升单机能力,或者改变数据存储结构,压缩等方式。

                                                可扩展性设计(一)相关概念_第1张图片

                                                      图 5-1 响应时间和吞吐量随节点数变化关系图

AKF扩展立方体

提到可扩展性,就不得不提著名的AKF扩展立方体(Scalability Cube),AKF是ebay前副总裁Martin Abbott在《The Art of Scalability》一书中的经典理论,作者把系统在架构上的扩展性按照三个维度进行说明,如图5-2所示。 

                                         可扩展性设计(一)相关概念_第2张图片

                                                          图 5-2 AKF扩展立方体 

下面我们通过表格5-1简单说明一下三个轴适用的场景、优势及挑战。

                              可扩展性设计(一)相关概念_第3张图片

                                                          表格 5‑1 AKF扩展立方体

 

你可能感兴趣的:(java技术,数据库,微服务)