learn-tech/专栏/重学操作系统-完/40(1)加餐练习题详解(八).md
2024-10-16 11:12:24 +08:00

52 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
40 (1)加餐 练习题详解(八)
今天我会带你把《模块八:虚拟化和其他》中涉及的课后练习题,逐一讲解,并给出每一讲练习题的解题思路和答案。
练习题详解
37 | 虚拟化技术介绍VMware 和 Docker 的区别?
【问题】自己尝试用 Docker 执行一个自己方向的 Web 程序:比如 Spring/Django/Express 等?
【解析】关于如何安装 Docker你可以参考这篇文档。然后这里还有一个不错的 SpringBoot+MySQL+Redis 例子,你可以参考这篇内容。
其他方向可以参考上面例子中的 Compose.yml 去定义自己的环境。 一般开发环境喜欢把所有工具链用 Compose 放到一起,上线的环境数据库一般不会用 Docker 容器。 Docker-Compose 是一个专门用来定义多容器任务的工具,你可以在这里得到。
国内镜像可以用 Aliyun 的,具体你可以参考这篇文档。
(注:需要一个账号并且登录)
38 | 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?
【问题】为什么会有多个容器共用一个 Pod 的需求?
【解析】Pod 内部的容器共用一个网络空间,可以通过 localhost 进行通信。另外多个容器,还可以共享一个存储空间。
比如一个 Web 服务容器,可以将日志、监控数据不断写入共享的磁盘空间,然后由日志服务、监控服务处理将日志上传。
再比如说一些跨语言的场景,比如一个 Java 服务接收到了视频文件传给一 个 OpenCV 容器进行处理。
以上这种设计模式我们称为边车模式Sidecar边车模式将数个容器放入一个分组内例如 K8s 的 Pod让它们可以分配到相同的节点上。这样它们彼此间可以共用磁盘、网络等。
在边车模式中有一类容器被称为Ambassador Container翻译过来是使节容器。对于一个主容器Main Container上的服务可以通过 Ambassador Container 来连接外部服务。如下图所示:
我们在开发的时候经常会配置不同的环境。如果每个 Web 应用都要实现一套环境探测程序,比如判断是开发、测试还是线上环境,从而连接不同的 MySQL、Redis 等服务,那么每个项目都需要引入一个公用的库,或者实现一套逻辑。这样我们可以使用一个边车容器,专门提供数据库连接的服务。让连接服务可以自动探测环境,并且从远程读取全局配置,这样每个项目的开发者不需要再关心数据库有多少套环境、如何配置了。
总结
“[39 | Linux 架构优秀在哪里?]”和 “40 | 商业操作系统:电商操作系统是不是一个噱头?”因为这两讲内容人文色彩较重,我没有给你设置课后习题。但是如果你对这两讲的内容感兴趣,可以在留言区和我交流。
到这里,《重学操作系统》专栏的全部知识都已经讲解结束了。在这 40 讲中,我试图用通俗易懂的语言帮助你建立整个《操作系统》的知识体系,并且最大程度地帮助你将这些基础知识发散到实战场景中去。
在我看来,基础知识是相通的,学习是为了思考和解决问题。《操作系统》和《计算机组成原理》可以作为入门编程领域的前两门课,后续我会继续努力写出更多帮助你提升基础技能、开阔视野、加深认知的专栏课程。