【云计算】云计算八股与云开发核心技术(虚拟化、分布式、容器化)
文章目录
一、什么是云计算? 1、云计算的架构(基础设施,平台,软件)
国内做公有云的主要有:腾讯云,阿里云,华为云(对外销售)
做垂直私有云的有:米哈游,字节火山,等等
云计算的三种服务模式(企业卖的东西)
常见应用:块存储、对象存储及文件存储服务,虚拟专用网络服务(VPN),负载均衡服务,虚拟防火墙及安全组隔离服务,桌面云服务,IDC托管云,企业私有云,大数据分析云服务,数据库云服务,媒体云服务,电信NFV云。
关键技术:
参考:1,2,
2、云计算的发展
发展历史,参考,
物理机时代
虚拟机的诞生
公有云和私有云的诞生(池化计算)
应用层的云计算
容器的诞生
二、如何做云计算开发?云计算的核心技术(重点)
参考:1,2,3,4,5,6,7
1、虚拟化技术 -> 虚拟机(计算,存储,网络)
计算虚拟化
网络虚拟化
存储虚拟化
2、分布式技术 -> 资源池
参考:1,
云计算与分布式计算的区别
云计算的分布式存储
如何实现一个分布式锁
3、容器化技术 -> 快速迁移
容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地迁移到另一个计算环境。Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:如代码、运行环境、系统工具、系统库和设置。Docker是容器的引擎,通过Docker引擎就可以实现容器的功能。
容器技术最重要的价值是:为在不同主机上运行的应用程序服务提供一个轻便、一致的格式。容器格式的标准化可加快交付体验,允许用户方便地对工作负载进行迁移,避免局限于单一的平台提供商。利用容器可以短时间内部署成百上千个应用,保证用户应用快速上线;容器可以简化配置过程,用户应用的运行环境可以直接打包到容器内,使用时可以直接启动。
如上图所示,左图为容器技术架构图,右图为虚拟化技术架构图。两者相比,容器与虚拟机最大的不同是容器里不再安装操作系统,容器的本质是一种操作系统级别的虚拟化,启动一个应用容器其实就是启动一个进程,节省了大量操作系统所占资源,同样一台计算机就可以服务于更多租户。容器技术对操作系统的资源进行再次抽象,而并非对整个物理机资源进行虚拟化。容器和虚拟机一起使用为部署和管理应用程序提供了极大的灵活性。
三、面经补充 1、云计算面经补充
计算机发展史、概念题
Q:你认为云计算到底解决了软件生产中的什么问题?
节约成本、外包扩大业务、网站防攻击、数据备份等等
Q:请解释云计算中的公有云、私有云和混合云,并说明它们的适用场景。
公有云是由第三方云服务提供商(如亚马逊AWS、微软Azure、谷歌云等)提供和管理的云基础设施和服务。这些基础设施和服务对外公开,客户可以按需使用并按照使用量付费。
私有云是指由单个组织或企业内部搭建和管理的云基础设施和服务。这些基础设施可以部署在自己的数据中心或由第三方托管,但对外部通常不公开。
混合云是指同时使用公有云和私有云的部署模型。在混合云中,组织可以将一些工作负载部署在公有云上,而将另一些工作负载部署在私有云上,并且这两者之间可以进行互操作。
Q:讨论云计算的五个基本特征。
资源收缩,快速部署,资源抽象,按用量计费,宽带访问
Q:请简述云计算中有哪些不同的层,并介绍各自的功能。
a) Saas:软件及服务,它让用户可以直接访问云应用程序,不必再系统上安装任何东西。
b) Iaas:基础设施即服务,它从硬件(比如内存和处理器速度等)等层面提供了基础设施
c) Paas:平台及服务,它为开发人员提供云应用程序平台。
Q:对云计算有什么了解?
云计算是一种基于互联网的计算方式,通过共享的资源池,提供可按需获取、可快速提供和可测量的计算服务。
它主要由三个部分组成:云存储、云计算和云服务。
云计算通过虚拟化技术,将硬件资源(如处理器、存储器、网络)进行抽象和汇总,形成资源池,通过软件技术对资源进行分配和管理,从而提供计算服务。
云计算可以根据需要快速提供计算、存储、网络等各种服务,可以节省企业的资金和时间成本,提高资源利用率。 云计算有多种服务模式,包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
不同的服务模式适用于不同的业务需求。同时,云计算还有多种部署方式,包括公共云、私有云和混合云。企业可以根据自己的需求选择适合的部署方式。
Q:云计算服务中涉及的数据库服务通常包括以下几个方面?
+ 数据库即服务(DBaaS):DBaaS是一种将数据库作为云服务提供的模式,用户无需购买、安装和维护数据库软件和硬件设备,而是通过云服务提供商提供的界面或API来管理和使用数据库。
+ 数据库实例,用户可以在其中部署和运行自己的数据库系统。这些数据库实例通常包括预配置的硬件资源(如CPU、内存、存储空间)和数据库软件环境,用户只需根据自己的需求选择合适的实例类型和规格即可快速部署自己的数据库系统。
云计算核心技术
Q:云计算中的虚拟化技术是如何实现资源的隔离和共享的?
通过创建虚拟的计算资源(如虚拟机、容器等)来实现资源的隔离和共享。
资源隔离是指将不同用户或应用程序的计算资源彼此隔离,以确保它们在同一物理基础设施上运行时不会相互干扰。
+ 虚拟化层:在物理服务器上运行虚拟化软件,该软件负责创建和管理虚拟资源。虚拟化层将物理服务器的计算、存储和网络资源抽象化,以便多个虚拟实例可以共享这些资源。
+ 虚拟机(VM)技术:通过虚拟机管理器(如VMware、Hyper-V、KVM等),物理服务器可以被划分为多个虚拟机,每个虚拟机都运行着独立的操作系统和应用程序。这样,不同用户或应用程序的计算资源可以被隔离开来,就好像它们运行在不同的物理服务器上一样。
+ 容器技术:容器技术(如Docker、Kubernetes等)提供了一种更轻量级的虚拟化方式,容器可以在同一操作系统内共享内核,并且具有更快的启动时间和更小的资源开销。通过容器技术,不同应用程序的资源可以被隔离开来,同时共享相同的操作系统内核。
Q:请解释云计算中的弹性伸缩是什么,以及为什么弹性伸缩对云计算环境具有重要意义?
+ 云计算中的弹性伸缩是指根据实际需求动态地增加或减少计算资源(如服务器、存储和网络资源)的能力。这意味着在云平台上,系统能够根据负载、用户需求或其他指标来自动地增加或减少计算资源,以保持系统的性能和可用性。
Q:容器和虚拟机的区别?
+ 容器与虚拟机最大的不同是容器里不再安装操作系统,容器的本质是一种操作系统级别的虚拟化,启动一个应用容器其实就是启动一个进程,节省了大量操作系统所占资源。
Q:vm虚拟机为什么效率高?
对比其他虚拟技术,内核也有做虚拟化。
对比物理机,资源共享,资源隔离,资源管理相关的能力。
2、Linux面经补充
参考:1,2,3,4,5,,7,,9-git,10-内核,linux-运维
系统原理
Q:怎么看一个文件被哪些进程占用,除了命令,找到所有日志,自己统计。
lsof 文件名 (实现原理)
1、/proc 文件系统是 Linux 内核提供的一个虚拟文件系统,包含了关于系统运行状态的信息。
2、每个正在运行的进程在/proc/[PID]/fd目录下都有一个符号链接列表,这些链接指向该进程打开的文件描述符
3、 对于每个文件描述符,lsof会读取符号链接指向的真实文件路径,并获取该文件的相关信息,如文件类型、文件大小等
4、lsof根据文件描述符获取到的文件信息,查找相应的进程信息,包括进程ID、进程名称、用户ID等。
5、lsof将获取到的文件信息和进程信息以表格形式输出,显示文件被哪些进程占用。。
Q:Linux查看某个端口是否被占用?
sudo netstat -tuln | grep :80
sudo ss -tuln | grep :80
这将显示所有正在监听端口的服务,并且可以看到端口 80 是否被占用。
Q:Linux启动过程,从bios开始?
第一步:开机自检,加载 BIOS
第二步:读取 MBR(硬盘的主引导记录,MBR是第一个可开机设备的第一个扇区的引导分区块)
第三步:Boot Loader grub 引导菜单(里面的ext4驱动,可以识别/boot分区里的内容)
第四步:加载 kernel 内核 (根据 grub 设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。)
第五步:init 进程依据 inittab 文件夹来设定运行级别(内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取 /etc/inittab 文件,并依据此文件来进行初始化工作)
第六步:init 进程执行 rc.sysinit
第七步:启动内核模块
第八步:执行不同运行级别的脚本程序
第九步:执行 /etc/rc.d/rc.local
第十步:执行 /bin/login 程序,启动 mingetty,进入登录状态
Q:如何查看一个服务是否开机启动?
方法1: 到多用户模式对应的文件夹下查看是否有这个服务的名字
Q:运行级别(centos6里概念)
在centos6里有哪些运行级别?
runlevel 可以查看当前运行级别
0级:关机
1级:单用户(找回丢失密码)
2级:多用户无网络,不能使用NFS功能
3级:多用户有网络(multi-user),最常用的级别,CLI字符界面
(会定义哪些程序在字符界面下开机启动 -->开启的程序少–>消耗的资源少 -->最小化安装)
4级:保留,目前Linux暂无使用
5级:图像界面,GUI界面
(图形界面 -->会定义哪些程序在图形界面下开机启动 -->开启的程序多–>消耗资源多 -->带GUI服务器,linux里启动图形界面是启动GNOME 和KDE)
6级:重启
在centos7/8里该文件已经不再使用了
Q:内核子系统有哪些?操作系统的主要功能?
内核子系统包括文件系统、网络、内存管理等,操作系统的主要功能是资源管理和任务调度。
Q:系统的运行级别,默认的运行级别是?
系统的运行级别,默认的运行级别是3。
Q:虚拟化,完全虚拟化,半虚拟化,docker?
虚拟化有完全虚拟化、半虚拟化和容器虚拟化(如Docker)。
Q:Docker常用命令:,例如开启所有容器,删除所有镜像,复制文件到容器内?
`docker start $(docker ps -aq)`(开启所有容器)、`docker rmi $(docker images -q)`(删除所有镜像)、`docker cp`(复制文件到容器内)。
Q:解释一下什么是分布式部署,负载均衡,反向代理?
分布式部署是将应用程序部署在多台服务器上,负载均衡是将请求分配到多个服务器上,反向代理是代理服务器接收客户端请求并将其转发到后端服务器。
Q:对云原生的理解?
云原生是一种软件开发和部署方法,利用云计算和容器化技术,实现高度自动化、弹性扩展和持续交付。
常用命令
Q:常见的进程管理命令有哪些?
top ps systemctl nice service
Q:关闭Linux系统不重启
用 `shutdown -h now` 命令。
Q:数据库备份
使用 `mysqldump`。
Q:创建和解压压缩文件
使用 `tar` 命令。
Q:常见的端口、
Web服务使用80和443端口,数据库服务常用3306端口。
Q:常见的Linux日志文件和路径:
`/var/log/messages`、`/var/log/syslog`。
Q:常见的进程管理命令:
`ps`、`top`、`kill`。
Q:linux查看某个端口是否开启
a. 使用lsof -i:端口号命令行
b.使用netstat -aptn命令行,查看所有开启的端口号
其他补充: