架构篇12:架构设计流程-评估和选择备选方案

news2024/10/4 22:48:13

文章目录

    • 架构设计第 3 步:评估和选择备选方案
    • 评估和选择备选方案实战
    • 小结

上一篇我们聊了设计备选方案,在完成备选方案设计后,如何挑选出最终的方案也是一个很大的挑战,主要原因有:

  • 每个方案都是可行的,如果方案不可行就根本不应该作为备选方案。
  • 没有哪个方案是完美的。例如,A 方案有性能的缺点,B 方案有成本的缺点,C 方案有新技术不成熟的风险。
  • 评价标准主观性比较强,比如设计师说 A 方案比 B 方案复杂,但另外一个设计师可能会认为差不多,因为比较难将“复杂”一词进行量化。因此,方案评审的时候我们经常会遇到几个设计师针对某个方案或者某个技术点争论得面红耳赤。

​ 正因为选择备选方案存在这些困难,所以实践中很多设计师或者架构师就采取了下面几种指导思想:

  • 最简派
    设计师挑选一个看起来最简单的方案。
    例如,我们要做全文搜索功能:

方案 1: 基于 MySQL

方案 2: 基于 Elasticsearch

​ MySQL 的查询功能比较简单,而 Elasticsearch 的倒排索引设计要复杂得多,写入数据到 Elasticsearch,要设计 Elasticsearch 的索引,要设计 Elasticsearch 的分布式……全套下来复杂度很高,所以干脆就挑选 MySQL 来做吧。

  • 最牛派
    最牛派的做法和最简派正好相反,设计师会倾向于挑选技术上看起来最牛的方案。例如,性能最高的、可用性最好的、功能最强大的,或者淘宝用的、微信开源的、Google 出品的等。
    我们以缓存方案中的 Memcache 和 Redis 为例,假如我们要挑选一个搭配 MySQL 使用的缓存,Memcache 是纯内存缓存,支持基于一致性 hash 的集群;而 Redis 同时支持持久化、支持数据字典、支持主备、支持集群,看起来比 Memcache 好很多啊,所以就选 Redis 好了。

  • 最熟派
    设计师基于自己的过往经验,挑选自己最熟悉的方案。我以编程语言为例,假如设计师曾经是一个 C++ 经验丰富的开发人员,现在要设计一个运维管理系统,由于对 Python 或者 Ruby on Rails 不熟悉,因此继续选择 C++ 来做运维管理系统。

  • 领导派
    领导派就更加聪明了,列出备选方案,设计师自己拿捏不定,然后就让领导来定夺,反正最后方案选的对那是领导厉害,方案选的不对怎么办?那也是领导“背锅”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MES系统计划排产功能,助你提升生产效率

MES系统的排产功能是基于企业的生产需求与资源情况进行制定的。首先,需要明确生产计划的目标和要求,包括计划产量、交货期限、生产能力等。然后,根据企业的生产资源情况,包括人员、设备、原材料等,制定生成计划。在MES…

Java链表(1)

🐵本篇文章将对单链表进行讲解,模拟实现单链表中常见的方法 一、什么是链表 链表是一种逻辑结构上连续而物理结构上不一定连续的线性表,链表由一个一个节点组成: 每一个节点中都由数据域(val)和指针域&…

食品加工厂可视化视频AI智能监管方案,助力工厂数字化运营

一、背景与需求分析 随着科技的不断进步和人们对食品安全和质量的日益关注,食品智慧工厂的建设成为了食品行业的一个重要趋势。智能化的食品工厂可以利用先进的技术和自动化系统,提高生产效率、降低监管成本,并确保产品的质量和安全。 行业…

使用GtkSharp下载zip包过慢问题解决方案

背景 安装GtkSharp这个包准备使用C#进行跨平台窗体应用程序开发,运行时发现其需要从github上下载【https://github.com/GtkSharp/Dependencies/raw/master/gtk-3.24.24.zip】这个依赖包,不知道是被墙了还是咋的,下载超时导致运行失败。 解决…

泛型..

1.泛型 所谓泛型 在类定义处是一种类型参数(我们平常所见到的参数指的就是方法中的参数 他接收有外界传递来的值 然后在方法中进行使用) 在类内部的话 则充当一种占位符 并且还提高了代码的复用率 何以见得提高了代码的复用率 其实就是通过对比使用了泛型技术和没有使用泛型技…

