云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)

云技术如何一步步演进的?
云原生解决了什么问题?

物理设备

电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。
看懂云计算、虚拟化和容器,这一篇就够啦

这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机上,安装操作系统和应用软件,完成自己的工作。

后来,有了网络,单机与单机之间,可以交换信息,协同工作。

看懂云计算、虚拟化和容器,这一篇就够啦
再后来,单机性能越来越强,就有了服务器(Server)。把一些服务器集中起来,放在机房里,然后让用户通过网络,去访问和使用机房里的计算机资源。
请添加图片描述

再后来,小型网络变成了大型网络,就有了互联网(Internet)。小型机房变成了大型机房,就有了IDC(Internet Data Center,互联网数据中心)。
当越来越多的计算机资源和应用服务被集中起来,就变成了——“云计算(Cloud Computing)”。无数的大型机房,就成了“云端”。
请添加图片描述

虚拟化

如果要对物理资源进行管理,第一步,就是“虚拟化”。

虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(VM,Virtual Machine)。

直接使用物理设备的缺陷:

  1. 缺乏灵活性
  • 时间灵活性:生产或销毁资源、资源扩容、物理设备的供给流程及设备到货后的安装部署冗长;
  • 空间灵活性:可获取到的资源规模大小不够灵活,如为应对计算资源峰值购买大量设备;
  • 操作灵活性:设备上架、安装、配置都需要人工完成大量工作,大量的设备集群运维工作。
  1. 隔离性差:为了提高资源利用率,可能会将多个服务部署到同一个物理设备上,这可能会导致多个服务之间相互干扰、隔离性差,严重时甚至会造成安全问题。
  2. 不可复制:当一个物理设备上的应用需要扩展时,只能在增加物理设备后,再做一遍物理资源配置、应用发布、网络配置等重复性工作,无法快捷地实现对应用的复制和粘贴。

从表面来看,这些虚拟机都是独立的服务器,但实际上,它们共享物理服务器的CPU、内存、硬件、网卡等资源。
在这里插入图片描述请添加图片描述

虚拟机监视器可以对捕获的特权指令进行替换操作,从而完整地模拟出某个虚拟机监视器下的特权操作。“陷阱+模拟”机制从本质上保证了可影响虚拟机监视器正常运行的指令由虚拟机监视器模拟执行,而大部分非敏感指令还是照常运行在物理CPU上。
请添加图片描述

简单来说,虚拟化就是通过模仿下层原有的功能模块创造接口来“欺骗”上层的机制。通常的做法是在整个系统架构中增加一个抽象层,负责分割下层的物理资源,然后组合成逻辑资源供上层使用。

云计算

直接使用虚拟机的缺陷:

  • 时间灵活性:虚拟化服务并非随时可用,同时虚拟化的过程还需要比较复杂的人工配置,随着集群规模的扩大,人工配置愈加复杂、耗时。所以,仅通过虚拟化软件管理的物理服务器规模并不是特别大,一般是几十台至百台的规模。

  • 空间灵活性:缺乏分布式部署,无法实现资源弹性扩展。当用户数量增多时,虚拟化软件所能管理的集群规模远未达到理想的程度,很可能造成资源不够。所以,随着对集群规模的需求越来越大,必须采取自动化的流程来实现资源弹性扩展。

  • 操作灵活性:缺乏统一的自动化管理。虽然创建一台虚拟机的过程相对较为基础,但是操作的灵活性意味着用户可以更方便、迅速地对资源进行更进一步的管理操作,所有操作都可以通过自动化脚本来实现。

云计算的目标,就是解决这三大灵活性的问题。云控制平台通过调度器(Scheduler)来管理由几千台物理服务器抽象而来的虚拟资源池,无论用户需要多少CPU、内存、硬盘资源的虚拟机,调度器都会自动在资源池中匹配到最合适的资源,通过虚拟机的形式供给资源,并做好配置。这个阶段我们称为“池化”或者“云化”。虚拟化的能力和灵活性到了这个阶段,才可以被称为“云计算”,在这之前都只能叫作“虚拟化”。

什么是云计算?

云计算指IT基础设施的交付和使用模式,用户可以通过网络,以按需、易扩展的方式获得所需计算机资源。

第一层次,是最底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源),还有网卡(网络资源)等。

第二层次,用户不直接使用CPU、硬盘、网卡,厂商把操作系统(例如Windows、Linux)装好,把数据库软件装好,用户直接使用。

第三层次,厂商不但要装好操作系统这些基本的,还要把具体的应用软件装好,例如FTP服务端软件、在线视频服务端软件等,用户可以直接使用服务。

IaaS: Infrastructure-as-a-Service(基础设施即服务)

用户可以通过管理页面或者API创建一台EC2实例(虚拟机),然后直接通过浏览器或者通过SSH客户端登录控制台,而不再需要考虑物理服务器购买、网络的布线、操作系统安装等烦琐的传统IT基础运维工作。
请添加图片描述
请添加图片描述

