写点什么

架构实战营四期 - 毕业总结

作者:木几丶
  • 2022 年 3 月 27 日
  • 本文字数:1951 字

    阅读完需:约 6 分钟

核心思想提炼

1. 何为架构


新视角:4R 架构

Rank,Role,Relation,Rule

2. 如何画架构图

业务架构,客户端/前端架构,系统/后端架构,应用架构,部署架构

架构是分层级的,故架构图也分层级,不同的层级上,可以提供不同的架构图

如果内容的维度太多,无法在一张架构图上有效反应出来,可以提供两张架构图

诸多架构图中,最重要的是业务架构图和系统架构图,而业务架构又是其他架构的基础和对内或对外沟通的首选


注:

  1. 可以额外关注一下时序图

  2. 通常架构图上反应的是静态信息,业务规则较难体现,这时可以用时序图作为补充

3. 如何做架构设计

方法论:面向复杂度的架构设计

设计原则:合适、简单、演化

先做复杂度分析,然后遵守设计原则设计多套备选架构,分析优缺点后取舍得到最终的架构

4. 架构设计实战依据

(1)可扩展架构设计

可扩展设计的起点一定是复杂度分析,复杂度包括业务复杂度和质量复杂度,不同类型的复杂度,会带来技术和业务上的不同侧重点

类型:架构可扩展、应用可扩展和代码可扩展

手段:拆分、封装

拆分

可以按 SOLID 原则作为指导,目标是高内聚低耦合,这在架构、应用和代码层面均适用

拆分给复杂度带来的影响是,产生了外部复杂度和内部复杂度

拆分不会降低复杂度,只是转移复杂度,故实践中的拆分粒度本质上是对内外部复杂度对权衡和平衡,可以把先少后多作为原则应用于实践中

封装

本质上对变化的预测和封装,这在代码层面,面向对象的编程思想已经提供了丰富的理论和实践经验,拿来即用,而且这样理论和经验通用适用于架构层面,可以借鉴

(2)高性能架构设计

关键点:

  1. 核心焦点是分工和调度,单机与集群均适用

  2. 分工包括工作分配和工作分解;分配,即让更多的人来“搬砖”;分解,即把一个工作分解为多项工作的协作,即“流水线作业”,提高单点效率和整体效率

  3. 有了分工,需辅以合适的管理和调度,才能有效发挥分工的效能

  4. IO 模型、缓存设计和存储设计,也是高性能架构的关键因素,通常选取当前有效的成熟套路即可

高性能架构设计可用从单机和集群两个方面分别设计。

单机高性能

计算:

  1. 进程模型,用好多线程,用有效的并发来提高计算性能

  2. 网络模型,对高并发场景,当前最成熟有效的方式是,采用 reactor 模式,即多路复用 IO

  3. 缓存模型,本地缓存或独立缓存(redis)

存储:

  1. 读多写少:B+ 树

  2. 写多读少:LSM

集群高性能

  1. 主要考虑任务分配和任务分解

  2. 任务分配,主要是架构各层级上,负载均衡的实现

  3. 任务分解,可重点研究当前微服务架构中,各微服务间的通信交互套路

(3)高可用架构设计

关键点:

  1. 本质是冗余和备份,冗余必然是集群

  2. 高性能架构中的集群架构设计,一定程度上与高可用设计重合,但二者的侧重点不同

  3. 可在高性能集群架构设计的基础上,进一步补充高可用维度的设计


存储高可用:

  1. 数据复制,包括复制命令、复制数据和复制文件几种方式

  2. 决策模式,包括独裁式,协商式和民主式,其中,民主式的实现,要基于民主选举算法,独裁式为保证决策者的高可用,可能需要把决策者本身设计为集群民主式,协商式,常用于数据一致性弱的内部系统或网络设备


计算高可用:

与集群的计算高性能基本一致

(4)其他设计维度

完成初步的可扩展、高性能和高可用架构设计后,从低成本、安全性、可测试性/可维护性/可观测性等维度,对架构设计做优化和微调

5. 架构设计过程

(1)前期


开展需求分析,主要完成以下内容:

  1. 分析明确业务需求

  2. 干系人分析,对业务需求做 double check,进一步明确需求的范围、合理性、优先级等因素

  3. 复杂度分析,为架构设计做铺垫

成果:业务架构

(2)中期

主要工作如下:

  1. 设计备选架构方案,准守“合适、简单、演化”原则,采用 4R 架构设计方法论

  2. 评估备份架构方案

  3. 确定最终架构方案

(3)后期

后期的工作核心为,推动架构方案落地,形成相关的文档和经验积累。

架构方案通常比较粗,只能作为系统开发实现的参考依据,但并为涵盖具体实现方案的细节,因此后期需要基于架构方案,补充实施方案,才能让架构真正落地。

架构方案实施工程中,难免与领导、干系人汇报(备选)架构方案,与下一级架构师和开发团队沟通系统实现的细节和开发方案。


故,主要工作汇总如下:

  1. 详细架构设计

  2. 架构文档编写

  3. 沟通

  4. 领导、干系人

  5. 下一级架构师、开发团队

实战应用技巧提炼

1. 高性能高可用存储架构设计

分类:

  1. 数据库存储架构

  2. 复制架构

  3. 分片架构

  4. 分区架构

存储架构设计方法:

  1. 估算性能需求

  2. 选择存储系统

  3. 设计存储方案

2. 高性能高可用计算架构设计

  1. 多级缓存架构

  2. 负载均衡架构

3. 微服务架构设计

  1. 一种可扩展的架构设计

  2. 落地前先想清楚其陷阱与挑战

  3. 微服务基础设施必不可少,其选择及基础设施的优先级很重要

  4. 微服务拆分要合理,可以借鉴设计模式里的思想

4. 异地多活架构设计

  1. 基础是高可用架构设计

  2. 灾备架构设计

  3. 异地多活架构设计

5. 中间件系统设计

中间件要贴合业务,结合业务发展的团队技术背景,满足合适、简单、演进的设计原则,若已有的轮子不能很好的满足这些要求,不妨重造轮子。

用户头像

木几丶

关注

还未添加个人签名 2021.01.20 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营四期-毕业总结_「架构实战营」_木几丶_InfoQ写作平台