分布式 - 系统构建原则

什么是构建一个可维护和可扩展的系统的意义?

在早期,一个系统的形态,只是满足用户和服务器资源之间的通道,唯一要扩展和维护的是系统后面的资源,保证资源的可用和够用,而系统本身的压力并不大。

系统设计跟我们生活中大多数事情一样,都需要花时间提前规划,能够让我们的服务长时间在线。所以,我们了解和总结一些大型系统背后的思考和权衡,能够帮助我们在系统早期做出一些明智和靠谱的决策。

如今,开源组件已经成为构建一些企业系统的基石,伴随着行业的发展,最佳实践和围绕这些系统架构的指导原则也逐渐显现出来了,在什么时候该用什么样的技术,需要考虑到哪些方面,各路牛人早有撰文总结。

本文简单回顾一下,我们在设计一些分布式系统的时候需要考虑的一些关键因素,我们称之为 分布式系统设计原则

一,分布式系统的设计原则

我们将这些在构建系统需要考虑的因素称之为分布式架构设计原则,如下图所示,有六个部分,右边是我们设计系统要达到的基本要求,包括可用、可靠以及性能,这也是 一个可维护和可扩展系统最大的意义,而左边是系统设计和开发期间要考虑的三个部分,包括扩展性、维护性和成本控制。

我把原则分为俩个大的方面,目标原则实践原则

先来看一下目标原则,

站在用户和公司的角度,要求我们设计的系统都必须要满足以下几个原则,特别是互联网性质的系统,这三个原则都是非常重要的。

  1. 可用性,系统的正常在线可用时间,对许多公司的产品声誉来说是绝对至关重要的指标,例如一些大型的零售商网站,几分钟的不可用会导致巨大的损失,长此以往,客户也会流失殆尽。
    因此,设计这些系统能够长期稳定在线,并有系统一定的容错能力是当代企业和科技公司必备的基本能力。做到高可用,要在分布式系统中要求我们深思熟虑的对一些关键组件进行冗余设计,发生故障时,能够即时恢复,或者优雅降级(降级通常不解决问题,优化用户体验的一种妥协的做法);
  2. 可靠性,系统的可靠性,能够保证数据分区后,数据的一致性和持久性,相同的请求同一时间返回一致的数据,数据更新以后用户能够获取最新的数据,如果是最终一致,或延迟一致要保证数据的持久性;
  3. 性能,系统性能,由于用户和流量的不断增长,逐渐成为很多公司关注的另一个焦点,因为虽然做到可用,但系统响应速度也会直接影响用户的使用和满意度,如果是网站的话,也会影响搜索引擎的排名,最终影响用户的粘度和收益。
    所以,优化系统的响应速度,降低延迟,提高吞吐量,也是非常关键的。

满足以上目标原则,我们要考虑系统的实现,如何来满足以上的目标原则,我把他称为 实现原则,能够在不同的阶段,让系统都能够适应需求的变化,并在提高成本的情况下,持续满足以上几个目标原则。

来看一下实现原则:

  1. 扩展性,当今但凡谈到分布式系统,扩展性是首要考虑的一个方面,Google在这方面表现的尤为激进,可以让系统做到无限扩展,例如Spanner,用空间换效率,用规模覆盖算法的次优选。所以,扩展系统的各个部分,几乎是达到可用性、可靠性和性能要求的主要手段。
    扩展性涉及系统的方方面面,通常是俩个纬度,scale up 和 scale out,当然,在《The Art Of Scalability》中,提到的Scale Cube,是从三个不同纬度来扩展系统,也是扩展的一种方法,稍后单开一篇介绍,这里就不展开了;


    image.png
  2. 维护性,正所谓,一个系统配套好的运维工具,能够千方百计的弥补和设法绕过系统实现上的缺陷,使得系统整体可用性比较高,相反,会让系统的任何的问题都会毫无掩盖的暴露给用户,没有任何预警信息,同时也会增加发现问题和排查问题的成本。
    因此,在设计和实现一个系统的时候,如何做到容易维护是另一个重要的考量,几乎跟扩展性同样重要,当问题发生,我们如何及时的诊断和了解问题原因,甚至能够及时的做出行动,影响系统,控制损失,降低故障级别;
    (本人多次在这方面吃亏,经历了血的教训,开始把运维工具与功能开发提到同样的重要级别,确保问题能够及时发现,甚至提前预警)
  3. 成本控制,成本当然也是一个重要的方面,包括开发、维护、培训和硬件等成本,系统开发完成上线之后,硬件的持续投入会让成本不断增加,要让成本的投入看到效能的成倍增长,同时,根据业务量,伸缩成本的投入,按需开资,不过度设计和过度冗余,导致资源闲置,浪费。

二,小结:

这些原则作为在分布式系统架构设计的基本决策的原则,并不是绝对真理,在实践当中,有时候会发生冲突和矛盾,需要做出一些牺牲和平衡,例如,在实践扩展性的时候,会增加维护和开销成本,甚至会影响可靠性。

不管怎么说,在设计分布式系统的时候,关注这些原则是非常重要的,即使有时候需要做出一些牺牲和平衡,但,这就是技术,这也是生活。

三,参考:

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

推荐阅读更多精彩内容