系统设计基础1:垂直扩展和水平扩展
2019-03-19 本文已影响0人
MeazZa
从本文开始,我们将开始介绍关于系统设计的内容,也就是如何实现一个复杂系统的设计。
首先介绍比较基础的概念:垂直扩展和水平扩展。这两个概念的提出,是由于当前系统对于请求的处理能力不足,需要进行处理能力的扩展。通俗上来讲,垂直扩展等于升级服务器,水平扩展等于增加服务器。
这里我们假设大家都有一定的分布式系统的经验,对于这两个概念本身不做过多的赘述,重点关注下两种扩展方式的优缺点对比。
比较点 | 水平扩展 | 垂直扩展 |
---|---|---|
可用性 | 弹性部署(Resilient) | 单点故障(Single Point of failure) |
可扩展性 | 请求量增加可增加机器 | 硬件限制 |
请求方式 | 负载均衡(Load Balance) | N/A |
调用速度 | 网络调用(RPC) | 内部通信(Internal Process Communication) |
数据一致性 | 可能出现不一致 | 始终一致 |
可以看出,这两种扩展方式并没有绝对的好坏之分。垂直扩展的优点在于方法简单,数据状态维护简单,方法内部调用速度块;水平扩展的优点在于可用性和可扩展性的都较好。
由于水平扩展是目前互联网服务的主流设计方式,后面我们将主要针对水平扩展的相关知识点进行介绍。
欢迎大家订阅专题,其中包含了系统设计基础系列的全部文章:System Design