每个去中心化的平台构建者都面临这个问题:哪些组件应该去中心化,去中心化到什么程度?
metaverse 项目 Decentraland 在他们最初的点对点消息传输遇到性能瓶颈时解决了这个问题,这限制了他们的用户实时聊天和交互的能力。在这篇文章中,我们将介绍他们如何在保持操作员独立性的同时解决性能问题。
对于那些不熟悉的人来说,Decentraland 是一个去中心化的虚拟世界平台,建立在以太坊区块链上,允许任何人创建、探索虚拟土地、建筑物、物品或迷你游戏等内容和应用程序并从中获利。任何人都可以运行一个 Decentraland 节点,就像一个游戏服务器。每个节点都看到相同的世界实例(建筑物等),但节点上的用户只能看到同一节点上的其他人并与之交互。(设计与魔兽世界的“碎片”非常相似。)
任何多人游戏世界都需要一种方式来与附近的玩家共享用户交互和状态变化。Decentraland 通过 WebRTC 数据通道实现这一点:一键通语音聊天、玩家移动、聊天消息和世界交互(如开门和关门)都通过数据通道共享。
最初,所有这些状态更改都发生在点对点 WebRTC 连接上。但是这种架构很快就遇到了扩展问题:点对点 WebRTC 不能扩展到超过 4 个对等点的连接,而且玩家经常与更大的群体和人群互动。为了支持大型群体中的交互,Decentraland 团队首先尝试跨多个点对点跃点传播数据,但延迟太高。对于 100 个用户的集群,客户端 p75 ping 时间为 6-7 秒。
为了解决这个问题,该团队构建了一个传输层抽象(“Catalyst”)来支持多个 WebRTC 传输选项。除了他们现有的点对点传输之外,节点运营商可以托管他们自己的 LiveKit 开源服务器实例,或者使用 LiveKit Cloud 并将服务器维护留给我们。任何节点操作员都可以通过简单的配置更改在传输之间切换。自 Catalyst 发布以来,所有基金会和社区节点都选择在 LiveKit 上运行。
结果是戏剧性的。从数量上看,客户的 p75 ping 时间下降到 800 毫秒。语音聊天,现在作为 WebRTC 音轨在用户之间交换,是实时传送的。改进的性能还对用户行为产生了深远的定性影响,产生了自发的交互、现场音频对话以及用户唱卡拉 OK 和生日快乐的活动。
延迟的大幅下降很大程度上依赖于 LiveKit Cloud 的全球网状网络。每个 Decentraland 用户都连接到地理位置上离他们最近的 LiveKit 服务器,数据在用户之间通过私有互联网骨干网交换——可以把它想象成 CDN,但用于实时媒体。
回到本文开头提出的问题,LiveKit 的开源核心允许 Decentraland 部署混合的传输实现,包括去中心化和集中式。Decentraland 节点运营商可以自行决定是使用 LiveKit Cloud、托管自己的 LiveKit 实例,还是继续使用点对点传输。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/changjing/14393.html