作者:蒂莫西·海伊

你可能听过这条规矩。如果你是一名经验丰富的架构师,你肯定知道这点:对于某个问题,如果只考虑了一个解决方案,那你就有麻烦了。

软件架构是要在所有给定的约束条件下,寻找到解决问题的最佳方案。期望第一个解决方案即满足全部的需求和约束,几乎是不可能的。一般来说,必须根据优先级次序进行权衡,选择最符合需求的解决方案。

如果对手头的问题只有一个解决方案,这意味着将没有进行折衷权衡的余地。这个唯一的解决方案很可无法令系统投资方满意。这也意味着,如果由于商业环境瞬息万变而导致优先级次序发生转变,系统很可能没有空间来适应新的需求。

这种情况即使有——也绝少是真地由于缺乏可选方案而造成的,它更可能是架构师缺乏特定问题域的经验所致。如果事实确是如此,别费力气,赶紧让更有经验的架构师助你一臂之力。

如果依照习设计架构,这个问题将更不容易为人所察觉。架构师也许己熟稔于某种单一风格的架构(例如,三层或多层的客户机-服务器系统),却没有充分认识它不适用的情。如果发现自己在还没有对比其它方法之前,就己经想当然的给出了解决方案,那么,停下来,向后退一步,问问自己,是否能够想出另一种方法。如果不能,你可以需要帮助了。

我的一个朋友,曾是一家成长中的小型互联网创业公司的技术负责人。随着用户群扩大,他们系统的负载与日俱增,性能也每况愈下,公司开始渐渐失去来之不易的用户。

于是,老板问他,“我们该如何提高系统性能?”

我的朋友回答:“买一台更大的机器!”

“还有什么其他可做的?”

“嗯……据我所知,只有这样了。”

我的朋友被当场解雇了。当然,这个老板是正确的。

起码要有两个可选的解决方案相关推荐

  1. 关于互联网流量劫持分析及可选的解决方案

    一.劫持的方式分析 互联网的流量劫持大致分两种,第一种是DNS劫持,第二种是链路劫持.对于这两种劫持的原因有很多,比如用户电脑中毒了,DNS被篡改了,比如家用路由器被攻破了等等.但这种个人极端原因毕竟 ...

  2. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  3. Cisco和H3C的两种不同动态***解决方案

    经常见到有读者问:***客户端如果是动态WAN接入的,可以实现***连接吗?还有如何配在***中配置NAT穿越?前者的答案当然是肯定的,不仅***客户端可以是动态接入的,而且在LAN到LAN的***互 ...

  4. async-validator 表单验证两种数据的解决方案

    上问题: 下面选项中后台给的value 有 number和 string 两种导致无法验证 解决方案 rules: [,{type: "string",required: true ...

  5. java求二阶微积分方程特解_Scipy:实现微分方程的两种方法:两种不同的解决方案:回答...

    我试图解决我的化学论文的微分方程,在那里我偶然发现了一个关于scipy的微分方程求解器"odeint"的问题 . 首先,我根据scipy网站上的示例,通过功能CIDNP_1实现差异 ...

  6. Cisco和H3C的两种不同动态×××解决方案

    经常见到有读者问:×××客户端如果是动态WAN接入的,可以实现×××连接吗?还有如何配在×××中配置NAT穿越?前者的答案当然是肯定的,不仅×××客户端可以是动态接入的,而且在LAN到LAN的×××互 ...

  7. spring定时任务执行两次的直接解决方案

    这个问题,很多人是通过修改tomcat的配置文件来解决的.这里之所以要提出一种直接解决方案,是应为并不是每个开发人员都有权限修改线上环境的tomcat配置,这个直接解决方案就是给无权修改tomcat配 ...

  8. QQ浏览器打开自动出现两个网页的解决方案

    问题如图: 解决方案: 步骤 打开QQ浏览器,点击右上角"三"的图标,选择设置 选择"自定义网页或一组网页",不要选择它推荐的选项,你选择它推荐的打开就是两个啦 ...

  9. 关于APP更新,两包共存的解决方案

    大多数是由于包名不一致导致的,一定要注意包名一致.不然手机会认为是两个app,导致两个包共存 查看包名的方法 1.hbuilder打包时会有提示 2.手机打开设置->应用->正在运行-&g ...

最新文章

  1. 一文搞定 GBDT、Xgboost 和 LightGBM 的面试
  2. HTML基础部分(1)字体,照片,链接
  3. Java移除ssl认证_Java SSL证书吊销检查
  4. hashmap取值_一万六千字的HashMap深度剖析
  5. c++17(17)-异常try catch,operator[],vector at
  6. 【Python基础入门系列】第06天:Python 模块和包
  7. nginx+web.py+fastcgi(spawn-fcgi)的session失效問題
  8. SWT、JavaFx十种页面布局快速理解
  9. Alpha冲刺(2/10)——2019.4.24
  10. oracle goldengate 数据库实例,案例:Oracle goldengate报错ggsci: error while loading shared libraries:...
  11. BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单
  12. [转]厚积薄发,有的放矢--李开复博士给中国计算机系学生的建议
  13. 写给MongoDB开发者的50条建议Tip14
  14. SpringMVC框架学习上篇
  15. matlab聚类分析_数据挖掘——聚类分析
  16. FPGA verilog 临近插值任意比例视频缩放代码
  17. 【校招Verilog快速入门】组合逻辑篇:VL12、4bit超前进位加法器电路
  18. upc第十一场2020.11.30
  19. 4字母域名价值高吗?目前值多少钱?
  20. 解决雷电模拟器在windows 10下无法桥接网卡的问题

热门文章

  1. 魅蓝note3 android7,魅蓝Note3和全面评测对比 良心推荐!
  2. 人像摄影的美姿和构图技巧
  3. Java中对URL解码
  4. 交互式课件制作步骤分享
  5. 【转】炒股技巧:教你四种买入方法 准确率高达95%!
  6. python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...
  7. 嵌入式多任务OS中Vxworks和linux的一些区别
  8. PHP初级教程------------------(5)
  9. tokudb_TokuDB 安装
  10. (Alpha)Let's-典型用户和场景功能规格说明书