VS2019下各种报错合集(持续更新)

VS2019下的各种报错处理(长期更新),欢迎大家在评论区补充错误代码/描述 解决方案!!! 1、printf 代码运行到printf函数打印不出来内容,打断点之后,f10走过去,程序直接运行起来了,而…

Linux下串口編程遇到的接收数据错误及原因(

近日在调试串口的时候发现,另一设备向我ARM板的串口发送0x0d,我接收之后变成了0x0a,这是问题一;另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收此数,这是问题二。 由于问题莫名其妙…

深度视觉目标跟踪进展综述-论文笔记

中科大学报上的一篇综述,总结得很详细,整理了相关笔记。 1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) ,在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法,采用的框架包括相关滤波器、分类…

【SVA断言_2023.01.24】

在RTL设计中,仿真时查看异常情况,异常出现时,断言会报警,断言占整个设计的比例应不少于30% assertion作用: 检查特定条件或事件序列的出现情况提供功能覆盖 断言失败的严重程度:$fatal(中止仿…

Oracle RAC 集群的安装(保姆级教程)

文章目录 一、安装前的规划1、系统规划2、网络规划3、存储规划 二、主机配置1、Linux主机安装(rac01&rac02)2、配置yum源并安装依赖包(rac01&rac02)3、网络配置(rac01&rac02)4、存储配置&#…

FitSM与ITIL及ITSM的对比

FitSM 是一种轻量级 IT 服务管理(ITSM)标准,其所有材料都是免费提供的,旨在促进 IT 服务提供中的服务管理,包括联合场景。但是,FitSM 适合您的组织吗?了解 FitSM 的适用性涉及两个方面。首先需要…

阿里云PAI-DSW部署ChatGLM3过程记录

1、申请免费的阿里云 PAI-DSW 资源,这个比较基础不做介绍了 2、从第二步开始,我们介绍部署ChatGLM3过程:PAI-DSW 资源界面如下图:点击开启新终端 3、默认目录下面建一个test目录,如下图: 4、执行命令cd te…

TPCC-MySQL

简介 TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。 Tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试。其源码放在launchpad上&#xff0c…

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题 题目总数:7 总分数:100 编程题 第 1 题 问答题 二进制回文 编程实现: 输入一个正整数,判断它的二进制形式是否是回文数,如果是输出True…

Web开发5:第三方扩展与部署

在Web开发中,第三方扩展和部署是提高开发效率和功能扩展的重要手段。第三方扩展可以帮助我们快速集成常用功能和工具,而部署则是将我们的应用程序发布到生产环境中。本文将介绍第三方扩展的重要性、如何选择和使用常见的第三方扩展,并讨论应用…

code server安装使用教程

1. 安装 1.1. 下载code-server安装包 类似这种文件:code-server-3.10.2-linux-amd64.tar.gz 解压:tar -xvf code-server-3.10.2-linux-amd64.tar.gz 1.2 (可选)建立软连接 ln -s path/to/code-server-3.10.2-linux-amd64/bin…

力扣15、三数之和(中等)

1 题目描述 图1 题目描述 2 题目解读 在整数数组nums中,找出三元组,它们的和为0,要求返回所有和为0且不重复的三元组。这是两数之和的扩展题目,可以将三数之和问题。 3 解法一:排序 双指针 将整数数组排序之后&#…

阿里云快速搭建《幻兽帕鲁》服务器自建指南

如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器,阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

使用javadoc生成maven项目的文档

概述:Maven 提供了 javadoc 插件来执行这个任务。 废话不多说,让我们开始操作吧!!! 第一步:引入插件 在 pom.xml 中配置 javadoc 插件: 在 Maven 项目的 pom.xml 文件中,你需要添加…

AutoPSA的计算结果

1.中煤集团某用户问:请问,我导出来的.psa文件,在我同事另一台电脑上计算应力 怎么跟我电脑上的数据受力还有应力完全不一样呢? 原来,用户同事用的版本是9.3.5,用户用的版本是10.3.用户把.psa文件发给我们测试后,9.3…