当前位置:首页 > 科技  > 软件

架构设计的简单原则,你学会了吗?

来源: 责编: 时间:2024-09-10 09:47:06 236观看
导读简单原则宣言是:“简单优于复杂”。图片由于软件架构与建筑架构在表面上存在相似性,我们往往会下意识地将对建筑的审美观念迁移至软件架构之上。对于我们亲自构建的软件架构,我们期望它如著名建筑一般宏伟、精美、富有艺

简单原则宣言是:“简单优于复杂”。0EJ28资讯网——每日最新资讯28at.com

图片图片0EJ28资讯网——每日最新资讯28at.com

由于软件架构与建筑架构在表面上存在相似性,我们往往会下意识地将对建筑的审美观念迁移至软件架构之上。对于我们亲自构建的软件架构,我们期望它如著名建筑一般宏伟、精美、富有艺术感且豪华…… 总之,绝不能显得寒酸或简单。0EJ28资讯网——每日最新资讯28at.com

团队压力有时也会在有意无意间促使我们走向复杂的方向。因为在大多数人评价一个方案水平高低时,复杂性是一项重要的参考指标。例如,设计一个主备方案,若采用心跳机制来实现,或许大家会觉得这太过简单。然而,若引入 ZooKeeper 来做主备决策,很多人可能会认为这个方案更加 “高大上”。毕竟 ZooKeeper 运用的是 ZAB 协议,而 ZAB 协议本身就十分复杂。实际上,真正理解 ZAB 协议的人少之又少,但这并不妨碍我们都知晓 ZAB 协议很优秀。0EJ28资讯网——每日最新资讯28at.com

软件领域的复杂性体现在两个方面

结构复杂的系统通常具备两个特点:一是组成系统的组件数量众多;二是这些组件之间的关系极为复杂。0EJ28资讯网——每日最新资讯28at.com

然而,结构上的复杂性存在第一个问题。组件越多,其中某个组件出现故障进而导致系统故障的可能性就越大。这个概率是可以计算出来的,假设组件的故障率为 10%(即有 10% 的时间不可用),那么由 3 个组件组成的系统可用性为(1 - 10%)×(1 - 10%)×(1 - 10%)=72.9%,而由 5 个组件组成的系统可用性为(1 - 10%)×(1 - 10%)×(1 - 10%)×(1 - 10%)×(1 - 10%)=59%,两者的可用性相差 13%。0EJ28资讯网——每日最新资讯28at.com

结构上的复杂性存在第二个问题。某个组件的改动会影响与之关联的所有组件,而这些被影响的组件又会继续递归地影响更多的组件。这一问题会影响整个系统的开发效率,因为一旦变更涉及外部系统,就需要协调各方共同进行方案评估、资源协调以及上线配合。0EJ28资讯网——每日最新资讯28at.com

结构上的复杂性存在第三个问题。在复杂系统中定位问题总是比在简单系统中更加困难。首先,由于组件众多,每个组件都有出现问题的嫌疑,所以需要逐一排查;其次,组件间关系复杂,表现出故障的组件未必是真正问题的根源。0EJ28资讯网——每日最新资讯28at.com

第二个方面体现在逻辑的复杂性

当我们意识到结构的复杂性后,第一反应或许是 “降低组件数量”,毕竟组件数量越少,系统结构就越简单。而最简单的结构无疑是整个系统仅有一个组件,即系统本身,所有功能和逻辑都在这一个组件中实现。0EJ28资讯网——每日最新资讯28at.com

然而,不幸的是,这样做并不可行。原因在于除了结构的复杂性之外,还存在逻辑的复杂性。如果某个组件的逻辑过于复杂,同样会带来各种问题。0EJ28资讯网——每日最新资讯28at.com

逻辑复杂的组件,有一个典型特征就是单个组件承担了过多的功能。以电商业务为例,常见的功能包括商品管理、商品搜索、商品展示、订单管理、用户管理、支付、发货、客服等。如果把这些功能全部在一个组件中实现,那就是典型的逻辑复杂性。0EJ28资讯网——每日最新资讯28at.com

假设现在淘宝将这些功能全部在单一的组件中实现,我们可以想象一下这个恐怖的场景:系统会非常庞大,可能有上百万、上千万的代码规模,“clone” 一次代码要 30 分钟。几十、上百人维护这一套代码,某个 “菜鸟” 不小心改了一行代码,就可能导致整站崩溃。需求如雪片般飞来,为了应对,会开几十个代码分支,然后各种分支合并、各种分支覆盖。产品、研发、测试、项目管理不停地开会讨论版本计划,协调资源,解决冲突。版本太多,每天都要上线几十个版本,系统每隔 1 个小时就要重启一次。线上运行出现故障,几十个人扑上去定位和处理,一间小黑屋都装不下所有人,整个办公区都会闹翻天。0EJ28资讯网——每日最新资讯28at.com

总之,谁都无法忍受这样的场景。功能复杂的组件,另一个典型特征就是采用了复杂的算法。复杂算法导致的问题主要是难以理解,进而难以实现、难以修改,并且出了问题难以快速解决。0EJ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-112723-0.html架构设计的简单原则,你学会了吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 盘点分页查询中遇到的坑!

下一篇: Go1.23 新特性:争议最大的 iter 迭代器,可遍历万物!

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
Top