当前位置: 首页 > news >正文

详解云桌面3种主流架构

本文简要介绍下云桌面(云电脑)的3种主流架构:VDI、IDV和VOI,概念、原理和区别,欢迎阅读。

云桌面作为桌面办公和云计算融合发展的产物,在一定程度上替代了传统的办公形式。目前阿里云、华为云、移动云、电信云,还有华三、锐捷、中兴等互联网大厂都在积极布局该领域。

云桌面的技术原理

总体来讲,云桌面和云主机、云手机、云游戏等其他形式的云产品类型是一样的,都是采用虚拟化技术。

首先,我们会采购一大批的计算资源、存储资源和网络资源,比如各种类型的服务器、显卡、网关、路由器、交换机、网线等等。

然后我们为服务器做LLD、做硬集建设(上架、通电、通网),紧接着会做软集建设(安装底层操作系统、做虚拟化、搭建云管平台)。

最后我们会将虚拟化后的产品做成产品,通过IaaS、PaaS、SaaS等形式对外提供服务。

对于云桌面产品来讲,类似于我们在云端部署了一台电脑,通过网络下发给租户。租户需要有个设备作为显示终端,比如瘦终端、胖终端或者零终端。

终端设备在使用时,通过IO设备上行控制指令,待云端虚拟机运算后,会将计算结果下发到用户侧显示。

下面介绍下云电脑最常见的虚拟化架构,即:服务器端和客户端是如何分工合作的。

VDI架构

VDI架构是采用最多的一种形式,它是一种前轻后重的架构。在VDI架构中,所有的计算、存储任务都放在云上完成。客户端只作为一种IO设备和显示设备。

可以说VDI的架构对客户端的性能作出了很大的解放,用户不需要在终端设备上花费高昂的成本。比较适合网络条件较好、有较高接入密度要求的办公场景。

VDI的结构其实也存在一些缺陷,由于计算和存储都放在云端,所以不支持离线办公,对网络的要求会高一些。另外,VD方案的外设(鼠标、键盘、打印机、扫描仪等)兼容性稍微弱一些,大概有90%~95%的兼容率。

IDV结构

IDV结构会将全部或者部分的计算、存储功能放在终端完成。镜像管理、身份认证和策略管理等功能放在云桌面来做。

实际上这种方式终端的要求还是比较高的,因为虽然策略放在云端,但是计算、存储需要大量的计算都是在终端完成。

也就是说:需要一款胖终端!比如我们平时用的笔记本、台式机,安装一个云电脑的客户端软件,数据本地处理。

或许有人会说:“对于IDV的方式,既然需要电脑这样的胖终端,我还花钱用云电脑干嘛?” 也有一定的道理,有些策略、身份管理功能在某些场景下有集中管理的要求,可以用这种方式来做。

IDV因为需要胖终端,适用场景稍微少一些,市场普及率并不高。相较于VDI的方式,它的优点是:支持离线。

VOI架构

VOI架构又称为虚拟操作系统架构,核心是“集中存储、分布计算”。说直白一点就是:各种策略、认证放在云端,存储也放在云端,但是计算的功能放在客户端完成。

VOI的方式跟VDI方式相比,将计算功能分布式、下发到客户端完成,对客户端的计算能力有课更高的要求。对存储没有要求,客户端此时类似于一个无盘工作站。

与IDV相比,释放了存储的压力,但同时增加了网络的依赖。设想一下:如果长时间断网的情况下,会引起系统缓存溢出,导致数据丢失。

所以,有些情况下,我们可以将VDI和VOI方式进行融合,分场景提供针对性的解决方案。

总结

以上是关于桌面虚拟化的原理,以及常用的3种云桌面方案VDI、IDV和VOI的相关介绍。在市场上我们通常应用最多的是VDI的方案,尽管存在对网络依赖较高、对服务器运算和存储性能要求较高,以及外设兼容性差的问题。相信,随着技术的进一步发展,今天看似难以处理的问题都会迎刃而解。

相关文章:

详解云桌面3种主流架构

本文简要介绍下云桌面(云电脑)的3种主流架构:VDI、IDV和VOI,概念、原理和区别,欢迎阅读。 云桌面作为桌面办公和云计算融合发展的产物,在一定程度上替代了传统的办公形式。目前阿里云、华为云、移动云、电…...

java实现预览服务器文件,不进行下载,并增加水印效果

