分布式系统「伸缩性」大招之——「水平&垂直切分」详解

如果第二次看到我的文章,欢迎文末扫码订阅我的公众号(跨界架构师)哟~  >

本文长度为5389字,建议阅读14分钟。

坚持原创,每一篇都是用心之作~

 

 

没想到这篇文章写了这么长,一时半会没消化完的话,可以收藏一下先

 

 

这是「伸缩性」章节的第四篇,先给新来的小伙伴们简单回顾下前三篇的内容。

 

做「伸缩性」最重要的就是先做好「无状态」,如此才可以随心所欲的进行横向“扩展”,而不用担心在多个副本之间切换会产生错乱。《分布式系统关注点——「无状态」详解》聊的就是这个。

 

不过,就算做好了横向扩展,本质上还是一个“大程序”,只是变得「可复制」了而已。

 

如果要消灭“大程序”,那就得“切分”,做好切分必然离不开「高内聚低耦合」的核心思想。《分布式系统关注点——「高内聚低耦合」详解》这篇聊的就是这个。

 

题外话:当你遇到单点单应用支撑不住使用的时候,Z哥给你的普适性建议是:先考虑“扩”,再考虑“切”。这个和写代码一样,“增加”新功能往往比在老功能上改容易。

 

“扩”的话先考虑「垂直扩」(加硬件,钱能解决的都不是问题),再考虑「水平扩」(无状态改造+多节点部署,这是小手术)。

 

“切”的话一般就是「垂直切」(根据业务切分,这是大手术),偶尔会用到「水平切」(其实就是单个应用里的分层,比如前后端分离)。

 

 

第三篇《分布式系统关注点——弹性架构》我们聊了常见的两种「松耦合」架构模式,为的是让应用程序的「伸缩性」更上一层楼。

 

 

以上这些呢都是应用程序层面的工作。一般情况下,在应用程序层面做做手术,再配合以缓存的充分运用,就可以支撑系统发展很长时间了。特别是数据量不大,只是请求量大的「CPU密集型」场景。

 

但是,如果所处的工作场景是一个非常成熟且具有一定规模的项目,越发展到后面瓶颈总是出现在数据库这里。甚至会出现cpu长期高负荷、宕机等现象。

 

在如此场景下,就不得不对数据库开刀了。这次Z哥就来和你聊聊做数据库的「伸缩性」有哪些好方法。

 

 

核心诉求

面临数据库需要开刀的时候,整个系统往往已经长成这个样子了。

 

 

正如前面所说,这时候的瓶颈往往会体现在「CPU」上。

 

因为对数据库来说,硬盘和内存的扩容相对容易,因为它们都可以直接用“增加”的方式进行。

 

CPU就不同了,一旦CPU飙高,最多检查下索引有没有做好,完了之后基本就只能干看着。

 

所以解决这个问题的思路自然就变成了:如何将一个数据库的CPU压力分摊到多个CPU上去。甚至可以做到按需随时增加。

 

那这不就是和应用程序一样做「切分」嘛。也是分布式系统的「分治」思想体现。

 

既然是切分,本质上就和

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值