实时云渲染系统软件

2024-08-14 19:30

       云渲染是指将本地计算机上的3D图形渲染任务通过网络传输到云端服务器进行处理,利用云端服务器的强大计算能力完成渲染工作,并将渲染结果返回给用户的过程。这种方式可以极大地提高渲染效率,降低本地计算机的负载,同时实现资源的灵活调配和成本的有效控制。



        云渲染项目是将渲染的任务分布到云端进行处理,可以大幅提升渲染速度和效率。重点和难点主要涉及以下几个方面:


网络传输速度和稳定性,操作的流畅性

数据传输是云渲染的基础,网络传输速度和稳定性是影响渲染质量和时间的关键因素。

措施:本系统利用自研压缩算法和传输协议优化数据体积,优化传输速度,提高操作体验。


云渲染3.png


延迟和任务分配。

云渲染需要将任务分配到不同的云端服务器上,在任务分配过程中需要考虑负载均衡、延迟等因素,以最大化利用服务器资源和提高渲染效率。

措施:本系统会实时统计各个机器gpu 、cpu、 内存、网络等情况,通过自研负载均衡算法进行筛选调度到最佳机器,确保用户体验最佳。


云渲染4.png


安全性和数据保护

云渲染需要处理大量的敏感信息,如设计图、UE模型等,这就要求保障系统安全和数据保护。需要加密传输数据,并采用访问控制、身份认证等技术手段确保数据的安全。

措施:本系统,在服务端实时获取应用的图像,并通过视频编码技术,将画面编码成视频流数据,将视频流数据低延迟快速传输给客户的网页端。网页端的鼠标、键盘等动作指令也会通过渲染系统传输回服务器端。客户可以通过网页便捷的操控远程应用的画面。

在整个过程中,系统管理端用md5不可逆算法存储密码,并存储记录操作日志,各个用户访问通过app_key,app_secret进行数据的鉴权,确保用户之间数据隔离。被控服务端应用通过srtp安全实时传输协议实时的画面数据传输给客户端,客户端是通过网页类似观看直播一样的方式,显示完当前画面数据帧就释放。实现数据不落地的安全模式。


多应用音画隔离

云端机器打开多个应用如何确保音频、视频隔离传输给客户端用户

措施:本系统实现独有自研容器复用技术,实现一机多用,避免中间层的衰减和资源消耗,延迟和损耗少,并发数更多。同时兼容kvm、vmware 等虚拟机模式部署更方便,容器架构图如下:


云渲染5.png



云渲染系统总体设计
设计思路


本项目旨在实现类似3D应用云端渲染的架构,即将3D程序的画面指令等传输到web端网页等轻客户端,支持多服务器调度。因此,本项目主要分为以下几个模块:客户端模块、服务器端模块、调度模块、数据管理中心模块。


设计原则

在设计云渲染系统时,我们遵循以下原则:

可扩展性:系统应具有高度的可扩展性,可以方便地添加新的服务器和客户端,以满足不断增长的用户需求。

稳定性:系统应该能够在长时间的运行中保持稳定。

高效性:系统应该能够快速响应用户请求,能够在保证画面质量的前提下,尽可能地降低延迟,提供流畅的渲染体验。

安全性:系统应该能够保护用户的数据和隐私。

兼容性:系统应该能够兼容不同的浏览器和更多的应用。


技术路线

Web客户端:支持主流浏览器,使用WebRTC等实时通讯技术实现实时数据传输,支持H.264/H.265解码。

服务器端:采用C++语言,支持多线程并发处理,实现实时数据传输,支持H.264/H.265编码,深入优化串流技术栈,以达到极地延迟的效果。实现容器化复用技术,通过独有的容器化方案,实现一机多用,同一机器用户间渲染事务隔离。采用GPU负载均衡技术,实现主机多显卡硬件架构下,根据调度模块发送的任务自动均衡调度GPU资源,已达到最大化利用GPU资源。

调度模块:使用负载均衡技术,根据服务器负载情况自动调度任务,以实现最优的任务分配。

数据管理中心模块:使用云存储技术,将用户的渲染任务和渲染结果存储在数据中心服务器,并通过易用的CMS管理系统实现资源的可视化管理操作,提高数据的可靠性和可用性。


逻辑架构设计

客户端模块:负责向服务器请求渲染任务,并接收服务器传输的渲染结果,将结果展示给用户。

服务器端模块:负责接收客户端请求,进行图形渲染,并将渲染结果传输给客户端。

调度模块:负责监控服务器负载情况,自动调度任务,以实现最优的任务分配。

数据管理中心模块:用户资源的可视化管理、存储用户数据和渲染任务数据,提高系统的易用性,数据的可靠性和可用性。


物理架构设计

本系统采用分布式架构,包括客户端、服务器、调度服务器和数据中心。

客户端:用户通过浏览器访问客户端,向服务器请求渲染任务,并接收服务器传输的渲染结果。

服务器:提供图形渲染服务,接收客户端请求,进行图形渲染,并将渲染结果传输给客户端。

调度服务器:监控服务器负载情况,自动调度任务,以实现最优的任务分配。

数据中心:存储用户的渲染任务和渲染结果,提高数据的可靠性和可用性。


数据流程设计

客户端请求渲染任务、动作指令-> 服务器接收请求并进行图形渲染 -> 服务器将渲染结果传输给客户端



数据库设计

系统使用MySql作为数据库,主要表结构设计如下:

用户表:存储用户信息,包括用户名、密码、状态等。

服务器表:存储服务器信息,包括服务器地址,所属区域等。

渲染任务表:存储渲染任务编号,包括任务状态、端口号、码率、访问密码、所属渲染服务器等。

访问记录表:记录用户访问详细,包括访问时间、访问内容等。


系统间关系

客户端模块和服务器端模块之间通过WebRTC实现实时数据传输,调度模块负责监控服务器负载情况,自动调度任务,以实现最优的任务分配。数据中心模块负责存储用户的渲染任务和渲染结果,提高数据的可靠性和可用性。



系统安全设计

数据传输加密:使用srtp协议对数据进行安全传输。

用户身份验证:对用户进行身份验证,防止非法用户访问系统。对用户输入进行严格的输入验证和过滤,防止SQL注入和XSS攻击。

安全审计:对系统进行安全审计,及时发现和处理安全漏洞和问题。


兼容性设计

支持全部Windows应用程序,一键发布。

支持主流浏览器,如Chrome、Firefox、Safari、Edge等,能尽最大可能确保系统能够在不同平台和浏览器上正常运行。