大话系统架构 - 伸缩性

前言

在单机应用时代,换句话说,如果你的应用就部署一个实例,并没有伸缩性的概念。伸缩性是针对分布式系统的场景下,才有意义。而且现在的大型分布式系统,对于伸缩性是非常重视的,因为现在的系统运维都希望机器或容器能够动态扩容。比如,淘宝的双11、京东的618等大型促销活动,其流量和压力都是平时的很多倍,但是总不能要求平时就用这么多的部署资源,这会很浪费,所以动态扩容就显得很有必要了。老规矩,先来定义一下伸缩性。

定义

系统的性能能够随着应用实例数的加减获得相匹配的加减的能力。

性能

伸缩性重点描述的是系统性能的弹性,不是其他的特性,比如系统功能的弹性,比如说很方便增加一个新功能。实际上从功能角度描述系统弹性是架构决策中的另外一个特性 - 扩展性,我们博文会讨论到。

应用实例数

注:这个地方的应用实例不仅仅是表示业务应用的实例,也表示数据库实例,是一个比较宽泛的叫法。

当我们要增加一个大型分布式系统的整体性能的时候,我们一般是通过增加一台物理机、虚拟机或者容器(Docker),然后在其上部署一个或多个应用实例。所以伸缩性实际上从上层来看,说的是应用实例的增减;从下层来看,说的是部署资源的增减。

可能有些同学会有点疑问,难道增加一个实例不就自然会增加系统的性能吗?好像有点道理,但是不尽然。我们来看一个具体的实例,假设我们选择需要增加一个应用实例,首先我们需要确确认的是,分布式应用集群可以随便的增加实例数,如果这个业务应用无状态,那么这很容易,不会影响路由策略;如果这个业务有状态,那么就不能很容易的增减了,这个时候可能会影响路由策略,甚至会导致数据迁移。

我们在上例中说的无状态和有状态,实际上简单来说就是一个应用实例是否能够被另一个应用实例随意替换,而不影响业务逻辑并且无须额外付代价。如果可以,那我们称之为无状态;反之,称为有状态。比如一个路由代理就是无状态的,再比如一个自身管理Session的Web应用就是有状态的。所以,一般情况下,我们设计应用的目标就是使其无状态,这样能增强其伸缩性。

相匹配的

如果集群中有N个应用实例,当增加一个应用实例时,理想情况下,其性能应该是要增加1/N的,但有些时候不一定是一个线性的关系。

实例一:自管理Session的Web应用

一个Web应用如果自己管理Session,那么意味着他是有状态的,这个时候要提升集群性能,不能简单的增加一个实例了事。比如:

一个用户登录到A实例,这个时候其Session保存在A机器;

后续又增加了一个H实例;

这个用户短期内再次登录时,必须路由到A实例,不能路由到其他机器去,否则用户体验不好;

一般这个时候,我们通过特殊的路由策略来解决;或者通过集中化Session服务来处理。

因此,这样的自管理Session的Web应用其伸缩性是不好的。那么我们一般就是将有状态的部分分离出去,比如上边提到的集中化Session服务。但是,其实这样只是把伸缩性的难度从Web应用转移到了集中化Session服务,因为该服务本身为了满足高可用,也是分布式部署,也能可能会存在性能的伸缩要求。但这样的转移是有意义的,因为我们的业务应用数量远远大于这种专业服务(Session服务),其对伸缩性的要求更加强烈。

对于这种专业服务,像集中Session服务、数据层存储(MySQL)、服务总线等等这种,其存在的一个重要理由就是专业的事由专业的人来做,这样最大程度降低了业务应用的复杂性,提升了业务应用的某些特性,比如集中Session服务提升业务应用的伸缩性。至于其自身的伸缩性,一般是通过复杂的内部通信、路由策略以及数据冗余等等技术来实现的。在此,不详细展开,后续博文以后可能会有所涉及。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容