首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客260542070号
中国地质大学(北京) C++
关注
已关注
取消关注
码住
@蒋豆芽:
2. 云计算的落地实践(上)
本章讲解知识点云计算如何落地实践物理机与虚拟机容器虚拟技术Docker 横空出世PaaS 时代来临业界实践<br>1. 云计算如何落地实践我们上一节讲了有关云计算的概念,那么我们思考一下,云计算在现实中是如何落地实践的呢?如今云计算落地实践中,已经形成了一套有效的体系。一家公司的传统业务如数据库、计算引擎、前端等,这样业务要上云,那么首先我们需要一个 IaaS,这个 IaaS 可以租用大公司已经搭建好的框架,也可以自己搭建 IaaS,如今自己搭建 IaaS 有三种主流工具:OpenStack、VmWare 和 RedHat,这三种方式各有千秋,也正在激烈竞争,群雄逐鹿谁能笑到最后,可以拭目以待。而 OpenStack 在个人自学与公司实践中是最常见的,我们简单介绍一下 OpenStack:OpenStack 是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。OpenStack 为私有云和公有云提供可扩展的弹性的云计算服务。OpenStack 由多个核心项目(即 OpenStack 服务)组成:计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置 CPU、内存等信息规格。对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为 Glance 提供镜像存储,为 Cinder 提供卷备份服务。镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(ISO、QCOW2、Raw、VMDK),有创建镜像、上传镜像、删除镜像、编辑镜像基本信息的功能。身份服务(Identity Service):Keystone。为 OpenStack 其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为 OpenStack 其他服务提供网络连接服务。为用户提供接口,可以定义 Network、Subnet、Router,配置 DHCP、DNS、VLAN。块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。数据库服务(Database Service):Trove。为用户在 OpenStack 的环境提供可扩展和可靠的关系和非关系数据库引擎服务。当我们有了 OpenStack,将其安装到集群中,集群是由多台物理服务器组成,OpenStack 将集群的硬件资源,如 CPU、内存、磁盘、网络虚拟化扔进资源池里提供给客户端使用,OpenStack 管理这些资源的申请、释放等一系列生命周期。OpenStack 各项目间的主要关系:这样我们就打造出一个 IaaS 层了。接下来,公司的业务就能在 IaaS 层跑起来了吗?答案是否定的。我们要利用 IaaS 层的资源创建出虚拟机来,虚拟机就像一台物理机一样有操作系统,也可以在上面安装应用。虚拟机的实现方式是在物理计算机上运行一个虚拟化软件层,称为虚拟机管理器(VMM),也称为 hypervisor。VMM 使得多个虚拟机实例可以在同一台物理计算机上运行,同时保证它们之间互相隔离,以及对物理计算机资源的适当分配和管理。那么在这些虚拟机上跑应用,这样有什么好处呢?资源隔离:不同的业务可以在不同的虚拟机上运行,互不干扰,达到资源隔离。动态伸缩:当我们不需要业务了,直接删除虚拟机,释放资源即可,十分方便。需要多少资源,就创建对应资源的虚拟机,动态伸缩性好。配置灵活:一台物理机上可以运行多个虚拟机,多个虚拟机可以安装不同的操作系统,如 Linux、macos、Ubuntu。易于迁移,如果物理主机 A 出现故障,A 上面的虚拟机可以迁移到物理主机 B 上去,这样不影响业务。当我们有了虚拟机后,我们就可以在虚机上安装相关应用了。你会发现,在虚机上安装相关应用这一步和我们在物理机上安装应用好像没什么区别,你的感觉是对的。这一步甚至根本不涉及到 PaaS 层,不要急,请跟着我的思路慢慢来。<br>2. 物理机与虚拟机我们安装一个软件是个什么流程呢?来一起对比一下物理机部署和虚拟机部署:先说物理机:在一台物理服务器上,我们需要安装操作系统,然后布置应用,如 redis,mysql,nginx,有以下几个缺点:部署慢成本高资源浪费难以迁移和扩展可能会被限定硬件厂商由于物理机的诸多问题,后来出现了虚拟机:一个物理机上可以部署多个虚拟机,一个虚拟机上运行一个 app。但是虚拟机还是有局限性,我们依然要在虚拟机上安装应用,这一步花费的时间和物理机没有差别。不仅如此,如果一个虚拟机上运行一个 app,这个 app 依赖的配置和 SDK 可能很少,但是我们却要为这个 app 创建出一个完整的操作系统来,这也太浪费资源了,这样的后果是物理主机创建不了多少个虚拟机就将资源耗尽。<br>3. 容器虚拟技术物理机和虚拟机都有局限,那么有人就思考了,安装应用需要依赖操作系统,一个操作系统可以安装多个应用。如果我将应用依赖的操作系统抽取出来,只跑一个应用,如 redis 和 mysql 两个数据库,对于操作系统的配置要求、SDK 依赖不一样,那么给 redis 抽取一个操作系统只包含 redis 独有的配置与 SDK 依赖,而给 mysql 抽取一个操作系统只包含 mysql 独有的配置与 SDK 依赖,那么我们就又实现了一层资源隔离,而且还节约资源了,因为不需要为一个 app 创建出完整的操作系统来。这就是容器虚拟技术的设想。app 就像运行在一个容器里面一样。你说会,这有啥用?仔细一思考,除了资源隔离和节约资源外确实没有太大进步。但是当结合 Union File System(联合文件系统)技术后,容器虚拟技术再也无可阻挡。在联合文件系统中,多个文件系统被按照特定的顺序进行层次化合并,形成一个虚拟的文件系统层次结构。当用户在这个虚拟的文件系统中访问文件或目录时,联合文件系统会根据预先设定的规则从各个底层文件系统中选择合适的文件或目录进行返回。在联合文件系统中,各个底层文件系统的文件和目录并不会被复制到新的文件系统中,而是通过符号链接或者其他方式进行引用,从而实现了文件系统的合并。关于 Union File System(联合文件系统)技术会在以后章节详细展开,这里不表。容器虚拟技术的好处3.1. 节省资源容器相对于虚拟机,容器只需要具备 app 运行的配置和 SDK 即可,不需要创建完整的操作系统,使用的资源大大减少。3.2. 资源隔离比如一个虚拟机,跑一个 app,如 redis,没什么问题。但是我想跑不同版本的 redis,那么配置是不是可能冲突,环境是不是受到了污染?而如果换用容器技术,一个容器就是一个小操作系统,一个虚拟机上可以跑多个容器,那么轻易实现了跑不同版本的 redis,而且还资源隔离,删除容器即卸载了对应版本,是不是非常方便。3.3. 安装时间大大缩短和灵活移植一个容器运行了 redis,对应的系统配置和 SDK 依赖都是一样的,那么如果我能将这个容器导出成文件格式,然后再另一台虚拟机上导入运行起来,这样是不是就节省了安装时间呢?没错,容器虚拟技术结合 Union File System(联合文件系统)技术就是这么做的。这样带来的效率提升简直无可言喻。开发以容器虚拟技术开发应用后,将其打包导出,直接交给测试,测试在自己的环境上导入并运行,直接就可以完成测试,大大缩短了应用开发周期。而测试人员完成应用测试后,将其导出,直接就可以上线工业环境,缩短了业务上线周期。甚至将文件开源,建立容器镜像库,全世界的人都可以使用,安装应用只需要下载对应镜像即可快速安装,大大减少了学习成本。<br>4. Docker 横空出世其中容器虚拟化技术以 Docker 为首,Docker 是基于 Go 语言实现的云开源项目,Docker 的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的 APP(可以是一个 WEB 应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。4.1 虚拟机技术与容器虚拟化技术对比虚拟机技术需要在宿主机上安装虚拟化软件,然后在虚拟化软件上安装操作系统和应用程序。每个虚拟机都有自己的操作系统内核和资源管理器,因此虚拟机可以运行不同版本的操作系统和应用程序。容器虚拟化技术则不需要虚拟化软件,而是在宿主机的操作系统上运行,共享主机的操作系统内核。每个容器都有自己的用户空间,但共享主机的内核和系统资源。虚拟机技术提供了更高的隔离性和安全性,因为每个虚拟机都运行在独立的环境中,并且可以配置不同的安全策略和网络设置。容器虚拟化技术虽然也提供了一定的隔离性,但容器之间仍然共享主机的操作系统内核和系统资源,因此容器之间可能存在潜在的安全风险。虚拟机技术需要更多的资源,例如内存和处理器,因为每个虚拟机都需要运行一个完整的操作系统内核和资源管理器。容器虚拟化技术则可以共享主机的操作系统内核和系统资源,因此需要更少的资源,并且可以更高效地运行。虚拟机技术通常需要更长的启动时间,因为需要启动完整的操作系统和资源管理器。容器虚拟化技术启动时间更短,因为只需要启动容器的用户空间。<br>5. PaaS 时代来临容器虚拟化技术大行其道后,传统业务全部容器化,享受到容器化技术的便捷,同时问题也随之而来,当容器越来越多时,容器的管理、编排成了大难题。容器的生命周期如何管理,容器故障如何监控,相互有依赖关系的容器如何部署等等问题。人们发现,需要借助一个平台来管理我们的容器,PaaS 时代随之来临。PaaS 平台其中以 Kubernetes 为代表。Kubernetes,简称 K8s,是一个开源的、用于管理云平台中多个主机上的容器化的应用平台,提供了应用部署,规划,更新,维护的一种机制。Kubernetes 可以自动化应用程序的部署、扩展和管理,并提供了一种通用的方式来管理容器化应用程序。它支持多种容器运行时,包括 Docker,可以运行在公共云、私有云和混合云环境中。<br>6. 业界实践搭建 IaaS 后,用于创建虚拟机,在虚拟机上部署 PaaS,用于管理同时部署在虚拟机上的容器,这就是业界普遍的云计算实践。当然我们也可以直接在物理服务器上构建 PaaS 集群,不需要再创建虚拟机。这种方式称为裸机部署模式,这是未来云计算发展的另一种趋势,好处就在于除去了虚拟机这一层,平台性能可以提升 30%。<br>面试题1. 容器技术的优势⭐⭐资源利用率高:容器使用的资源非常少,容器之间可以共享操作系统的内核,避免了多个虚拟机之间资源浪费和冗余,因此相比传统虚拟化技术可以更好地利用物理服务器的资源。快速启动和停止:由于容器本身就是轻量级的进程,因此容器可以非常快速地启动和停止。这使得容器技术非常适合用于动态伸缩和弹性扩展等场景。隔离性强:容器之间相互隔离,不会相互干扰,保证了应用程序的稳定性和安全性。同时,容器技术提供了多种隔离机制,例如网络隔离、文件系统隔离、进程隔离等。灵活性强:容器技术可以跨平台使用,支持多种操作系统和硬件架构,同时容器技术可以方便地将应用程序打包和分发,提高了应用程序的可移植性和可重复性。管理和部署简单:容器技术可以很方便地实现应用程序的管理和部署,容器镜像可以轻松地进行版本控制和更新,同时容器编排工具可以实现自动化部署和运维。2. 虚拟机技术与容器虚拟化技术对比⭐⭐虚拟机技术需要在宿主机上安装虚拟化软件,然后在虚拟化软件上安装操作系统和应用程序。每个虚拟机都有自己的操作系统内核和资源管理器,因此虚拟机可以运行不同版本的操作系统和应用程序。容器虚拟化技术则不需要虚拟化软件,而是在宿主机的操作系统上运行,共享主机的操作系统内核。每个容器都有自己的用户空间,但共享主机的内核和系统资源。虚拟机技术提供了更高的隔离性和安全性,因为每个虚拟机都运行在独立的环境中,并且可以配置不同的安全策略和网络设置。容器虚拟化技术虽然也提供了一定的隔离性,但容器之间仍然共享主机的操作系统内核和系统资源,因此容器之间可能存在潜在的安全风险。虚拟机技术需要更多的资源,例如内存和处理器,因为每个虚拟机都需要运行一个完整的操作系统内核和资源管理器。容器虚拟化技术则可以共享主机的操作系统内核和系统资源,因此需要更少的资源,并且可以更高效地运行。虚拟机技术通常需要更长的启动时间,因为需要启动完整的操作系统和资源管理器。容器虚拟化技术启动时间更短,因为只需要启动容器的用户空间。
点赞 8
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-02 22:52
北京理工大学 Java
双九混子的暑期总结
背景:本硕网安,此前无实习。 其实从去年七八月起,我就算开始准备实习了。但当时还在纠结选什么语言,实验室的项目也还没什么成果。就这样一拖再拖,拖到国庆后才正式开始学 Java,同时还得兼顾导师安排的比赛(用的正是我一直在做的那个项目)。一直拖到十一月初初赛结束,才勉强学完黑马的 Java SE。接着开始学 Java Web,边玩边学,直到十二月初才看完。 第一个比赛失利之后,导师又安排我参加另一个比赛的初赛(复用上一个比赛的成果)。之后我开始准备算法,跟着代码随想录的题单刷题,Redis 和后面的内容没系统学,最后是直接背的八股。这期间也一直在挑项目,挑着挑着就到了一月,勉强敲完了一个轮子项目...
点赞
评论
收藏
分享
今天 09:24
武汉大学 C++
面试凉经,又凉了好没意思啊
海康威视嵌入式面经随记起初兴致勃勃地投了海康,没想到还是挂在了二面,感觉整体难度还好但是自己当时没想起来。复盘了一下,很多考点其实是有规律可循的。备考建议:如果你也在准备嵌入式方向,推荐先系统过一遍这份面经 我也是看完之后才意识到自己哪里没准备到位的。一面(50min)Linux 中断流程,谈谈你对中断上下文的理解C 语言字节对齐的规则,为什么要字节对齐?进程间通信的方式,为什么分用户空间和内核空间?C++ 多态怎么理解?C++ 有哪些多态的典型例子?C 语言程序运行时的内存分配const 关键字的用法extern C 有什么用?为什么声明 C 语言环境?与 C++ 环境区别?delete [...
点赞
评论
收藏
分享
04-07 17:08
广东工业大学 Java
27届找后端开发,agent开发
要简历的不少,但没面😥同学都在实习,好焦虑😢
🐂1🐂2:
徐新曜你小时候我还抱过你呢
点赞
评论
收藏
分享
04-09 14:32
北京理工大学 Java
想找暑假的Java后端的日常实习,求指导
点赞
评论
收藏
分享
05-05 19:04
复旦大学 Java
我在大厂做 AI Agent 真实日常:和自学版完全两回事!
大家好,我是@程序员花海。最近后台好多同学问我,跟着网上教程把 Agent Demo 跑通了,RAG、工具调用、多轮对话都能实现,为什么一投简历没回音,面试稍微深挖一点就接不住?今天不聊通用学习路线,也不堆砌专业名词,就以我司做 AI Agent 的真实日常,跟大家掏心窝讲实话。企业里正经落地的业务级 Agent,和大家自己在家跟着教程写的 Demo,根本不是一个层级的东西,逻辑、标准、侧重点完全不一样。先说实话,绝大多数同学自学做的 Agent,只能叫可运行 demo,离公司线上真正能用的业务系统,差得不是一点半点,是整套工程化思维和落地标准的鸿沟。先说下很多人自学做 Agent 的常态。找...
XingHaozhe:
你知道每次打开牛客 看到花海的帖子的那种救赎感嘛
聊聊我眼中的AI
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
毕业了,有些话只能藏在心里了
3.9W
2
...
毕业啦!我们要一起去广州打拼啦!
3.6W
3
...
字节 中国交易与广告 后端一面
2.1W
4
...
从腾讯到阿里感,谢一路走来的自己
1.1W
5
...
从阿里被裁到快手升P6,我花了四年
9090
6
...
别人:阿里 字节 腾讯
8477
7
...
在携程的一天
7699
8
...
211本,130投0面,agent应用开发,简历求助!
7351
9
...
学院本拿下字节暑期offer!!!
7325
10
...
爸,你说的对,四年真的很快
7325
创作者周榜
更多
正在热议
更多
#
如果春招能重来,我会___
#
26999次浏览
270人参与
#
有深度的简历长什么样?
#
60461次浏览
768人参与
#
联宝杯大学生创新大赛,你的技术值得产业级答案
#
49002次浏览
603人参与
#
这个offer值得去吗?
#
27757次浏览
202人参与
#
刚入职就____,这样正常吗?
#
147359次浏览
707人参与
#
你会因为行情,降低找工作标准吗?
#
41670次浏览
308人参与
#
在爱玛,骑向未来
#
18560次浏览
360人参与
#
实习生的生存小技巧
#
36978次浏览
340人参与
#
美团笔试
#
990152次浏览
5815人参与
#
找工作,你都让AI帮你做什么?
#
34183次浏览
292人参与
#
记录我的毕业季
#
2854次浏览
76人参与
#
帆软软件工作体验
#
19478次浏览
134人参与
#
秋招想进国企该如何准备
#
147153次浏览
689人参与
#
实习生活中那些难忘的瞬间
#
345537次浏览
3450人参与
#
华为池子有多大
#
177135次浏览
924人参与
#
你见过最离谱的招聘要求是什么?
#
281556次浏览
1888人参与
#
字节开奖
#
157377次浏览
767人参与
#
实习怎么做才有更好的产出
#
50707次浏览
464人参与
#
租房找室友
#
68532次浏览
251人参与
#
阿里求职进展汇总
#
533243次浏览
4309人参与
#
春招前还要继续实习吗?
#
66629次浏览
326人参与
#
你被哪些公司挂了?
#
194152次浏览
1051人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务