阿里云无影云桌面-桌面即服务的架构演进

本文涉及的产品
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑企业版,4核8GB 120小时 1个月
简介: 无影是终端用户计算产品线,由云桌面、云应用、云数据、终端等共同组成。无影云桌面,在架构上,也经历了几次大的架构调整和升级。无影云桌面是一个Desktop As A Service产品。

前言

无影是终端用户计算产品线,由云桌面、云应用、云数据、终端等共同组成。作者是无影云桌面的总架构师和研发团队负责人。

本文所指的桌面,是指办公或者娱乐用的桌面电脑。云桌面,是相对本地桌面而言的,以云计算的方式交付的远程虚拟桌面。一个最常见的云桌面的场景就是企业的员工办公,本地办公桌上只有着显示器、键盘、鼠标、摄像头等各种外设,没有电脑主机,打开显示器后显示一个登录界面,直接登录到远程的虚拟桌面办公。

在业界,大家提及较多的是Virtual Desktop Infrastructure(VDI)和DAAS (Desktop As A Service)两种虚拟桌面。一般,简单的认为,VDI是私有云的方案,DAAS是公共云的方案。但两者的区别不止这些,真正的DAAS,还应该满足一个重要特征,使用者无须关心基础设施,看不到虚拟机更看不到物理机,也就是常说的Serverless。举个例子,VMware的Horizon产品,部署的前提是先准备好一个vCenter和若干台服务器,因此我们讲,VMware Horizon是VDI产品,无论其安装在公共云还是私有云。而相比之下,阿里云无影可以直接购买云桌面,无须提前准备任何服务器,是真正的DAAS产品。

VDI版本的云桌面

阿里云的云桌面,在架构上,也经历了几次大的架构调整和升级。较早版本的阿里云云桌面(那时候还不叫无影),与VDI领域的某领导者公司共同合作设计,有浓重的VDI的烙印。当时的产品架构图如下图所示:

  图片1.png



这个较早版本的架构设计,优点是利用了业界较为成熟的VDI方案,结合阿里云自己的身份认证系统和弹性计算(ECS)、VPC的基础设施,以较小的开发成本提供了一套较为稳定的虚拟桌面方案。

但缺点也非常明显:

1.对小企业用户来说,即使只有一台虚拟桌面,也需要额外的三台大规格ECS损耗,分别安装VDI必须的微软的AD、管理组件、终端用户认证访问组件,成本过高。

2.受限于1中所述的三台ECS的限制,此方案对单个用户最多只能支撑1000台虚拟桌面,无法满足大企业弹性要求。

3.虚拟桌面直接挂公网IP,客户端通过这个公网IP直接连接虚拟桌面,且虚拟桌面内的应用对外访问互联网也是通过这个公网IP,网络未隔离,存在安全风险。

4.虚拟桌面底层对应的ECS,位于用户自己的VPC,归属用户自己,在用户的ECS控制台可见,用户要付出额外的管理成本来维护ECS,因此,本质上,是一个公共云上的VDI方案。

5.无法与企业自身的微软AD进行集成。目前,较大比例的大企业正在使用微软AD进行windows桌面管理。

 

无影云桌面之初

为了客服这些缺点,在2020年,阿里云的云桌面进行了推到重来的设计,并正式命名为“无影云桌面”。此版本的架构图如下图所示(实际的无影服务VPC内的管控架构比下图要复杂很多,下图从简):

 图片2.png



这个版本的无影云桌面,在架构上,有以下四点重大升级:

1.无影实现了自研的大规模的多租户的桌面集群,在去除集群成本overhead的同时,实现了大规模的弹性扩容。举个例子,对小用户来说,假设一台桌面一个月100元,那么买一台就是100元,买两台就是200元,没有任何额外的费用。而对于大企业来说,也几乎没有规模上限。再举个例子,假设每个集群的桌面数量上限是5000台,那么,一个大企业的2万台桌面,会被自动的分配到四个不同的桌面集群中。

