12-架构设计流程:详细方案设计
在完成备选方案的设计和选择后,我们需要将备选方案进行细化,使得备选方案变成一个可以落地的方案。这就是我们要讲的详细方案的设计。
架构设计第4步:详细方案设计
简单的来说,详细方案设计就是将方案涉及到的关键细节给确认下来。详细方案里也有一些技术点跟备选方案是类似的,但是这里的是轻量级的,只需要根据这些技术点适用的场景选择就可以了。 例如,Nginx的负载均衡策略,简单的按照以下规则选择就可以。
轮询:(默认)
每个请求按照顺序逐一分配到后端服务器,后端服务器的请求基本一致,如果某台服务器挂掉,可以自动剔除。
加权轮询:
根据权重进行轮询,权重高的服务器分配到的请求多,权重低的服务器分配到的请求低。一般应用于服务器性能不一致的情况下,比如新老服务器。
ip_hash
每个请求根据IP的hash进行分配,这样每个访问都固定分配到一台服务器上,主要用于解决session问题。
fair 按后端服务器的响应时间进行分配,响应时间短的优先分配,能够最大化的平衡后端服务器的压力,适用于后端服务器性能不一致的情况,也可以防止某个后端服务器性能不好的情况下仍然接收一样多的请求而造成的雪崩效应。
url_hash
根据访问的url的hash进行分配,同一个URL定向到同一个服务器,主要用于可以缓存的情况。
详细设计方案阶段可以会遇到一种极端的情况,就是发现之前的备选方案不可行,一般发生这种情况的主要原因是备选方案设计时遗漏了某个关键技术点或某个关键质量属性。可以通过以下方式进行避免这种情况发生:
- 架构师不仅要进行备选方案设计和选型,还需要对备选方案的关键细节有较深的理解。
- 通过分步骤、分阶段、分系统的方式,尽量降低系统方案的复杂性。方案本身越复杂,就越有可能因为某个细节而推翻整个方案。适当降低复杂性,可以降低这种风险。
- 如果方案本身很复杂,就可以采用设计团队的方式进行设计,博采众长,防止只有1-2个架构师可能出现的思维盲点和经验盲区。
注:文章内容总结于极客时间13 | 架构设计流程:详细方案设计