PaaS: Platform-as-a-Service(平台即服务)

它直接为用户提供一套平台,包括语言运行环境、编程框架及数据存储中间件等一系列功能。这个平台可以是Java开发平台,用户只需要在遵守平台开发规范的前提下,编写自己的业务代码,单击运行,平台就会自动完成代码编译和打包,以及程序所需的数据存储(例如MySQL),即通过调用SDK或者API就可以使用平台,使得用户可以更加关注自己的业务代码的编写。
请添加图片描述

SaaS: Software-as-a-Service(软件即服务)

它是最高层的抽象,对于最终用户,它不关心任何技术相关内容,以服务的方式交付。我们使用的在线云编辑器就是一种SaaS服务,只需要通过浏览器就可以在线编辑Word或者PPT,并且可以云端保存,而且只要在能够连接到互联网的情况下,都可以编辑,用户不需要关心背后的实现细节。SaaS将应用的最终形态直接交付使用者,向用户暴露更少的技术细节。

看懂云计算、虚拟化和容器,这一篇就够啦

容器化

使用虚拟化一段时间后,发现它存在一些问题:不同的用户,有时候只是希望运行各自的一些简单程序,跑一个小进程。为了不相互影响,就要建立虚拟机。如果建虚拟机,显然浪费就会有点大,而且操作也比较复杂,花费时间也会比较长。而且,有的时候,想要迁移自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂。所以就引入了“容器(Container)”。
请添加图片描述

容器也是虚拟化,但是属于“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造“隔离环境”。但是,它又和虚拟机有很大的不同——虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。

容器与传统虚拟机的对比

  1. 传统虚拟机是需要安装整个操作系统的,然后再在上面安装业务应用,启动应用,通常需要几分钟去启动应用,而容器是直接使用镜像来运行业务容器的,其容器启动属于秒级别;
  2. 容器需要的资源更少,容器在操作系统级别进行虚拟化,容器容器和内核交互,几乎没有性能损耗,而虚拟机运行着整个操作系统,占用物理机的资源就比较多;
  3. 容器更轻量,容器(docker)的架构可以共用一个内核与共享应用程序库(yum),所占内存极小;同样的硬件环境,容器运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
  4. 隔离级别,与虚拟机相比,容器隔离性更弱,属于进程之间的隔离,虚拟机可实现系统级别隔离;
  5. 容器的安全性也更弱,容器的租户root和宿主机root相同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;
  6. 虚拟化创建是分钟级别的,容器创建是秒级别的,容器的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;

云原生是什么?

Pivotal最新官网对云原生概括可以具体化为4个要点:DevOps+持续交付+微服务+容器,一种构建和运行应用程序的方法。
请添加图片描述

微服务:微服务的关键优势在于可组合性,将应用分解为一组更小的轻量级服务,而这些服务可通过应用编程接口 (API) 轻松组合并相互连接。

容器和编排:容器是轻量级的可执行组件,包含在任何环境中运行代码所需的所有元素(包括应用源代码和依赖项)。容器提供工作负载可移植性,支持“一次构建、随处运行”的代码,使开发和部署过程大大简化。由于它们可以独立部署,因此还有助于避免各种语言、库和框架之间的磨合。这种可移植性和灵活性使得容器成为构建微服务架构的理想选择。

DevOps:云原生应用的开发需要改为采用像 DevOps 这样的敏捷交付方法,开发者和 IT 运营团队就可以密切协作,自动执行基础架构和软件交付流程。DevOps 可以加快一个想法从提出到部署的整个过程。DevOps 的核心在于,在应用的整个生命周期中,都要确保日常运维任务自动化和环境的标准化,容器可以提供标准化的环境。

持续集成和持续交付 (CI/CD):通过该自动化流程,可以更快地修复、扩缩和部署系统。通过 CI/CD 流水线,可以自动构建、测试和部署应用更改,而无需安排停机时间或等待维护窗口。持续交付可确保软件发布更可靠、风险更低,从而使得团队可以更快速、更频繁地提供新的服务和功能。

采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

云原生解决了什么问题?
部署和扩展困难:传统软件部署通常需要手动配置和管理,而且在应对大规模流量时很难快速扩展。
环境一致性:开发、测试和生产环境之间的不一致性会导致问题的出现,因为应用在不同环境中的运行可能会产生不同的结果。
资源浪费:传统部署方式可能会导致资源的浪费,因为通常需要为应用的最高负载进行配置,而在低负载时会浪费资源。
恢复缓慢:基于虚拟机的基础设施相对于基于微服务的应用程序来说,是缓慢而低效的。因为单个虚拟机启动/关闭的速度很慢,并且在部署应用程序代码之前就会带来巨大的开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/183754.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中Shader的Standard材质解析(一)

