系统架构师如何做好系统设计
其他
2020-08-11 15:00:25
阅读次数: 0
系统设计基本概念
- 熟悉系统设计的思考框架,知道做系统设计的套路,系统设计不是简单的上来就画画框什么的,必须按照一定的套路才能更好的进行系统设计
- 拓宽知识面,系统设计中非常重要的是考虑的全面性,以更好的进行权衡取舍
系统设计流程
- 系统设计的目的 -> 系统设计的目标 -> 围绕目标的核心设计 -> 围绕核心设计形成的设计原则 -> 各子系统以及模块的详细设计
系统设计的目的
系统设计的目标
- 围绕系统设计的目的,形成一些可衡量的目标,从而确保最终系统实现和最初的目的不要出现太大的偏差
围绕目标的核心设计
- 通过设计实现上面的目标,这个环节中技术的专业,视野,全面的考虑,权衡取舍的主观原则,解题的思路,是形成最后的核心设计的关键
- 在核心设计这个阶段中,会产生一些新的衡量设计最后实现情况的目标,这些也要增加到系统设计中,确保最后的实现和设计的偏差度是可视的
围绕核心设计形成的设计原则
- 有了核心设计后,可以真正的形成一些设计原则,确保后面的子系统以及模块的详细数据能够遵循,并在详细设计中体现出来,这样才能保证整个大的系统设计的一致性
各子系统以及模块的详细设计
系统设计实践
系统建设的目的
- 当需要做系统设计时,意味着需要建设一套新系统,或者对比原有的系统进行比较大的架构的改造升级,这一定是基于什么原因去做的
- 分析好系统建设的目的:
- 一方面是为了避免出发点有问题,系统建设的目的应该充分反映出解决业务层面面临的挑战. 或者系统用户层面面临的问题,而不是出于个人的需求
- 一方面是为了确保在后续的系统设计中能保证目的的达成
- 首先要思考清楚为什么要做某件事,并且能讲清楚原因.动机非常重要,做架构的时候要注重业务化而不是技术化
- 做系统设计前,一定要先对于系统建设的目的分析清楚,确保系统建设有价值和意义,同时确保后面的整个系统设计是能让目的达成的
系统建设的目标
- 将目的的描述转换成为可衡量的目标的描述
- 可衡量的目标是确保最后实现的系统达成了系统建设的目的, 防止设计出来的系统和最后落地的系统不一致
- 清晰可衡量的系统建设的目标:
- 确保了系统设计过程中可以针对性的围绕目标来做,避免偏题
- 可以用来做一个跟踪系统建设效果的系统
- 只有有了跟踪系统建设目标是否达标的系统,才能真正确保系统建设完毕后和初心保持一致.这个跟踪效果的体系一定要在系统建设的时候同步就做好
- 从目的到目标,理论上并不复杂,但很容易漏掉,导致后面的系统设计环节出现问题.关键是要形成可衡量的目标,以及相应的跟踪目标达成情况的系统
达成目标的核心问题
- 如果要达成系统设计的可衡量的目标,到底面临什么核心问题,只有明白了面临什么核心问题,才能更加明确的进行系统设计来解决这些问题
- 从可衡量的目标映射到技术层面要去解决的核心问题
解决核心问题的设计
- 系统设计是全方位的,要考虑到的不仅仅是怎么实现,还要考虑到怎么用,运行,维护阶段又是怎么样的
- 对整个系统的处理过程要非常清楚,如果要用到开源的框架,要对开源框架的代码逻辑非常熟悉,做到技术的可控性
- 解决核心问题的设计,在技术选型上深厚的技术功底,在整个设计方案上知识的广度,考虑的全面性,包括开发态,部署态,运行态和运维态的要求都是很高的
- 在相应的技术领域要有足够的视野,一定要知道这个领域的工程界,学术界的技术情况.这样对在结合目的,目标以及一些约束条件下做出更合理的技术选型是非常重要的
- 要学习如何扩充技术视野
- 在解决问题的核心设计上,要根据各种约束来做一些方案的权衡选择
- 异地多活设计上所面临的选择:
- 流量或数据拆分的规则到底按什么好? 买家,卖家,商品
- 分流的规则和数据库分库分表的规则的关系: 松耦合还是强绑定
- 数据同步策略的选择: 部分还是全量
- 数据一致性的保障在哪些层面做?CAP
- 部署的选择: 两地还是三地以及地域分布的选择
- 落地的时间
架构师能力总结
- 对业务所面临的挑战的理解,从业务挑战到技术挑战映射的能力,也就是技术抽象的能力
- 知识储备以及考虑的全面性,包括开发,部署,运行,维护态
- 技术选型的能力,极厚的技术功底,开阔的技术视野
- 在各种约束条件下权衡选择的能力和原则
- 长期的实战和技术积累
转载自blog.csdn.net/JewaveOxford/article/details/107455553