Discord语音服务器遭受DDoS攻击是很常见的(我们是通过传入IP数据包的迅速增加而观察到的)。届时我们会执行与Discord Voice服务器故障时相同的程序,即从服务发现系统中删除受影响的Discord Voice服务器,再为行会选择一台新的Discord Voice服务器,然后将所有在线语音的对象推送到新选择的Discord Voice服务器,并通知新语音服务器的客户端重新连接。当DDoS不再攻击时,该服务器将被重新添加到服务发现系统中,以提供语音服务。
当公会所有者选择一个新的语音区域时,我们也会执行与上述非常相似的过程。Discord Guilds服务器通过咨询服务发现系统来选择新语音区域内最佳的Discord Voice服务器。它将所有在线语音对象推送到新选择的服务器,并向客户端通知新的语音服务器。客户端会断开与旧Discord Voice服务器的语音WebSocket连接,并创建与新Discord Voice服务器的新语音WebSocket连接。
扩大运作规模
Discord网关,Discord公会和Discord语音业务都可以横向大范围拓展。Discord 网关和Discord公会目前正在Google云平台上运行。
我们有850多个语音服务器在全球13个地区(托管于30多个数据中心)运行。服务器中留有一定空间来处理数据中心故障和DDoS攻击。我们有固定供应商,并在其数据中心中使用物理服务器。我们最近在南非地区开展了业务。得益于我们在客户端和服务器体系结构设计上所做的努力,我们能够为超过260万同时在线的语音用户提供服务,其输出流量超过220 Gbps(比特每秒)和120 Mpps(数据包每秒)。
下一步计划?
我们一直在监控语音质量(由客户端向我们的后端服务器报告质量指标)。将来我们希望能使用这些信息来自动检测并减少语音不清晰的问题。
尽管我们一年前就已经推出了视频聊天和屏幕共享功能,但目前您只能用其直接传递消息。与音频相比,视频需要更高的CPU处理能力和更大带宽。我们很难去平衡带宽量和用于提供最佳视频质量的CPU / GPU资源,尤其是当频道中的一组游戏玩家可能在一系列不同的设备上时。可延展的视频编码可能是提供流畅视频体验的解决方案。
用户通常使用Discord与朋友分享游戏体验。与普通网络摄像头相比,由于帧频和分辨率更高,屏幕共享需要更大带宽。我们将硬件视频编码添加到桌面应用程序中,以获得更好的体验。
我们安排了工程师同时在客户端和服务器组件上工作,并负责具体操作。我们在语音和视频客户端以及基础架构方面进行了大量投资,以期Discord能帮助游戏玩家获得最佳语音和视频体验。
文章作者:Jozsef Vass