39

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

 5 years ago
source link: https://www.infoq.cn/article/l3rPmC21iCesyj_0BiYl?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

谈到架构设计,相信每个技术人员都耳熟能详。我总结了三个架构设计相关的特性:

  • 架构设计的思维和程序设计的思维差异很大。
  • 架构设计没有体系化的培训和训练机制。
  • 程序员对架构设计的理解存在很多误区。

所以,虽然每个程序员心中都有一个成为架构师的梦想,梦想是美好的,但道路是曲折的。

我在十余年的技术生涯中,先后参与了包括社交、电商、游戏、中间件、内部运营系统等领域的架构设计,不断学习、思考、实践、总结、改进、交流,逐步形成了自己的 一套架构设计方法论 。《从 0 开始学架构》专栏涵盖了我的整套架构设计方法论和架构实践,主要包括以下内容:

NVrIzmr.png!web

开始学习之前,我们先来分析一下架构设计的目的是什么?通过回顾架构产生的历史背景和原因,我们可以基本推导出答案: 架构设计的主要目的是为了解决软件系统复杂度带来的问题 。那么,架构设计的复杂度来源是什么呢?我总结了 6 个复杂度来源:

E3M3mu3.png!web

一、高性能

对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。软件系统中高性能带来的复杂度主要体现在两方面,一方面是 单台计算机内部为了高性能带来的复杂度 ;另一方面是 多台计算机集群为了高性能带来的复杂度

FN3Uj26.png!web

二、高可用

系统的高可用方案五花八门,但万变不离其宗,本质上都是通过“冗余”来实现高可用。它在形式上和高性能一样,都是通过增加更多机器来达到目的,但本质上是有根本区别的: 高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元 。通过冗余增强了可用性,但同时也带来了复杂性,我会在专栏中根据不同的应用场景逐一分析。

F7Zj22u.png!web

部分解决方案:

复杂度来源:高可用

三、可扩展性

由于软件系统固有的多变性,新的需求总会不断提出来,因此可扩展性显得尤其重要,几乎所有的技术人员对于可扩展性都特别重视。设计具备良好可扩展性的系统,有两个基本条件:正确预测变化、完美封装变化。但要达成这两个条件,本身也是一件复杂的事情。在具体代码中使用哪些可扩展的技术?最终的效果如何?我将在专栏中为你具体分析。

VNZBJrQ.png!web

部分解决方案:

复杂度来源:可扩展性

四、低成本、安全、规模

我将在专栏中,为你分析低成本给架构设计带来的主要复杂度,体现在引入新技术或创造新技术,讨论从功能安全和架构安全引入的复杂度,以及规模带来复杂度的主要原因是“量变引起质变”。

2ayeqiz.png!web

学习了 6 大复杂度来源后,你可以结合所在的业务,分析一下主要的复杂度是这其中的哪些部分?是否还有其他复杂度原因?欢迎你加入专栏的学习,和我一起讨论。相信经过深度的思考,你对技术的理解会更加深刻。

专栏简介:

每个程序员都有成为架构师的梦想,程序员成长也绕不开架构设计。

《从 0 开始学架构》 专栏作者是资深技术专家李运华,目前带领多个研发团队,承担架构设计、架构重构、技术团队管理、技术培训等职责,曾就职于华为和 UCWeb,写过《面向对象葵花宝典》一书。

在专栏中,作者从架构基础、三大架构模式和实战的角度分享一整套架构设计方法论。照着做,你也能成为架构师。

专栏共 50 期,已更新完毕。目前有超过 3 万人加入学习,互动留言字数超过 20 万,邀请你加入学习!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK