美文网首页
架构设计流程:识别复杂度

架构设计流程:识别复杂度

作者: 空谷幽心 | 来源:发表于2018-08-05 12:39 被阅读19次

笔记

  • 今天先来看架构设计流程第 1 步:识别复杂度。

  • 只有正确分析出了系统的复杂性,后续的架构设计方案才不会偏离方向。

  • 架构的复杂度主要来源于“高性能”“高可用”“可扩展”等几个方面,但架构师在具体判断复杂性的时候,不能生搬硬套,认为任何时候架构都必须同时满足这三方面的要求。实际上大部分场景下,复杂度只是其中的某一个,少数情况下包含其中两个,如果真的出现同时需要解决三个或者三个以上的复杂度,要么说明这个系统之前设计的有问题,要么可能就是架构师的判断出现了失误,即使真的认为要同时满足这三方面的要求,也必须要进行优先级排序

  • 一个个来解决问题,不要幻想一次架构重构解决所有问题。正确的做法是将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的最主要的复杂度问题。

  • 对于同一个复杂度问题,软件系统的方案可以有多个,总是可以挑出综合来看性价比最高的方案。

  • 有经验的架构师可能一看需求就知道复杂度大概在哪里;如果经验不足,那只能采取“排查法”,从不同的角度逐一进行分析。

  • 对于架构师来说,关注的不是一天的数据,而是 1 秒的数据,即 TPS 和 QPS。

  • 系统设计需要考虑一定的性能余量。由于现在的基数较低,为了预留一定的系统容量应对后续业务的发展。注意,这里的设计目标设定为峰值的 4 倍是根据业务发展速度来预估的,不是固定为 4 倍,不同的业务可以是 2 倍,也可以是 8 倍,但一般不要设定在 10 倍以上,更不要一上来就按照 100 倍预估

理解与思考

  • 高性能、高可用和可扩展,这几项指标,只能兼顾,不能求全。可以面面俱到,但要做到样样优秀就有点过于理想化和脱离实际了,需要审视方法的可落地性了。

  • 使用排查法,依次从高性能、高可用、可扩展、安全、低成本及其他几个方面考察系统的复杂度来源。

课后思考题

尝试用排查法分析一下你参与过或者研究过的系统的复杂度,然后与你以前的理解对比一下,看看是否有什么新发现?
当前参与的项目的复杂度分析:

  1. 高性能。需要处理极多的网元日志数据,时间和资源限制较严格。所以需要高性能的数据处理和分析能力。
  2. 高可用。只要在规定的时间内跑出数据即可,中间任务失败了可以重跑。
  3. 可扩展。要求不高。一般都是算法变更和新业务的开发。

相关文章

  • 架构设计流程

    第69篇 极客时间《从0开始学架构》课程笔记。 架构设计的流程(步骤)包括4步,首先识别复杂度,其次设计多个备选方...

  • 架构设计流程:识别复杂度

    笔记 今天先来看架构设计流程第 1 步:识别复杂度。 只有正确分析出了系统的复杂性,后续的架构设计方案才不会偏离方...

  • 11 | 架构设计流程:设计备选方案

    上一期我讲了架构设计流程第 1 步识别复杂度,确定了系统面临的主要复杂度问题后,方案设计就有了明确的目标,我们就可...

  • 10 | 架构设计流程:识别复杂度

    从今天开始,我将分 4 期,结合复杂度来源和架构设计原则,通过一个模拟的设计场景“前浪微博”,和你一起看看在实践中...

  • 【软件架构篇】复杂度来源

    架构设计的目的就是解决系统的复杂度。架构师首先需要识别出系统的复杂度,然后再针对性地给出备选方案,选择备选方案,进...

  • 架构设计步骤

    1:识别复杂度 2:技术选型和设计多套方案 3:评估和方案选择 4:架构详细设计(将方案涉及的关键技术细节给确定下来)

  • App通用架构设计

    App通用架构设计 App架构设计的目的 应对App功能庞大,复杂度快速上升的趋势,降低App软件开发的复杂度 提...

  • 从零开始学架构

    第一章 架构基础 1.架构设计的复杂度来源 1.1 高性能 1.1.1单机复杂度 1.1.2集群复杂度 集群复杂度...

  • 享知行·思考:从架构设计流程学习方法论,让手中多一把锤子

    最近在看《从零开始学架构》,深入浅出通俗易懂,值得一看。作者将架构设计分为4个步骤,第一步:有的放矢-识别复杂度,...

  • 架构分层

    架构设计的目的是解决软件系统复杂度带来的问题。分层架构设计只不过是架构设计中的一种设计思想和方法论 认识分层架构 ...

网友评论

      本文标题:架构设计流程:识别复杂度

      本文链接:https://www.haomeiwen.com/subject/nmqbvftx.html