架构设计之复杂度的6个来源

第67篇

极客时间《从0开始学架构》课程笔记。

架构设计的目的

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

  1. 架构不可能解决所有问题,必须要分析出所面对的一个或几个关键问题
  2. 架构是决策,是取舍,是根据所拥有的资源做出当前最合适的解决方案
  3. 需求驱动架构,架构要随着业务和技术变化而变化,需要持续调整

1、高性能

高性能带来的复杂度主要体现在两方面:

  • 单台计算机内部为了高性能带来的复杂度
  • 多台计算机集群为了高性能带来的复杂度

单机复杂度

  • 计算机内部复杂度最关键的地方就是操作系统,操作系统是软件系统的运行环境,操作系统的复杂度直接决定了软件系统的复杂度
  • 进程和线程是提升操作系统性能的关键技术,操作系统调度的最小单位是线程,进程是操作系统分配资源的最小单位
  • 多进程+多线程+多CPU并行,实现真正的多任务并行
  • SMP(Symmetric Multi-Processor,对称多处理器结构)是最常见的,目前流行的多核处理器方案

集群复杂度

  • 通过大量机器来提升性能,并不仅仅是增加机器这么简单,让多台机器配合起来达到高性能的目的,是一个复杂的任务
  • 常见的集群架构方式有两种:1、 任务分配:每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行;2、任务分解:把原来大一统但复杂的业务系统,拆分成小而简单但需要多个系统配合的业务系统。
  • 任务分配是在硬件层级进行平行扩展,任务分解是从软件层级进行分解细化
  • 从业务的角度来看,任务分解既不会减少功能,也不会减少代码量(事实上代码量可能还会增加,因为从代码内部调用改为通过服务器之间的接口调用)

2、高可用

高可用:系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。

  • 本质是通过『冗余』来实现高可用
  • 高性能增加机器目的在于“扩展”处理性能
  • 高可用增加机器目的在于“冗余”处理单元

计算高可用

  • 这里的“计算”指的是业务的逻辑处理。
  • 高可用架构与高性能架构复杂度类似,但侧重不同。
  • 高可用重点关注:任务分配器的选择、分配器与服务器之间的连接管理以及任务分配器的分配算法选择。

存储高可用

  • 存储与计算相比,有一个本质区别:将数据从一台机器搬到到另一台机器,需要经过线路进行传输
  • 除了物理上的传输速度限制,传输线路本身也存在可用性问题,传输线路可能中断、可能拥塞、可能异常(错包、丢包),并且传输线路的故障时间一般都特别长
  • 传输延迟或中断都会导致数据不一致问题,所以存储高可用的难点不在于如何备份数据,而在于如何减少或者规避数据不一致对业务造成的影响

高可用状态决策

  • 计算高可用和存储高可用的基础都是“状态决策”,即系统需要能够判断当前的状态是正常还是异常,如果出现了异常就要采取行动来保证高可用
  • 本质矛盾:通过冗余来实现的高可用系统,状态决策本质上就不可能做到完全正确
  • 常见决策方式:独裁式、协商式、民主式,分别对应3个难点,独裁式意味存在单点,协商式怕状态交换出问题,而民主式决策存在『脑裂』风险。
  • 状态决策不可能做到任何场景下都没有问题

3、可扩展性

可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。

  • 具备良好可扩展性系统的两个基本条件:正确预测变化、完美封装变化。
  • 预测变化的复杂性在于不能每个设计点都考虑可扩展性,不能完全不考虑可扩展性,且所有的预测都存在出错的可能性。
  • 应对变化的方案选择也是难点,应对变化的常见方案有两种,第一种是将“变化”封装在一个“变化层”,将不变的部分封装在一个独立的“稳定层”。第二种方案是提炼出一个“抽象层”和一个“实现层”。

4、低成本

  • 低成本与『高性能』、『高可用』相反,需要减少服务器的数量才能达成低成本目标
  • 低成本很多时候不会是架构设计的首要目标,而是架构设计的附加约束
  • 低成本的主要复杂度体现在,往往只有“创新”才能达到低成本目标。“创新”既包括开创一个全新的技术领域,也包括引入新技术或自己创造新技术。
  • 引入新技术的主要复杂度在于需要去熟悉新技术,并且将新技术与已有技术结合起来
  • 创造新技术的主要复杂度在于需要自己去创造全新的理念和技术,并且新技术跟旧技术相比,需要有质的飞跃

5、安全

  • 安全分两类:功能安全和架构安全
  • 功能安全就是『防小偷』,架构安全『防强盗』
  • 功能安全与具体编码相关,与架构关系不大
  • 功能安全是一个逐步完善的过程,而且往往都是在问题出现后才能有针对性的提出解决方案
  • 架构安全主要依靠防火墙,通过隔离网络,划分不同网络区域,制定访问控制策略来控制不同信任程度区域间传送的数据流
  • 互联网系统的架构安全目前并没有太好的设计手段来实现,更多地是依靠运营商或者云服务商强大的带宽和流量清洗的能力

6、规模

  • 企业级系统的复杂因为业务复杂、功能多、逻辑分支多,加上时间越久,叠加功能越多,系统变成黑盒系统,于是复杂度很高
  • 规模带来复杂度的主要原因:量变引起质变
  • 功能越来越多,导致系统复杂度指数级上升,系统的复杂度 = 功能数量 + 功能之间的连接数量
  • 数据越来越多,系统复杂度发生质变,关系数据库存储数据时,当单表数据量太大就会引起创建索引慢、数据库备份耗时很长等情况
  • 数据量太大的解决方案是拆表,但拆分多表的过程也会引入更多复杂性

总结

架构设计没有最好,只有最合适。不同行业不同业务场景下,架构设计的侧重点各有不同,即复杂度也需要分优先级来考虑,不光在系统整体分优先级,在系统内部也各有偏重,同一个业务下各系统的复杂度也不一样。

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

推荐阅读更多精彩内容