文章目录 前言一、在Unity中,按一下步骤准备1、在资源管理面板创建一个 Standard Surface Shader2、因为Standard Surface Shader有很多缺点,所以我们把他转化为顶点片元着色器3、整理只保留主平行光的Shader效果4、精简后的最终代码 前言 在Unity中&am…

小程序可拖拽按钮

你有没有遇到过在页面中有一个固定在某个位置的按钮,永远的挡住了你想要看的区域? 在小程序的列表页面中,常常会有一个提报的入口固定在右下角,如果这个按钮不可拖动的话,可能会挡住下面的事件,让用户操作起…

嵌入式系统在工业自动化中的智能化和自适应控制

嵌入式系统在工业自动化中扮演着实现智能化和自适应控制的重要角色。通过集成先进的算法和人工智能技术,嵌入式系统能够实现对生产过程的智能监控、分析、决策和调整,以提高生产线的效率、质量和稳定性。下面将详细介绍嵌入式系统在工业自动化中智能化和…

【C++】标准模板库STL作业(其二)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

红队攻防实战之钉钉RCE

我这一生如履薄冰,你说我能走到对岸吗? 本文首发于SecIN社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不…

为什么985、211学生都要争着抢着学Python?

最近刚开学不久,各位新进入大学的新生给学长留了这样一条留言: “以前听说读完高中大学可以好好玩,结果每个人开学都“卷”起来,我简直慌得一批!” 原来,大家把摆烂挂在嘴边,背地里都在疯狂努…

产品经理面试必看!To B和To C产品的隐秘差异,你了解多少?

大家好,我是小米,一位对技术充满热情的产品经理。最近在和小伙伴们交流中发现一个热门话题:To B(面向企业)和To C(面向消费者)的产品经理究竟有何异同?这可是我们产品经理面试中的经…

基于springboot实现家乡特色推荐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现家乡特色推荐系统演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步…

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本,但用了vue3 setup的语法; 注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。 处理方案: 1、对router-view加上ref template修改 直接对router-view加上ref&#x…

字符串函数的模拟实现(strlen,strcpy,strcat,strcmp,strstr)(图文并茂,清晰易懂)

目录 1. strlen函数2. strcpy函数3. strcat函数4. strcmp函数5. strstr函数 个人专栏: 《零基础学C语言》 1. strlen函数 strlen函数(Get string length)的功能是求字符串长度 使用注意事项: 字符串以 ‘\0’ 作为结束标志&…

品牌线上窜货查的出来吗

如果窜货不治理会出现什么局面,显见的当然是渠道混乱,低价丛生,严重的还会导致真假混卖,最后所有的后果都会由品牌承担,口碑的影响是必然的,那品牌的衰败也会是一种趋势,所以治理窜货是品牌发展…

毛里塔尼亚市场开发攻略,收藏一篇就够了

毛里塔尼亚是非洲西北部的一个国家,也是中国长期援建的一个国家,也是一带一路上的国家。毛里塔尼亚生产生活资料依赖进口,长期依赖跟我们国家的贸易关系也是比较紧密的,今天就来给大家介绍一下毛里塔尼亚的市场开发公路。文章略长…

vue2【组件的构成】

目录 1:什么是组件化开发 2:vue中的组件化开发 3:vue组件的三个组成部分 4:组件中定义方法,监听器,过滤器,计算属性节点。 5:template中只允许唯一根节点,style默认…

二次开发问题汇总【C#】

1未将对象引用到实例。 接口函数的参数不对。解决办法【用fixed去限制数组长度】 unsafe public struct VCI_BOARD_INFO {public UInt16 hw_Version;public UInt16 fw_Version;public UInt16 dr_Version;public UInt16 in_Version;public UInt16 irq_Num;public byte can_Num;…

高浓度化工废水如何处理

高浓度化工废水的处理一直是一个备受关注的社会问题。随着化工行业的不断发展,化工废水的排放量也逐渐增加。因此,我们需要找到一种有效的方法来处理这种高浓度化工废水,以保护环境和人民的健康。 首先,我们可以采用物理方法处理…

基于springboot实现农机电招平台系统项目【项目源码+论文说明】

基于springboot实现农机电招平台系统演示 摘要 随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算…

2015年7月28日 Go生态洞察:GopherCon 2015综述

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

选择振弦采集仪:易操作、快速数据传输和耐用性是关键要素

选择振弦采集仪:易操作、快速数据传输和耐用性是关键要素 振弦采集仪是一种可以测量和记录振动、冲击、声音等信号的设备。它是目前工程、科研、医学、环保等领域中常见的一种测试设备。在选择振弦采集仪时,易操作、快速数据传输和耐用性是关键要素。 易…

VUE项目部署过程中遇到的错误:POST http://124.60.11.183:9090/test/login 405 (Not Allowed)

我当初报了这个405错误,再网上查了半天,他们都说什么是nginx部署不支持post访问静态资源。 但后面我发现我是因为另一个原因才导致的无法访问。 我再vue中有使用devServer:{ proxy:{} }进行路由转发。 但是!! 在这个配置只…