云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)
云技术如何一步步演进的?
云原生解决了什么问题?
物理设备
电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。

这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机上,安装操作系统和应用软件,完成自己的工作。
后来,有了网络,单机与单机之间,可以交换信息,协同工作。

再后来,单机性能越来越强,就有了服务器(Server)。把一些服务器集中起来,放在机房里,然后让用户通过网络,去访问和使用机房里的计算机资源。

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

虚拟化
如果要对物理资源进行管理,第一步,就是“虚拟化”。
虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(VM,Virtual Machine)。
直接使用物理设备的缺陷:
- 缺乏灵活性
- 时间灵活性:生产或销毁资源、资源扩容、物理设备的供给流程及设备到货后的安装部署冗长;
- 空间灵活性:可获取到的资源规模大小不够灵活,如为应对计算资源峰值购买大量设备;
- 操作灵活性:设备上架、安装、配置都需要人工完成大量工作,大量的设备集群运维工作。
- 隔离性差:为了提高资源利用率,可能会将多个服务部署到同一个物理设备上,这可能会导致多个服务之间相互干扰、隔离性差,严重时甚至会造成安全问题。
- 不可复制:当一个物理设备上的应用需要扩展时,只能在增加物理设备后,再做一遍物理资源配置、应用发布、网络配置等重复性工作,无法快捷地实现对应用的复制和粘贴。
从表面来看,这些虚拟机都是独立的服务器,但实际上,它们共享物理服务器的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)”。

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