通过文件路径获取文件,对不同类型的文件进行不同处理,将Word文件转成pdf文件预览,并早呢更加水印,暂不支持Excel文件,如果浏览器不支持PDF文件预览需要下载插件。文中currentUser.getUserid(),即为增加的水…...

【YOLO 项目实战】(12)红外/可见光多模态目标检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】(10)YOLO8 环境配置与推理检测 【YOLO 项目实战】(11)YOLO8 数据集与模型训练 【YOLO 项目实战】(12)红外/可…...

csrf跨站请求伪造(portswigger)无防御措施

前言:基础csrf学习(没有任何防御措施) 内容来自portswigger,一个靶场练习,国外的网站,可能需要翻墙 要使 CSRF 攻击成为可能,必须满足三个关键条件: 相关操作。应用程序中存在攻击…...

究极炫酷3D立方体宇宙

演示动画:https://life.mdjsjd.me/2024/12/27/3d-cube-animation/ 一个使用Python和Pygame制作的炫酷3D立方体动画效果。结合了多种视觉特效,包括: 动态旋转的3D立方体炫彩渐变的颜色系统星空背景粒子效果动态残影拖尾效果深度透视投影 主要特性 动态变换: 立方…...

node.js之---集群(Cluster)模块

为什么会有集群(Cluster)模块? 集群(Cluster)模块的作用 如何使用集群(Cluster)模块? 为什么会有集群(Cluster)模块 Node.js 是基于 单线程事件驱动 模型的…...

PTA数据结构作业四

7-10 判断两点之间是否存在路径 本题要求输出两个顶点之间是否存在路径 输入格式: 输入包括两部分,第一部分是邻接矩阵表示方法中对应1的两个顶点,用0 0 表示结束 第二部分是两个顶点,例如 Vi和Vj 输出格式: 如果Vi和Vj存在路径,输出1;否则输出0 输入样例: 0 1 1 0…...

Spring-kafka快速Demo示例

使用Spring-Kafka快速发送/接受Kafka消息示例代码&#xff0c;项目结构是最基础的SpringBoot结构&#xff0c;提前安装好Kafka&#xff0c;确保Kafka已经正确启动 pom.xml&#xff0c;根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…...

Java开发工具-Jar命令

Java开发工具-Jar 1、jar命令全平台使用 2、jar命令的作用 为类和资源创建存档&#xff0c;并从存档中操作或恢复单个类或资源 3、摘要 jar [OPTION …] [ [–release VERSION] [-C dir] files] … 4、jar命令描述 jar命令通常作为用于压缩与解压的工具&#xff0c;基于ZIP或Z…...

flux文生图模型实践

flux文生图模型实践 flyfish https://github.com/black-forest-labs/flux Black Forest Labs发布FLUX.1 Tools&#xff0c;这是一套模型全家桶&#xff0c;旨在为FLUX.1基础文本转图像模型添加控制和可操纵性&#xff0c;从而实现对真实图像和生成图像的修改和重新创建。FLU…...

Lecture 19

冯诺依曼模型 (The von Neumann Model) 核心概念&#xff1a; 1. 冯诺依曼模型的基本结构&#xff1a; • 该模型描述了现代计算机的基本结构&#xff0c;包含以下关键组件&#xff1a; • 输入设备 (Input device)&#xff1a; • 用于从用户向计算机传递信息&#xff0c;…...

学习EDK2显示图片

原本想看看Logo是怎么显示的&#xff0c;但是发现可以通过EDK显示Logo的方式显示图片&#xff0c;因为我发现它并没有解码函数&#xff0c;就是写个Driver,代码会有点乱&#xff0c;我后面会整理后修改的。 在MdeModulePkg下&#xff0c;我们可以找到Logo此文件夹。 Logo.ibf中…...

MYSQL如何重置root密码

如果您从未为MySQL分配root密码&#xff0c;则服务器根本不需要以root身份连接的密码。但是&#xff0c;这是不安全的。建议一定要设置root密码。 如果您知道root密码并想要更改它&#xff0c;推荐使用ALTER USER user IDENTIFIED BY auth_string; 如果您之前分配了root密码但…...

基于Python实现车辆检测、机动车检测、识别位置标记、计数

目录 引言背景与应用场景车辆检测的研究意义相关工作车辆检测概述机动车检测方法分类基于传统计算机视觉的检测方法基于深度学习的检测方法技术与方法车辆检测技术概述基于Python的车辆检测方法图像处理与特征提取深度学习方法(如YOLO、SSD、Faster R-CNN等)数据集与标注常用…...

