0
点赞
收藏
分享

微信扫一扫

临时工说:数据库扩展 和 弹性 什么是弹性 (部分内容粗俗,介意者误入)...



临时工说:数据库扩展 和 弹性 什么是弹性   (部分内容粗俗,介意者误入)..._ci

数据库的技术名词比较多,扩展和弹性本身的区别容易被忽略,弹性和扩展在不同的数据库中是否能实现也有不同,如何分辨自己的数据库能否进行弹性或扩展是一个需要进行界定的工作,针对自己的业务,如何判定需要的数据库弹性的模式,是扩展还是弹性也需要细细的考虑。

扩展和弹性本身是有很大区别并且使用的方式和面对的数据库系统也有较大的区别。

1  Scalability : 这里我们翻译成伸缩性,scalability 本身并不光是为了云cloud设计而来的,而是针对传统的数据库和分布式数据库而进行的伸缩,一般通过向现有实例添加资源,纵向扩展,如添加可以只读的副本,可以读写的副本等,同时在分布式数据库中以添加节点的方式,提高并发性或数据存储容量,以及数据计算的性能作为出发点,通常scale out ,scale in 等方式来进行系统的扩展和收缩,达到性能提升可以容纳更多的系统使用需要或降低系统消耗降低费用等需求而来的一种,云或 传统数据库系统满足业务需求的一种数据库扩展的方式。

2  Elasticity : 这里我们翻译成  弹性,Elasticity和Scalability 二者有明显的不同,Elasticity 本身这个词多用在云计算中,在数据库中弹性并不为添加节点的行为,而是在数据库节点遇到性能瓶颈的情况下,调整计算容量的能力,这种触发的方式多为自动的方式,并且弹性如同我们理解的他会在不需要这些资源的情况下自动收缩,这也是与scalability 最大的不同,scalability 大多是 scale out 的多,scale in 的时候少,所以在弹性方面,云上找到相关的应用的场景都是Elasticity 而不是 Scalability.

下面我们将扩展scalability和弹性scale out 这两个部分的不同点说一个明白。

不同点:

Elasticity :弹性 弹性针对的目标是在短时间的超过预定的工作负荷或虽然有预料但也存在突发性的情况,保证在短时间的冲击内,提供充足的数据计算资源完成相关的任务。

Scalability :  主要应对有预谋的负载的增长,提前对数据库的服务能力进行提升,并且大概率是长期的提升。

Elasticity:   适合对于成本控制比较严的情况,平时服务器都并为有高功耗,突发性的访问较多,需要应对的场景。高功耗资源是一种短期的行为。

Scalability: 是一种长期的变化,有预估的随着业务的增长进行提前的性能提升,资源的增加,不适合突发的场景,对于突发的场景无法进行有效的应对。

对于Elasticity 和 Scalability,这两个部分我们对于scalability是很近的可能很多DBA 都在做这个事情,比如

1  TIDB 增加数据存储节点

2  MYSQL 增加只读库

3  MYSQL 使用DBLE 增加数据存储节点

4  PostgreSQL 增加只读库,或通过patroni 增加读库

5  MongoDB 增加分片节点

6  阿里云上 poalrdb 增加只读节点,增加IMCI 节点 

以上这些都可以认为是scalability ,这些操作也都有同一个特点,不可能在你发生突发系统风险的时候,在下一秒用性能碾压风险,这些操作都是有预谋的,并且时间都需要或长或短的时间。

同时这些都预示着另一个事情,就是基本只能增加,减少的事情很少和增加的问题相辅相成,所以我们认为这些操作都属于扩展,而不属于弹性,虽然像阿里云上POLARDB 增加节点非常快,在大的节点也是7分钟左右完毕投入使用。

那么到底弹性是什么,他与扩展在实际上最大不同是什么,我们可以从一个数据库对于弹性的描述来展开,弹性可以做到什么。为避免有广告的嫌疑,这里就只是截图,某数据库对于弹性的一些特性。

