PeerStream更新-剔除用户

Inveta团队针对像素流资源紧张的问题,在peerstream中新增剔除功能,允许用户手动释放GPU实例给优先级更高的用户。通过增加killPlayer接口和标志,精确管理UE连接,提升云渲染资源利用效率。
摘要由CSDN通过智能技术生成

前言

像素流由于采用后台渲染,所以资源是非常紧缺的,当用户需要访问某一路资源的时候,如果gpu实例用完了,就只能等其他用户退出才行。这里inveta团队针对大家提供的痛点需求,在peerstream中更新了剔除当前正在使用的用户,释放访问资源。

需求

在某些紧急场景,需要能够释放gpu实例给优先级更高的用户。由于peerstream有重连的功能,所以在剔除之后,还不能触发自动重连,允许用户手动刷新的时候进行再次连接。

实现方式

在最新的GUI界面中开发了剔除用户界面,可以剔除当前正在访问的用户,并且还不会进行重连。之后就可以释放资源给其他用户访问。0c5d32ca1365a47bfe0e286548226837.png

实现逻辑

增加一个剔除接口,可以发送playerDisconnected给UE,从而让UE自动释放这一路的webrtc连接。另外web和signal的连接不能断开,因为如果断开连接就会触发3秒的断线重连机制,从而导致还会进行资源的抢占。

global.killPlayer = async function (playerId) {
  const fe = [...PLAYER.clients].find(a => a.req.socket.remotePort === playerId)
  if (!fe) throw 'peer-stream not found!'
  fe.ue.send(
    JSON.stringify({
      type: "playerDisconnected",
      playerId,
    })
  )
  fe.ue.fe.delete(fe);
  fe.ue = null;
  fe.killPlayer = true
  // 当用户连接数大于ue实例的时候,有用户退出意味着可以,认领空闲的前端们
  for (const fe of PLAYER.clients) {
    if(fe.killPlayer)
    {
      continue
    }
    if (!fe.ue) {
      PLAYER.emit("connection", fe, fe.req);
    }
  }
  print();
}

此外,我们给这个websocket连接增加了一个killPlayer字段,这个字段主要是告诉当前的连接是被剔除的,后续不能再使用。之后在所有匹配UE的地方 都需要比匹配这一路连接,主要是在UE的websocket连接的地方和前端资源释放重新连接的地方。如下图

43a63953affd77804ea994be094bdc5d.png 169c8aeb69d7cc7f344dccf2acc00d4f.png

总结

通过这次更新,我们可以更加精准的分配资源,让云渲染可以更好的被大家使用。

Inveta团队

Inveta团队由研发、美术设计、建模等组成。团队介绍:
https://www.inveta.cn/about.html
团队开源项目:
https://github.com/inveta
团队推出了UE像素流的技术支持服务,帮助大家更好的管理UE的像素流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值