277-基于八路256Ksps 24bit AD生物电震动检测FMC子卡

一、板卡概述 板卡基于AD7768 AD芯片设计的八路低速采集的FMC 子卡&#xff0c;支持直流耦合&#xff0c;产品应用于生物电、脑电波、声音&#xff0c;震动等信号采集。 二、板卡参数及性能 板卡功能 参数 内容 ADC 芯片型号 AD7768 路数 8路ADC&#xff0c; 采样率 2…...

连接Milvus

连接到Milvus 验证Milvus服务器正在侦听哪个本地端口。将容器名称替换为您自己的名称。 docker port milvus-standalone 19530/tcp docker port milvus-standalone 2379/tcp docker port milvus-standalone 192.168.1.242:9091/api/v1/health 使用浏览器访问连接地址htt…...

GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目

如果你是一名开发者&#xff0c;经常处理数据或参与项目管理&#xff0c;那么这篇文章绝对值得收藏&#xff01;当你需要一个高效、易用的管理后台&#xff08;Admin Dashboard&#xff09;项目时&#xff0c;本文会给你灵感。 在现代企业管理和业务运营中&#xff0c;管理后台…...

C++ 实现map容器从大到小排序

map容器默认从小到大排序 利用仿函数可以修改map容器的排序规则为从大到小 示例&#xff1a; #include<iostream> #include<string> #include<map> using namespace std; class MyCompare { public: bool operator()(const int v1, const int v2) co…...

vue项目利用webpack进行优化案例

使用 Webpack 优化 Vue 项目是提升性能和减少打包体积的关键步骤。以下是几个常见的优化案例及其详细实现方法&#xff1a; 1. 优化打包大小 1.1 按需加载 (Lazy Loading) Vue 提供了路由懒加载功能&#xff0c;可以将组件拆分成独立的块&#xff0c;按需加载&#xff0c;从而…...

centos双网卡不能上网

双网卡类型 ens33 仅主机 ens34 NAT 问题 window配置一切正常&#xff0c;虚拟机不能上网 解决 方案1&#xff1a;路由引起 查看路由 route结果如下&#xff1a; [rootdata-repository ~]# route Kernel IP routing table Destination Gateway Genmask …...

十个Scala的小知识

# 1. 与Java的互操作性 Scala与Java有很好的互操作性。可以在Scala项目中直接使用Java类库&#xff0c;也可以将Scala代码编译后供Java项目使用。例如&#xff0c;一个Java框架可以轻松地集成Scala编写的代码模块。 # 2. 强大的集合库 Scala拥有功能丰富的集合库。像List、Se…...

Redis Stream:实时数据处理的高效解决方案

Redis Stream&#xff1a;实时数据处理的高效解决方案 引言 在当今这个数据驱动的时代&#xff0c;实时数据处理对于各种应用场景都至关重要。Redis&#xff0c;作为一个高性能的键值存储系统&#xff0c;自然也紧跟这一趋势&#xff0c;推出了Redis Stream——一种用于处理实…...

Bert中文文本分类

这是一个经典的文本分类问题&#xff0c;使用google的预训练模型BERT中文版bert-base-chinese来做中文文本分类。可以先在Huggingface上下载预训练模型备用。https://huggingface.co/google-bert/bert-base-chinese/tree/main 我使用的训练环境是 pip install torch2.0.0; pi…...

【Rust自学】8.5. HashMap Pt.1:HashMap的定义、创建、合并与访问

8.5.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构&#xff0c;这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的&#xff0c;这也意味着这些集合的数据大小无需在编…...

使用云计算开发App 有哪些坑需要避免

当我们在云计算环境下开发App时&#xff0c;往往会觉得一切都变得“轻松”了。毕竟&#xff0c;云计算提供了无限的计算资源、灵活的存储方案&#xff0c;还有自动化的服务&#xff0c;仿佛有了一个万能的工具箱&#xff0c;啥都能搞定。可是&#xff0c;别被这种“轻松”外表骗…...

arcgis模版空库怎么用(一)

这里以某个项目的数据为例&#xff1a; 可以看到&#xff0c;属性表中全部只有列标题&#xff0c;无数据内容 可能有些人会认为空库是用来往里面加入信息的&#xff0c;其实不是&#xff0c;正确的用法如下&#xff1a; 一、下图是我演示用的数据&#xff0c;我们可以看到其中…...

