计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

40|内功心法(一):内核和后端通用的设计思想有哪些?

你好,我是 LMOS。
前面我们学过了很多基础知识点,但你也许心中还是有点打鼓。要想跳出“边学边忘”的糟糕循环,除了温故知新,加深记忆,更重要的是把“内功心法”迁移到更多场景中。理解了技术的本质之后,在底层和应用层穿梭不是问题,在前端和后端切换也会更加游刃有余。
接下来的两节课,我会带你一起看看内核和后端通用的设计思想都有哪些,它们又是如何用在具体技术里的?这节课我先分享三大通用“心法”,分别是并行化、异步和调度。

内功心法之并行化

我们专栏最前面讲过图灵机,刚开始接触到它的时候,是不是感觉图灵机的串行纸带模型对计算机做了非常好的抽象呢?然而,现实世界里我们如果只使用串行模型来解决问题,恐怕就比较低效了。
那么如何才能解决串行处理的低效问题呢?这就不得不说到并行化了。

关键路径和阿姆达尔定律

我先描述一个现象,你看看是不是很熟悉:一段程序放在面前,你需要对它进行性能优化,但你辛辛苦苦调了许久,优化效果却并不明显。
之所以会遇到这样的问题,核心原因是我们没有梳理清楚这段程序的关键路径,并对关键路径做有效优化。那么如何使用关键路径这种工具呢?我给你讲个番茄炒蛋盖饭的故事。
你没走错片场,咱们梳理一下做一道番茄炒蛋盖饭,都需要做什么。我们先在脑中把整个过程拆解成下图中的具体步骤。然后,在每一个步骤上标出这个步骤的耗时。你可以参考后面这张流程图看一下。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了内核和后端通用的设计思想,包括并行化、异步和调度。并行化通过优化关键路径提高程序性能,但受到阿姆达尔定律的局限性;异步化通过将耗资源的任务异步处理提高效率;调度思想通过各种调度手段让有限的资源尽可能得到更高效的利用。在内核中,调度无处不在,涉及进程/线程、虚拟内存、页面调度算法等;在后端架构中,Golang、Java等编程语言的运行时库也包含对进程/线程/协程、内存的调度管理策略。此外,文章还介绍了分布式任务调度框架的架构和关键部分,以及推荐了Hadoop、Pulsar和DolphinScheduler等代表性项目。最后,读者被鼓励思考自己工作、生活中哪些场景应用了这些设计思想。整体而言,本文通过丰富的例子和实践应用,帮助读者快速了解了内核和后端通用的设计思想,为他们拓宽了架构思路,激发了技术实践的兴趣。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • peter
    请问:多个携程发送http的例子中,如果是单核,应该是并发,如果是多核,是并行吗?(我感觉即使是多核,也未必是并行;要做到并行,需要进一步处理,而且还要看携程个数是否大于核心数目)

    作者回复: 单核下 同一时刻只能运行一个携程 是通过时间片切换 是并发 多核心下才同时运行多个携程,才能真正并行

    2022-11-03归属地:湖北
    1
  • 苏流郁宓
    同步异步还可以再细化,分应用程序的权重来做! 比如,烧水,洗菜,做饭。由于做饭的时间长,先洗米煮饭,在电煮饭过程中,用水壶烧水,加洗菜炒菜。这样总消耗的时间就会大大减少! 那么,在计算机中,不管并行还是异步 都是尽最大力度优化利用cpu资源!也可以理解为工作量一定下,减少总消耗时间的。在cpu层面,软件设计就是怎么利用好多核优势,但是减少维护数据一致性浪费的时间的啊

    作者回复: 对,理解深刻

    2022-11-06归属地:湖北
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部