前言
peerstream.js项目是我们团队开发的虚幻引擎像素流库,和官方臃肿不堪的像素流SDK相比,我们在官方的基础上做了大量的优化和精简,并加入了许多新功能,开发出了轻量、零依赖、开箱即用的软件套装,前端的peer-stream.js基于WebComponentsAPI,后端signal.js基于NodeJS和npm/ws。
目前对于单个UE项目来说,已经可以很好的完成其使命,但是对于多机器、多显卡、多个UE项目的管理来说,还是显得有些力不从心。针对这些问题,我们设计了一个全新的企业版。
设计思路
企业版取名为PeerStreamMulty,意思是可以管理多个UE实例。我们会保持和PeerStream项目采用一致的peerstream.js库,这样可以做到无缝切换。
PeerStreamMulty主要核心能力主要是多机器多显卡负载均衡,多个UE实例负载均衡。后期我们还会增加对UE进程的监控能力,从而提供更加稳定的像素流服务。
负载均衡
负载均衡是整个设计的最核心的地方,我们需要实现不同机器,不同显卡实例的负载均衡。这里引入显卡缓存的概念,我们整个负载均衡理论基于显卡的内存来进行。
比如4090显卡内存24G,4080显卡内存16G,那么我们就配置好,还可以配置多个显卡。示例如下
"gpu": [
{
"gpucard": 0,
"gpumemory": 24
},
{
"gpucard": 1,
"gpumemory": 24
}
]
UE实例我们也引入同样的概念,预先配置每个UE实例的显存大小,相关示例如下
{
"name": "test",
"path": "C:\\Users\\deans\\Desktop\\ueproject\\UE51\\Windows\\ue51.exe",
"urlprefix": "hedongzai",
"gpumemory": 9,
"param": ""
}
这样我们就可以计算出每个显卡剩余可用的显存大小,从而可以选择出最优的显卡进行运行。
此外,我们还引入了时间的概念,为了保证每个显卡都可以被使用,我们设计了一个显卡上次开启实例的时间,选择时间最小的那个作为下一个被使用的显卡。
gpu缓存锁定
有时候刚启动UE实例,但是还无法和signal建立连接,这个时候计算剩余缓存的时候,并不会进行计算。这里我们引入了一个缓存锁定的思路,即当执行启动UE实例的时候,我们就锁定这个GPU显卡的缓存,当UE与signal建立连接之后,我们再将锁定移除,有时候启动进程会失败,我们给出一个超过时间,超过这个时间也进行移除。
跨机器设计
我们将启动UE进程,统一放到execue.js中,这样就可以轻松实现分布式部署,天生支持跨机器负载。启动和逻辑分离的方法,还可以提供程序的健壮性,另外我们在execue中还可以增加监控进程的能力,更好的提高健壮性。
开发语音
相比peerstream,我们决定采用typescript进行开发,整个设计都是面向对象的,更好的提高了开发效率。
与peerstream对比
这是我们计划的功能开发,后续还可以根据各位朋友的需求近一步进行完善。
关于企业版授权
企业版主要为源码授权的方式,目前还在开发中,目前有5个VIP的名额,可以参与到我们的项目中来,永久免费授权,并提供技术支持。后续只有按照年的授权方式。
价格如下:
5个VIP 10000元 永久授权和技术支持
后续价格:
99999元/年 1年的技术支持
欢迎各位老板联系。
Inveta团队
Inveta团队由研发、美术设计、建模等组成。团队介绍:
https://www.inveta.cn/about.html
团队开源项目:
https://github.com/inveta
团队推出了UE像素流的技术支持服务,帮助大家更好的管理UE的像素流。
合作支持
