分布式系统笔记(架构设计) | 青训营笔记

92 阅读3分钟

前言

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

以下是最近看分布式架构摘录的一些要点,书籍《从零开始学架构》

架构基础

  • 系统泛指由 群有关联的个体组成,根据某种规 运作 能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。
  • 子系统也是由一群有关联的个体所组成的系统,多半是更大系统中的一部分。
  • 软件模块(Module)是一套一致而互相紧密关联的软件组织。它分别包含了程序和数据结构两部分。
  • 软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
  • 软件框架(Software Framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
  • 软件架构指软件系统的顶层结构。
  • 同一软件系统从不同的角度进行分解,会得到不同的架构。
  • 架构设计的主要目的是为了解决软件系统复杂度带来的问题。
  • 主要的软件系统复杂度有高性能、高可用、可扩展、低成本、安全、规模几种。

架构设计原则

  • 架构设计原则1:合适原则,合适的架构优于业界领先的架构。
  • 真正优秀的架构都是在企业当前人力、条件、业务等各种约束下设计出来的,能够合理地将资源整合在一起并发挥出最大功效,并且能够快速落地。
  • 架构设计原则2:简单原则,简单的架构优于复杂的架构。
  • 软件领域的复杂性体现在两方面:结构的复杂性、逻辑的复杂性。
  • 架构设计原则3:演化原则,架构需要随着业务的发展而不断演化。
  • 对于建筑来说,永恒是主题:而对于软件来说,变化才是主题。
  • 软件架构设计类似于生物演化。

架构设计流程

  • 设计架构的时候,首先要分析出系统的复杂性。
  • 架构师根据自己对业务的理解,挑选合适的架构模式进行组合,再对组合后的方案进行修改和调整。
  • 新技术都是在现有技术的基础上发展起来的,现有技术又来源于先前的技术。
  • 备选方案的数量以3~5个备选方案为最佳。
  • 备选方案的差异要比较明显。
  • 备选方案的技术不要只局限于已经熟悉的技术。
  • 通过360度环评的方式来评估备选方案。
  • 按照质量属性的优先级来判断备选方案的优劣。
  • 架构师需要对技术的细节和原理有较深入的理解,避免成为“PPT架构师”。
  • 通过分步骤、分阶段、分系统等方式,尽量降低方案复杂度。
  • 采取设计团队的方式来进行设计,可以博采众长,汇集团队经验,减少思维和经验盲区。