C#控件开发4—仪表盘

目录 思路&#xff08;GDI绘图&#xff09;1.定义属性2.绘制图形3.最后生成&#xff08;自定义各种监控值显示&#xff09;End 如何让温度、湿度、压力等有量程的监控值如仪表盘&#xff08;DashBoard&#xff09;一样显示&#xff1f; 思路&#xff08;GDI绘图&#xff09; 定…...

基于BiTCN双向时间卷积网络实现电力负荷多元时序预测(PyTorch版)

Bidirectional Temporal Convolutional Network \begin{aligned} &\text{\Large \color{#CDA59E}Bidirectional Temporal Convolutional Network}\\ \end{aligned} ​Bidirectional Temporal Convolutional Network​ Bidirectional Temporal Convolutional Network (BiTC…...

No.2十六届蓝桥杯备战|练习题4道|数据类型|字符型|整型|浮点型|布尔型|signed|unsigned(C++)

B2002 Hello,World! - 洛谷 #include <iostream> using namespace std; int main() { cout << "Hello,World!" << endl; return 0; }打印飞机 #include <iostream> using namespace std;int main() {cout << " …...

前端项目 npm报错解决记录

1.首先尝试解决思路 npm报错就切换yarn &#xff0c; yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息&#xff1a; Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…...

正弦函数解析(sin.rs)

sin.rs文件提供了sin函数的实现&#xff0c;它计算并返回一个浮点数&#xff08;f64类型&#xff09;的正弦值。这个函数首先处理了一些特殊情况&#xff0c;如极小的值、无穷大和NaN&#xff08;非数字&#xff09;&#xff0c;然后使用rem_pio2函数将输入参数x归约到[-π/2, …...

python 归并排序(Merge Sort)

归并排序&#xff08;Merge Sort&#xff09; 归并排序是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Conquer&#xff09;策略。它的基本思想是&#xff1a;将数组递归地分成两半&#xff0c;分别对两半进行排序&#xff0c;然后将排序后的两半合并成一…...

Zeotero安装”translate for Zotero“插件

一、Zeotero6translate for Zotero 1.0.28 二、打开Zeotero官网&#xff0c;找到下面圈起来的 三、点击以上连接跳转&#xff0c;Releases windingwind/zotero-pdf-translate 下载 zotero-pdf-翻译.xpi 四、打开zeotero&#xff0c;工具>附加组件&#xff08;或插件&am…...

python 选择排序(Selection Sort)

选择排序&#xff08;Selection Sort&#xff09; 选择排序是一种简单的排序算法。它的基本思想是&#xff1a;每次从未排序的部分中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到已排序部分的末尾。重复这个过程&#xff0c;直到所有元素都被排序。 选…...

履约系统:应用层、领域层、集成关系设计

在这篇文章中&#xff0c;我们一起探讨订单履约系统的应用架构设计。 应用架构设计 我们前面讨论了系统的核心概念模型和拆单逻辑。接下来&#xff0c;让我们从应用架构的角度&#xff0c;深入了解系统的各个层次。这包括应用层、领域层&#xff0c;以及与其他系统的集成关系。…...

SpringBoot开发——整合 Elasticsearch 实现数据高效搜索

文章目录 一、Elasticsearch 简介二、Spring Boot 整合 Elasticsearch 的准备工作1. 安装 Elasticsearch2. 创建 Spring Boot 项目3. 添加 Maven 依赖三、配置 Elasticsearch 连接四、定义实体类和仓库接口1. 定义实体类2. 定义仓库接口五、实现业务逻辑和控制器1. 实现业务逻辑…...

风力涡轮机缺陷检测数据集,91.4%准确识别率,18912张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集&#xff0c;91.4&#xff05;准确识别率&#xff0c;18912张图片&#xff0c;支持yolo&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式的标注 数据集下载&#xff1a; &#xff59;&#xff4f;&#xff4c;&#xff4f; &#xff56;&#…...

直观解读 JuiceFS 的数据和元数据设计(一)

大家读完觉得有意义和帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 JuiceFS 高层架构与组件2 搭建极简 JuiceFS 集群 2.1 搭建元数据集群2.2 搭建对象存储&#xff08;MinIO&#xff09; 2.2.1 启动 MinIO server2.2.2 创建 bucket2.3 下载 juicefs 客户端2.4 创…...

【数据结构】(Python)差分数组。差分数组与树状数组结合

差分数组&#xff1a; 基于原数组构造的辅助数组。用于区间修改、单点查询。区间修改的时间复杂度O(1)。单点查询的时间复杂度O(n)。差分数组的元素&#xff1a;第一个元素等于原数组第一个元素&#xff0c;从第二个元素开始是原数组对应下标的元素与前一个元素的差&#xff0…...

基于zynq在linux下的HDMI实战

ZYNQ系列文章目录 第一章&#xff1a;基于zynq在linux下的phy调试记录 第二章&#xff1a;qemu制作ubuntu文件系统 第三章&#xff1a;基于zynq在linux下的AXI-CAN实战 第四章&#xff1a;基于zynq在linux下的HDMI实战 文章目录 ZYNQ系列文章目录前言一、vivado中HDMI的配置1.…...

HT-HaiBOX边缘计算盒 智慧工厂方案,智慧医疗方案,智慧加油站方案,智慧安防方案,智慧城市方案;方案定制开发

背景介绍 在当今数字化时代&#xff0c;各个行业对于智能化视频监控设备的需求日益增长。无论是安防监控&#xff0c;还是智慧工厂、智慧城市等领域&#xff0c;都需要高效、智能的设备来保障安全和提高生产效率。然而&#xff0c;传统的视频监控设备存在诸多痛点&#xff1a;…...

【JMeter详解】

JMeter详解 Apache JMeter 是一个开源的、100%纯Java应用程序&#xff0c;设计用于负载测试和性能测量。它最初是为测试Web应用程序而设计的&#xff0c;但后来扩展到其他测试功能。JMeter可以用来对静态和动态资源&#xff08;如静态文件、Servlets、Perl脚本、Java对象、数据…...

《PHP Switch》

《PHP Switch》 介绍 PHP 是一种广泛使用的服务器端编程语言&#xff0c;而 switch 语句是 PHP 中用于基于不同条件执行不同代码块的关键字。在本篇文章中&#xff0c;我们将详细介绍 PHP 中的 switch 语句&#xff0c;包括其语法、用法、以及在实际编程中的应用场景。 语法…...

如何确保涡度通量观测数据的准确性?涡度通量光敏感性分析、温度敏感性分析、数据风浪区分析等

确保涡度通量观测数据的准确性&#xff0c;可以采取以下几个步骤&#xff1a; 1.数据预处理&#xff1a;在进行数据分析之前&#xff0c;需要对原始的高频涡度通量数据进行预处理&#xff0c;包括剔除异常值和进行数据缺失插补。异常值剔除可以通过设定合理的阈值来识别并剔除数…...

linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)

1、检查端口 检查分发对象22端口是否打开 nmap -p22 ip地址如果要批量检查端口可以参考我写的这篇文章&#xff1a;linux自动化一键批量检查主机端口 2、命令行分发密钥原理 Linux分发密钥原理主要涉及SSH&#xff08;Secure Shell&#xff09;协议&#xff0c;该协议用于…...

C++ 设计模式:命令模式(Command Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 访问者模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使你可以用不同的请求对客户进行参数化&#xff0c;对请求排队或记录请求日志…...

Flink源码解析之:Flink On Yarn模式任务提交部署过程解析

Flink源码解析之&#xff1a;Flink On Yarn模式任务提交部署过程解析 一、Flink on Yarn部署模式概述 Apache Hadoop YARN 在许多数据处理框架中都很流行。 Flink 服务提交给 YARN 的 ResourceManager&#xff0c;后者会在 YARN NodeManagers 管理的机器上生成容器。 Flink 将…...

C++算法20例

1、求两个数的最大公约数 int gcd(int a, int b) { 2 return b 0 ? a : gcd(b, a % b); 3} 2、判断素数 bool isPrime(int n) {if (n < 1) return false; for (int i 2; i * i < n; i) {if (n % i 0) return false;}return true; } 3、冒泡排序 void bubbleSort…...

雷军:科技传奇的逐梦之旅

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、Java 与 Python 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在未来…...

python版本的Selenium的下载及chrome环境搭建和简单使用

针对Python版本的Selenium下载及Chrome环境搭建和使用&#xff0c;以下将详细阐述具体步骤&#xff1a; 一、Python版本的Selenium下载 安装Python环境&#xff1a; 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python&#xff0c;…...