2.桌面底层的ECS位于无影服务VPC内,由无影的服务来管理和运维,用户在ECS控制台看不到这些ECS,也就无须再运维ECS,利用Serverless技术成为了真正的DAAS。而无影提供的99.9%的可连接性SLA,也远胜过客户自己维护ECS的稳定性。

3.桌面本身不挂公网IP,客户端通过一个无影自研的安全的接入网关,来接入桌面,从而实现了桌面与互联网的隔离,保证了桌面的安全接入。

4.桌面有两块网卡。主网卡,也就是管控网卡,负责客户端的接入流量,以及管控侧的控制流量,用户不能对主网卡进行任何修改,主网卡的网络安全规则也是严格受控的。另一个是应用网卡,也就是辅助网卡,位于用户自己的VPC内,负责桌面内的应用对外的流量,桌面内的应用可以直接通过应用网卡访问此VPC内的资源。

5.无影自研了一个AD Connector,可以允许客户集成自己的AD来管理这些桌面。AD Connector同样有两块网卡,一块位于无影服务VPC,一块位于用户VPC,从而桥接了无影管控服务与企业自己的AD。这样一来,客户端登录的时候,就可以使用企业自己的AD来完成认证了。值得注意的是,桌面和企业AD之间的流量,是通过应用网卡来直接通信的,不走AD Connector。

 

无影云桌面之云原生升级

但是,这种设计仍然有一个缺点,就是如果用户需要访问internet,需要自己在VPC内购买NAT网关,同一个企业的多个桌面可以共享一个NAT网关上网。这种设计,虽然给了企业足够的灵活性来控制自己的网络,但是也对中小企业造成了很大的困扰:我想要桌面,为什么必须要先创建并配置VPC和vSwitch?还要我自己去够买并配置NAT网关?我还要自己配置应用网卡的安全组规则来保证安全?

这些问题,违背了Serverless和DAAS的设计思想。为了提供最简化的管理体验,我们提出了“安全办公网络”和“工作区”的概念,把网络资源也全部放在了无影服务的管理VPC内,从而使得用户即使没有任何云计算背景和网络知识,也可以轻松地创建和管理自己的无影云桌面。

随着团队的扩大,业务逻辑越来越复杂,单体应用在稳定性和弹性上的不足也越来越明显,我们决定对管控进行微服务化改造。

同时,为了提供业界最好的终端用户体验,克服使用第三方协议的限制,我们把自研的ASP协议,也在管控层面做了实现。

 

2021版的无影云桌面架构图调整如下(实际远比下图复杂,下图从简):



 图片3.png

 

在2020版的基础上,无影做了如下变革:

1.桌面的应用网卡(辅助网卡)也由无影服务来管理。优点是,用户在创建无影桌面前,只需在无影控制台选择一个IP地址段(192,10,172等)创建一个无影工作区,无须再提前准备VPC、vSwitch等网络资源。桌面如果想要访问internet,只需要在无影控制台创建互利网访问包,无影会自动创建和管理NAT等资源,最大化的简化了用户的管理操作。

2.为了保留无影跟用户自己的AD集成的能力,以及桌面访问VPC私网的能力,我们引入云企业网(CEN)。用户可以先创建一个CEN,然后在无影云桌面控制台将无影的工作区加入到自己的CEN,从而使得无影云桌面的网络与自己的VPC打通。

3.为了满足部分企业客户的高安全的要求,我们支持了“私网客户端”的功能,通过privateLink终端节点服务,支持客户端只能在VPC以内,通过一个私网地址,连接云桌面,从而实现了企业的云桌面和公网彻底隔离的需求。

4.引入了微服务引擎,进行了微服务化拆分和改造,使得多个团队可以并行开发,并在稳定性、性能等多方面有所提高。我们的注册中心使用Nacos,服务间调用使用Dubbo,消息异步通知使用RocketMQ,缓存使用Redis,分布式锁、工作流框架为自研。

