40|内功心法(一):内核和后端通用的设计思想有哪些?
LMOS
你好,我是 LMOS。
前面我们学过了很多基础知识点,但你也许心中还是有点打鼓。要想跳出“边学边忘”的糟糕循环,除了温故知新,加深记忆,更重要的是把“内功心法”迁移到更多场景中。理解了技术的本质之后,在底层和应用层穿梭不是问题,在前端和后端切换也会更加游刃有余。
接下来的两节课,我会带你一起看看内核和后端通用的设计思想都有哪些,它们又是如何用在具体技术里的?这节课我先分享三大通用“心法”,分别是并行化、异步和调度。
内功心法之并行化
我们专栏最前面讲过图灵机,刚开始接触到它的时候,是不是感觉图灵机的串行纸带模型对计算机做了非常好的抽象呢?然而,现实世界里我们如果只使用串行模型来解决问题,恐怕就比较低效了。
那么如何才能解决串行处理的低效问题呢?这就不得不说到并行化了。
关键路径和阿姆达尔定律
我先描述一个现象,你看看是不是很熟悉:一段程序放在面前,你需要对它进行性能优化,但你辛辛苦苦调了许久,优化效果却并不明显。
之所以会遇到这样的问题,核心原因是我们没有梳理清楚这段程序的关键路径,并对关键路径做有效优化。那么如何使用关键路径这种工具呢?我给你讲个番茄炒蛋盖饭的故事。
你没走错片场,咱们梳理一下做一道番茄炒蛋盖饭,都需要做什么。我们先在脑中把整个过程拆解成下图中的具体步骤。然后,在每一个步骤上标出这个步骤的耗时。你可以参考后面这张流程图看一下。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了内核和后端通用的设计思想,包括并行化、异步和调度。并行化通过优化关键路径提高程序性能,但受到阿姆达尔定律的局限性;异步化通过将耗资源的任务异步处理提高效率;调度思想通过各种调度手段让有限的资源尽可能得到更高效的利用。在内核中,调度无处不在,涉及进程/线程、虚拟内存、页面调度算法等;在后端架构中,Golang、Java等编程语言的运行时库也包含对进程/线程/协程、内存的调度管理策略。此外,文章还介绍了分布式任务调度框架的架构和关键部分,以及推荐了Hadoop、Pulsar和DolphinScheduler等代表性项目。最后,读者被鼓励思考自己工作、生活中哪些场景应用了这些设计思想。整体而言,本文通过丰富的例子和实践应用,帮助读者快速了解了内核和后端通用的设计思想,为他们拓宽了架构思路,激发了技术实践的兴趣。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》,新⼈⾸单¥68
《计算机基础实战课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- peter请问:多个携程发送http的例子中,如果是单核,应该是并发,如果是多核,是并行吗?(我感觉即使是多核,也未必是并行;要做到并行,需要进一步处理,而且还要看携程个数是否大于核心数目)
作者回复: 单核下 同一时刻只能运行一个携程 是通过时间片切换 是并发 多核心下才同时运行多个携程,才能真正并行
2022-11-03归属地:湖北1 - 苏流郁宓同步异步还可以再细化,分应用程序的权重来做! 比如,烧水,洗菜,做饭。由于做饭的时间长,先洗米煮饭,在电煮饭过程中,用水壶烧水,加洗菜炒菜。这样总消耗的时间就会大大减少! 那么,在计算机中,不管并行还是异步 都是尽最大力度优化利用cpu资源!也可以理解为工作量一定下,减少总消耗时间的。在cpu层面,软件设计就是怎么利用好多核优势,但是减少维护数据一致性浪费的时间的啊
作者回复: 对,理解深刻
2022-11-06归属地:湖北
收起评论