微服务:微服务的关键优势在于可组合性,将应用分解为一组更小的轻量级服务,而这些服务可通过应用编程接口 (API) 轻松组合并相互连接。
容器和编排:容器是轻量级的可执行组件,包含在任何环境中运行代码所需的所有元素(包括应用源代码和依赖项)。容器提供工作负载可移植性,支持“一次构建、随处运行”的代码,使开发和部署过程大大简化。由于它们可以独立部署,因此还有助于避免各种语言、库和框架之间的磨合。这种可移植性和灵活性使得容器成为构建微服务架构的理想选择。
DevOps:云原生应用的开发需要改为采用像 DevOps 这样的敏捷交付方法,开发者和 IT 运营团队就可以密切协作,自动执行基础架构和软件交付流程。DevOps 可以加快一个想法从提出到部署的整个过程。DevOps 的核心在于,在应用的整个生命周期中,都要确保日常运维任务自动化和环境的标准化,容器可以提供标准化的环境。
持续集成和持续交付 (CI/CD):通过该自动化流程,可以更快地修复、扩缩和部署系统。通过 CI/CD 流水线,可以自动构建、测试和部署应用更改,而无需安排停机时间或等待维护窗口。持续交付可确保软件发布更可靠、风险更低,从而使得团队可以更快速、更频繁地提供新的服务和功能。
采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
云原生解决了什么问题?
部署和扩展困难:传统软件部署通常需要手动配置和管理,而且在应对大规模流量时很难快速扩展。
环境一致性:开发、测试和生产环境之间的不一致性会导致问题的出现,因为应用在不同环境中的运行可能会产生不同的结果。
资源浪费:传统部署方式可能会导致资源的浪费,因为通常需要为应用的最高负载进行配置,而在低负载时会浪费资源。
恢复缓慢:基于虚拟机的基础设施相对于基于微服务的应用程序来说,是缓慢而低效的。因为单个虚拟机启动/关闭的速度很慢,并且在部署应用程序代码之前就会带来巨大的开销。
相关文章:
云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)
云技术如何一步步演进的? 云原生解决了什么问题? 物理设备 电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。 这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机…...
基于OGG实现Oracle实时同步MySQL
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...
〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
如何搭建zerotier服务器组网实现内网穿透
小白花了四天的下班时间终于把zerotier网络调通,此刻坐在桌前舒畅地喝口茶~~ 下面来详细记录下这几天踩的坑: 起因就在于一直在iPad上用向日葵连接公司电脑的我觉得向日葵的界面用的实在难受,vs code操作十分不灵光&…...
【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25
目录 什么是浅拷贝?浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝? 如果在一个类中没有人为定义拷贝函数,则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作,那这个简单的赋值操作我们一般…...
加速软件开发:自动化测试在持续集成中的重要作用!
持续集成的自动化测试 如今互联网软件的开发、测试和发布,已经形成了一套非常标准的流程,最重要的组成部分就是持续集成(Continuous integration,简称CI,目前主要的持续集成系统是Jenkins)。 那么什么是持…...
工具及方法 - 查找排名:国内网络作家排名
中国十大网络小说作家排名,在买购网的排名: 中国十大网络小说作家 网络小说作家排行榜 中国著名网络写手排名→MAIGOO生活榜 (这个网站里还有很多其他的排名。) 1,唐家三少 2,辰东 3,我吃西红…...
MySQL INSERT插入条件判断:如果不存在则插入
MySQL INSERT插入条件判断:如果不存在则插入(转) 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条INSERT语句实现呢? ####普通的 INSERT INTO 插入&…...
CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU
目录 高精度ADC工业应用工业数据采集应用CSM32RV003简介主要特性 高精度ADC工业应用 高精度ADC即高精度模数转换器,是一种能够将输入模拟信号转换为数字信号的芯片,在多种消费电子、工业、医疗和科研领域都有广泛应用。高精度ADC的主要特点是能够提供高…...
65道常问前端面试题总结react
面试题总结 一.Axios的实现原理 Axios 是一个基于 Promise 的 HTTP 客户端库,用于浏览器和 Node.js 环境。它可以发送 HTTP 请求并处理响应数据。下面是 Axios 实现的基本原理: 封装请求:Axios 提供了一个简单易用的 API,使得开…...
单片机学习1——点亮一个LED灯
Keil软件编写程序: 特殊功能寄存器声明: #include<reg52.h>sbit LED P1^0;void main() {LED 0;while(1); } 代码说明: sbit 语句是特殊功能位声明。 生成HEX文件,这个文件是下载到单片机里的文件。Options for Target…...
PyCharm 配置sqlite3驱动下载问题
单击View -> Tool Windows -> Database,打开Database窗体,之后进行配置,下载驱动包失败! 解决 (1)下载Sqlite3驱动 下载地址: Central Repository: org/xerial/sqlite-jdbc 选择的版本是3.34.0,下载…...
NVMe-oF E-JBOF设计解析:WD RapidFlex网卡、OpenFlex Data24
OpenFlex Data24 NVMe-oF Storage Platform WD的SN840 NVMeSSD新品并没有太吸引我注意,因为它还是PCIe 3.0接口的,要知道Intel的PCIe 4.0 SSD都已经推出了。 但上面这个NVMe-oF(NVMe over Fabric)EBOF(区别于普通JBO…...
visual studio 下的git
我这个是看视频笔记 YouTube : https://www.youtube.com/watch?vgkDASVE_Hdg 主要内容是:建立git 库, 保存commit, 建立分支 create branch, 合并分支merge branch,比较 diff,Revert ,history,delete branch, rename branch, t…...
[架构之路-249]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化方法的需求分析
目录 一、概述 二、数据模型:E-R图/实体关系图(数据单元之间的结构关系) 三、功能模型:数据流图DFD(逻辑运算,包括输入和输出,实体之间的关系):输入》处理 》 输出 四…...
Django之中间件与CSRF_TOKEN
文章目录 一、什么是中间件二、中间件有什么用三、Django自定义中间件中间件中主要方法及作用创建自定义中间件的步骤:process_request与process_response方法process_view方法process_exceptionprocess_template_response(不常用) 四、CSRF_…...
柑橘病害数据集(四类图像分类,没有打yolo标签)
1.文件夹分为训练集和测试集 在这个数据集中,有一类是新鲜柑橘,还有另外三种疾病,溃疡病、黑斑病和绿化病。 2.train文件夹 2.1.blackspot(黑斑病) 文件夹 206张照片 2.2.canker(溃疡病) 文…...
面向对象三大特性:封装,继承,多态;多态的机制;以及多态是如何实现的,实现的必要条件
文章目录 面向对象三大特性2.1.1 封装 继承 多态2.1.2 其中Java 面向对象编程三大特性:封装 继承 多态2.1.3 关于继承如下 3 点请记住:2.1.4 什么是多态机制?Java语言是如何实现多态的?2.1.5 Java实现多态有三个必要条件ÿ…...
Unity-类-Vector
Vector矢量 是一个基本的数学概念,它允许你描述方向和大小。在游戏和应用中,矢量通常用于描述一些基本属性,如角色的位置、物体移动的速度或两个物体之间的距离。 矢量算术是计算机编程很多方面(如图形、物理和动画)的基础,深入了解这一主题对于充分发挥 Unity 的功能很有…...
【腾讯云云上实验室】向量数据库相亲社交应用实践
快速入口 👉向量数据库_大模型知识库_向量数据存储_向量数据检索- 腾讯云 (tencent.com) 文章目录 前言1. 向量数据库概念及原理1.1 向量数据库概念1.2 向量数据库核心原理1.3 向量数据库优缺点1.4 向量数据库与传统数据库的区别 2. 腾讯云向量数据库的基本特性及优…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
