4.1.4 设计思路和常用方案(下)

最后更新2021/08/25

  • 没有免费的午餐,某一方做得很好,一定是另一方面比较差,如果所有放面都提高了,那么。。。实现比较麻烦,至少思考起来很麻烦:-) 。

一定要牢记,真的没有例外,如果有例外,那是你认知不够,还没有意识到。一个架构从整体看,永远是越简洁越好。但为了达到特定的要求,如果无法在算法逻辑上做到更优化,逐渐添加鸡零狗碎打补丁是无可避免的事情。在设计之初不能做到简洁,则拖延系统上线时间,降低实现能力,甚至无法实现;在运行过程中不简洁,则如同二手房的旧厨房,不做整体的装修改造,满眼油烟污垢,满耳嚎叫的排油烟机轰鸣,满墙蛛网裂纹。

重新拆掉老旧小装修,一切都满意了。不,你不满意,看着舒服却不好用,不敢用。哪有爆锅不脏的锅?哪有没油还好吃的菜?干净整齐的代价依然是二选一,不是啥都不做就是大量使用一次性的用后既丢替代品,当然,还有耗巨资尝试一下高科技不粘锅,不脏布。。。然后发现高科技也撑不了几天。

  • 原理的正向使用和反向使用。都知道木桶原理,这是获得一个均衡的设计结果,那么为了提高某一方面呢?可以反其道行之,削短木桶的一条边,去补另一条,结果就是装那种需要均衡的物质更少了,例如水,但装其它本身不需均衡的东西,可以更多,例如木材。

在设计中就可以以来这种技术,因为任何系统的需求,本质上都不会绝对均衡,都能找到方案去适配更紧迫的需求,而适当放弃不重要的需求。例如想要做冗余,而又不能采用并行方式的时候,主备冗余可以主机大,备机小;如果系统故障的可能性小,而性能要求高,可以把故障检测(包括timeout)和回退放到最外起始端或结束端,省略掉中间环节的所有故障检测和恢复,这样就能大大提高整体运行性能,而即便偶尔出现问题,依然有故障保护和回退能力;反之,在性能可保证的情况下,可以在中间环节增加故障检测、故障恢复、自动重试、回退等等功能,使得系统运行更抗干扰。

  • 田忌赛马方案与反木桶原理是等价的。在IT行业存在众多不可能三角,通过灵活运用田忌赛马的应对措施,可以在无路可走的尽头偷天换日搞出一条路来。牺牲一些不重要的,换取另一些重要的。即便依然是半斤八两对子,但是在使用者心目中的价值不同。牺牲一个小兵,兑换一匹大马,这显然是好交易;我爱棉花糖,你喜肉包子,拿我的棉花糖换你的肉包子,这表面是零和,结果却是双赢。在IT系统设计种,会大量使用这些变通手段。

比较常用的技术方案包括:

流水线方案——将有依赖关系的工作串成多条流水线执行,其中关键是对同步、异步的设计;

负载卸载方案——如果我很忙,可以将本属于我的任务交给数据流的上下游其它处理器;

标准化封装方案——通过端到端标准化数据定义,降低额外的处理需求,通过层层封装,在所有当前对应的层次都实现透明化、统一化,今后管理和扩展都会变得容易;

转换方案——时间换空间,空间换速度。一种资源过剩,可以有限度弥补其它资源不足。所谓有限度,是这种转换是有代价的,转换本身就要耗费一些额外的处理能力,转换之后的故障恢复、一执性保证等要求都变得更繁琐,甚至当前层面无解,需要反馈到高层做恢复或者由底层实现绝对保障。

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ensighine

如需特定专题,踢我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值