临时工说:数据库扩展 和 弹性 什么是弹性   (部分内容粗俗,介意者误入)..._数据库服务器_02

四点中,弹的快秒级,弹的范围很大,弹的步长非常细,给我留下了比较深刻的印象。

临时工说:数据库扩展 和 弹性 什么是弹性   (部分内容粗俗,介意者误入)..._数据库服务器_03

从上面的图中我们可以看出有弹性和没有弹性在数据库使用中的区别,如果没有弹性,则大部分时间服务器的资源是无法被使用,因为不需要,而在超出服务器资源使用的需求的情况发生,则服务器也无法满足短暂的性能需求,这就和男女对感情和婚姻的定义,你想要的时候,他不行,他行的时候,你不想要。始终是不匹配,有了弹性,则是一拍即合,你要我就给,主打就是取之不尽。

弹性到底能服务在什么场景,这点我们需要讨论,没有需求的技术好似厕所里面用过的纸。

需求1 : 不定时的突发业务,这样的业务太多了,比如买酒女商务,今天在夜店多推销出去两瓶酒,这样的卖酒的今天数量有点多,你的数据库服务器可能能承载这些业务,因为有预估,并且她们也不是同时卖出去的有分时做底,但怕就怕,今天卖酒女商务不开张,明天买出去1000000瓶的业绩,如果此前半年不开张,你老板会问你,为什么平时数据库的CPU 都是 5%以下,有什么用,你唯命是从的把服务器的配置降低到4C8G,突然某天卖酒女商务就遇到贵人了,晚上谈业务,早上她就拿着1000000瓶的订单,弄到你数据库服务器上,要兑现,你突然就不行了,4C8G的能力怎么能满足1000000瓶的业绩,马上你的数据库服务器就萎了。

你老板对你又是一通骂,平时养你做什么,关键时刻不行,你自己也委屈,不是平时你让我吃素,现在让我马上就练,哪里来的精力。

总结需求:不定时的性能炸弹需求,急需弹性来补偿

需求 2  :短期的需求释放,比如2月14 , 7 夕,甭管国外的,国内的,反正这几天都有需求,小时房爆满,虽然和我们上面的预知的需求对的上,我们可以用Scalability来应对这些需求,但现实上的操作,我们是不值的,比如就一天爆发的小时房需求,让订房的网站数据量猛增,如果使用scalability后,转天没人了,业务直线下降怎么办? 

你的老板还的马上出来骂你,你是脑子有水,就那么一天你给我增加那么多台数据库服务器,你脑子瓦特掉了,你增加数据库服务器容易,你scale out 难,数据要不要迁移,需要多少时间,会不会造成业务不稳定,此时你就憎恨那些虽然有预期,但他们一时乐,你哭的场景。此时你就需要弹性来应对X虫上脑的短暂需求,如同有一个名人讲的,快乐10分钟,劳苦一生,因为搞出人命你的负责。

当然这样的需求不胜列举,这里点到为止,春天到了,万物复苏,又到了一个人口开始增长的季节。

这里小结一下,Scalability 和 Elasticity 在当下业务需求中哪个更可能被青睐,比如新上线一个业务,没加索引,数据库CPU马上起来了,如果是Scalability 他拯救不了你,你只能看着CPU 打满数据库无响应,然后重启的结局,如果是Elasticity,则可以在他给你充足的处理时间中加上忘记的索引,并且在你添加索引后,从容的应对并享受后面的波澜不惊。

最后总结,人生苦短,数据库弹性虽然平时没有感觉,但关键时刻他能救你一命,并且时刻给你安全感虽然你感觉不到它。

临时工说:数据库扩展 和 弹性 什么是弹性   (部分内容粗俗,介意者误入)..._ci_04

注明:此篇与博主平时风格差异较大,部分内容请勿对号入座。

举报

相关推荐

0 条评论