5.三方协议集群和自研的ASP集群并存,为ASP协议设计了单独的集群管理组件,实现心跳和健康监测、连接和会话管理、用户管理等功能。

面向未来的无影

在2022年,无影的架构,也会持续的迭代和更新。我们计划把数据、应用、桌面三者解耦,云数据、云应用和云桌面通过client和控制台在体验上合为一体,计划引入更多自研终端,计划发布自己的云端一体的操作系统,计划发布独立的个人版无影,计划搭建比肩淘宝的的无影商店。敬请期待!

 

 

目录
相关文章
|
4天前
|
XML Java 数据库
在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂
【9月更文挑战第8天】在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂。日志作为系统行为的第一手资料,传统记录方式因缺乏全局视角而难以满足跨服务追踪需求。本文通过一个电商系统的案例,介绍如何在Spring Boot应用中手动实现日志链路追踪,提升调试效率。我们生成并传递唯一追踪ID,确保日志记录包含该ID,即使日志分散也能串联。示例代码展示了使用过滤器设置追踪ID,并在日志记录及配置中自动包含该ID。这种方法不仅简化了问题定位,还具有良好的扩展性,适用于各种基于Spring Boot的微服务架构。
14 3
|
17天前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
31 2
|
24天前
|
消息中间件 Java API
解密微服务架构:如何在Java中实现高效的服务通信
微服务架构作为一种现代软件开发模式,通过将应用拆分成多个独立的服务,提升了系统的灵活性和扩展性。然而,实现微服务之间的高效通信仍然是许多开发者面临的挑战。本文将探讨在Java环境中实现微服务架构时,如何使用不同的通信机制来优化服务之间的交互,包括同步和异步通信的方法,以及相关的最佳实践。
|
28天前
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
61 5
|
30天前
|
编解码 Linux 数据安全/隐私保护
Linux平台x86_64|aarch64架构如何实现轻量级RTSP服务
为满足在Linux平台(x86_64与aarch64架构)上实现轻量级RTSP服务的需求,我们开发了一套解决方案。该方案通过调用`start_rtsp_server()`函数启动RTSP服务,并设置端口号及认证信息。支持AAC音频和H.264视频编码,可推送纯音频、纯视频或音视频流。此外,还支持X11屏幕采集、部分V4L2摄像头采集、帧率/GOP/码率调整、摄像头设备选择与预览等功能。对于音频采集,支持alsa-lib和libpulse接口。整体设计旨在提供150-400ms的低延迟体验,适用于多种应用场景。
|
25天前
|
缓存 Java Maven
SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程
Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。
|
1月前
|
监控 供应链 安全
构建高效微服务架构:API网关与服务熔断策略
【7月更文挑战第38天】随着现代应用程序向微服务架构的转型,系统的稳定性和效率成为了开发团队关注的焦点。本文将探讨在微服务环境中实现系统可靠性的关键组件——API网关,以及如何在服务间通讯时采用熔断机制来防止故障蔓延。通过分析API网关的核心功能和设计原则,并结合熔断策略的最佳实践,我们旨在提供一套提高分布式系统弹性的策略。
|
存储 弹性计算 运维
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?
368 3
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?
|
存储 弹性计算 运维
阿里云无影云桌面是什么样的价格贵吗
阿里云无影云桌面是什么样的价格贵吗
195 0
|
12月前
|
弹性计算 运维 安全
阿里云无影云电脑详细介绍(原无影云桌面)
阿里云无影云电脑详细介绍(原无影云桌面),什么是阿里云无影云电脑?无影云电脑(原云桌面)是一种快速构建、高效管理桌面办公环境,无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景,阿里云百科分享无影云桌面的详细介绍、租用价格、云电脑的优势、使用场景、网络架构、无影云电脑与云服务器的区别以及关于无影云电脑的常见问题解答FAQ
519 0