其他分享
首页 > 其他分享> > 技术思考框架:抽象-思路-考量-优化-细节

技术思考框架:抽象-思路-考量-优化-细节

作者:互联网

如何思考问题与思考具体问题同等重要。


引子

如何思考一个技术问题?如何高效地理解某个技术 ?如何快速学习一个新的技术点 ? 这都需要一个好的技术思考框架。缺乏思考框架,知识和技术就变成一堆细节的堆砌,缺乏关联,难以理解和记忆,也就难以掌握和应用。

本文来探索一种好的技术思考框架。

技术思考框架

在多年的开发生涯及阅读和理解源码的过程中,我逐渐形成了一种个人觉得比较可行的技术思考框架:“抽象-思路-考量-优化-细节” 五步曲。

抽象

抽象非常重要。一个典型的例子是删除操作。删除操作提供的是“用户不可见”的抽象。可以采用两种思路:

可以看到,提供良好的抽象,而不是直觉上按照用户的要求去做,往往会带来更灵活的设计空间。

抽象最好能用一句话概括。比如,文字编辑器(UI界面)提供的是“所见即所得”的抽象;理财产品提供的是符合利率模型的计算抽象。

思路

思路是如何去基本实现的问题。在问题讨论初期,提出尽可能多种思路,应对不同的场景。比如排序,就有插入排序、冒泡排序、快速排序、合并排序、希尔排序、桶排序、外部排序、多关键字排序等。不同的排序具有不同的特性,在不同的场景下使用。挖掘尽可能多的思路,有助于拓展对问题的思考。好的思路是成功的一半。


考量和优化

考量和优化往往需要丰富的开发实践经验。知道往哪个方向使力,如何使力,需要解决什么技术难点等。

细节

在掌握宏观视角后,细节的打磨尤为重要。细节处理不当,可能会导致整体工作前功尽弃。程序员或工程师的一大特质,即是体现在细节的考虑和思维的缜密上。

考虑各种错误和异常,考虑依赖服务、服务器、网络等的不可靠,是做好细节工作的必要前提。


Redis 持久化示例

抽象

持久化,即是给用户提供一个“数据保存了、即使掉电或重启也能从某处找回数据”的抽象。

思路

如何实现 Redis 持久化 ? 持久化就是将 Redis 内存数据库的数据集状态保存在某个磁盘文件里。可以基于两种思路:

考量

实际工程中要考虑什么因素呢 ?

优化

针对上述考量因素,可制定相应优化措施:

细节

RDB 机制的细节:


AOF 机制的细节:

高并发处理

再来思考一个问题:如何应对高并发流量呢?这是互联网应用必然面对的一个重大挑战。

抽象

高并发流量问题,本质是资源有限的问题。即是用有限的资源去应对不确定性的巨大流量的矛盾。假设有足够的资源,加以适当的水平扩展,高并发也不算什么事。难在用现有的架构、现有的资源来应对巨大流量,而且无论预留多少资源,总是不一定能承载未来可能降临的超过负载能力的峰值流量。

思路

既然是资源有限的问题,那么思路也就三条:

考量

优化

提升服务能力:


加资源(在不同层面):


限流: 仍然无法承载的流量,采用限流处理掉。


细节

高并发实际上是一个实操性很强的事情。没有经过高并发流量的洗礼,只谈理论终究还是隔着点。不过,至少要了解相关理论,才能在实战中积极运用并积累经验。

技术体系结构

从上述示例可以看到:

抽象、考量和优化,需要建基于一个比较丰富的技术体系结构。为什么考虑这个问题而不考虑那个问题?为什么选择优化这个而不是优化那个?技术知识点是非常繁杂琐碎的,缺乏技术体系结构来有效地组织起来,很可能会脑中一团浆糊,分不清东南西北,对着各种新技术望洋兴叹。

因此,打造一个适合自己的技术体系结构非常重要,这也是未来的核心竞争力之一。比如 “互联网应用服务端的常用技术思想与机制纲要” 即是围绕“数据处理”这个中心主题,从灵活性、高性能、高可用、高可靠、一致性、海量、安全、自动化、智能化八个方面打造的技术体系结构。这个体系结构几乎可以容纳各种技术流派和技术优化手段。

小结

本文探讨了一种技术思考框架:基于技术体系结构的“抽象-思路-考量-优化-细节”五步曲。

合适的抽象会带来更灵活的设计空间和思路,而考量则会决定优化的大方向,在优化的过程中解决细节问题。在学习技术的过程中,要逐步打造适合自己的技术体系结构,不断充实这个体系结构,从而具备更强的系统思考力和技术吸收力。

标签:AOF,持久,流量,细节,抽象,思考,考量,优化
来源: https://www.cnblogs.com/lovesqcc/p/14033784.html