我的架构设计方法论
不管是做架构设计,还是做代码等方面的设计,不同的工程师有不同的方法论。本文记录我自己到现在对各种业务需求、架构设计的方法论。
我认为,架构设计思维路线总共分四步。
第一步:确定边界,描述期望。
不管是大的由多个组件组合的集群,还是小的单一的轮子,第一件要做的事情就是确定边界。边界的重要性不言而明,没有清晰地边界架构就会越来越臃肿,最后面目全非。
描述期望,类似于wish 玩法,就是说这个架构是用来做什么的?我期望它是一个什么样的东西,比如要做什么,应用在那些场景。
比如做 tcp 协议设计,就可以简单的归结为要做全双工的,可靠的,网络层链接。
第二步:问题挑战
大致确定应用在什么场景下,要做什么问题之后,接下来要做的就是大致列出这个场景要做这件事情会有那些挑战?
依旧以 tcp 设计为例,面临的挑战大致如下:
全双工传输
需要按照顺序传输数据,且接受数据可能无法一次传输。
网络会有丢包情况
接收方可能接受能力有限。
网络状况未知,可能有阻塞。
等等
第三部:概念抽象
确定了要做什么,以及做这个事情过程中有可能有哪些挑战之后,下面就是解决问题。解决问题的方式通常是提出抽象的概念来解决问题。
还是以 tcp 为例:
为了解决上述问题,tcp 协议中抽象出了,分片传输,滑动窗口解决流量控制,拥塞策略,解决网络资源利用问题。三次握手四次挥手全双工通信,并且用 ack 等标识,完成分片传输和数据顺序安全。
通过上述 tcp 的例子可以看出,概念的抽象并不是和问题一一对应的,抽象概念是通过一些组件混合,解决问题。
第四部:概念的细化与完成
第三步的概念抽象是初版的抽象,类似于 wish,接下来是概念之间的边界,逻辑关系。共同来完成任务。
评论