首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
11-22 22:57
中南大学 Java
大学时光如果能重来,我会这样做
大学时光如果能重来,我会这样做:每天6小时准备考研、6小时准备考公,剩余12小时用于休息、玩耍和应付学业。什么啥比互联网,狗都不去的地方。这时候肯定有人跳出来狗叫,说什么“车门焊死”、“分蛋糕”云云,对此我只想说:大傻春,你和别人不一样,对别人我都是劝退互联网的,对你我只能说赶紧来吧!为什么劝退互联网?因为互联网远远没有大家想象中的那么美好,甚至没有大家想象的能攒那么多钱,大学生过于神话互联网了!为此我不得不出来给大家打个清醒剂。举个大家都能理解的例子:各个大厂都在搞AI,每个大厂的每个部门也都在拼命往AI上靠,目的是啥?提效吗?提效了吗?我只能说如提!真正原因有2个:1.大领导喜欢AI这个小...
你知道哪些职场黑话?
点赞
评论
收藏
分享
11-21 13:38
已编辑
北京工业大学 Web前端
前端面试官为什么要问埋点?
最近在辅导同学准备春招/实习时,发现很多同学项目都写了埋点监控。埋点看似简单,because你调用个sdk,跟fetch一样用但是众所周知,带厂就喜欢搞花里胡哨的问法,不仅可以涉及具体的技术实现(如 sendBeacon、IntersectionObserver),更考验你对 业务的理解(埋什么)、对 性能的权衡(何时发)、对 数据准确性 的保障(如何不丢数据)以及 系统设计 的能力(如何设计一个SDK)。这份总结将带你从浅入深,逐一击破这些考点。1. 基础概念与价值 (What & Why)面试官会先从基础问题入手,判断你是否理解埋点的核心目的。什么是前端埋点?你为什么要做埋点?考察...
大家都开始春招面试了吗
点赞
评论
收藏
分享
10-28 17:30
已编辑
华东交通大学 Java
这对吗?怎么感觉是pz
1.邮件没通知2.测评没发3.笔试没发
iori2333:
这太正常了 我字节面了四五轮 没有一次是在官网投递 都是hr主动捞
秋招笔试记录
点赞
评论
收藏
分享
11-22 22:19
电子科技大学 Java
苍穹外卖学习笔记day01
项目结构nginx反向代理将前端的动态请求转发给后端服务器。前后端之间的一个管理服务器,通过管理请求转发可以实现:提高访问速度;进行负载均衡;保证后端服务安全。登录密码的安全问题->MD5加密方式【DigestUtils.md5DigestAsHex(password.getBytes())】新增员工管理端接口:/admin/employee整体逻辑:EmployeeController:获取前端请求->调用Service层方法->返回Result对象使用DTO对象接收:前端提交数据与实体类属性相差较大。@RequestBody注解:由于前端提交的是JSON数据(通常是POS...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
玩脱了,偷走老板4万块
1474
2
...
大家不是好奇自己的面评长什么样子吗?
1452
3
...
【现金奖励】26秋招薪资爆料征集,瓜分现金红包!
1443
4
...
最恐怖的一集 测开也卷了
1435
5
...
挑战一篇讲完实习转正
1417
6
...
互联网大厂程序员?我祛魅了
1153
7
...
给我的文献出处链接是yellow小网站
1070
8
...
大厂面试官:实习期间有没有参与处理过线上问题?拿走直接抄答案!
964
9
...
28届一直想找实习但是不敢开始怎么办
961
10
...
字节谈薪经验帖
941
创作者周榜
更多
正在热议
更多
#
OC/开奖
#
207733次浏览
1375人参与
#
找实习是选平台还是选业务?
#
1362次浏览
20人参与
#
百度秋招
#
53524次浏览
391人参与
#
秋招疯了,看什么都像offer
#
18706次浏览
130人参与
#
记录实习开销
#
165685次浏览
641人参与
#
你面试时吹过最大的牛
#
5199次浏览
27人参与
#
小红书开奖了
#
37340次浏览
187人参与
#
科大讯飞工作体验
#
29729次浏览
73人参与
#
应届生第一份工作最好去大厂吗?
#
85442次浏览
881人参与
#
材料转码还有必要吗?
#
32659次浏览
153人参与
#
华为工作体验
#
243812次浏览
1304人参与
#
实习学到最有价值的工作习惯
#
41909次浏览
366人参与
#
办公室恋情是职场大忌吗
#
10789次浏览
21人参与
#
设计人的面试记录
#
167569次浏览
1546人参与
#
华为池子有多大
#
124916次浏览
811人参与
#
你知道哪些职场黑话?
#
65373次浏览
454人参与
#
电信求职进展汇总
#
29224次浏览
158人参与
#
招银网络科技工作体验
#
26023次浏览
95人参与
#
实习生应该准时下班吗
#
318148次浏览
1718人参与
#
研究所VS国企,该如何选
#
226541次浏览
1944人参与
#
CVTE求职进展汇总
#
26972次浏览
327人参与
#
移动求职进展汇总
#
14228次浏览
119人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务