向Quilkin问好,一个开源的UDP代理
原文来自 medium.com 上的博客文章 Say hi to Quilkin, an open-source UDP proxy
在Embark,我们制作网络游戏,这也意味着运行和管理游戏服务器。
为了使游戏客户端能够连接到服务器,通常会以某种方式与客户端分享服务器IP地址,作为匹配过程的一部分。
这有几个缺点:该IP地址可能承载其他游戏服务器,或用于其他游戏,所以让任何人访问它都将使得保护它免受攻击成为挑战,如针对服务器IP的DDOS攻击或针对游戏服务器本身的恶意攻击。如果该地址被重复使用,这些问题可能会持续很长时间。
通过互联网连接游戏服务器和游戏客户端
当游戏服务器和游戏客户端直接对话时,我们在数据包成型方面也无能为力。就路由问题而言,我们只能听从玩家的ISP的决定。
这给我们带来了Quilkin,一个开源的UDP代理,我们已经开始与谷歌云合作,现在我们正在开源。
用一个边缘位置的代理来连接游戏服务器和游戏客户端
目前,这是一个早期的0.1.0 alpha版本,为我们打下了坚实的基础。我们的计划是继续努力,使我们能够使用Quilkin来解决上述问题,并使其他游戏工作室,无论大小,都能做到这一点。
我是Luna Duclos,Embark公司后端交付团队的技术负责人。我们的团队专注于与游戏无关的后端和基础设施技术。我一直在与我团队中的几位工程师和 Google Cloud 的工程师一起研究Quilkin。
将Quilkin作为sidecar运行
我们的目标是让Quilkin能够在各种不同的设置中运行–从作为游戏服务器的sidecar运行(暴露有用的指标,作为DDOS保护层在大型池中运行,吸收大量的无效流量),一直到如上图所示在边缘运行(为游戏客户端提供灵活性,因此它可以选择为玩家流量提供最佳延迟的Quilkin边缘)。
作为负载均衡层运行Quilkin
到目前为止,这类功能只提供给有资源建立自己的专有技术的大型游戏工作室。
我们认为为游戏行业的每个人提供公平的竞争环境是一项重要而值得的努力。这就是为什么我们与谷歌云合作,共同发起这个项目。我们欢迎来自任何地方的外部贡献者,希望得到你们的反馈和意见。
你也可以在这里看到谷歌关于Quilkin的博文,其中有一些关于如何部署它的额外细节。
Quilkin现在处于0.1.0的状态,这意味着,当然还有很多工作要做。我们的下一步将是在Agones中建立集成,然后在我们自己正在进行的游戏标题前部署Quilkin,看看它的表现如何,并从那里扩展功能集和文档。
我们还计划在C++中建立一个平均水平的客户端库,可以很容易地集成到现有的引擎中,或者在不可能使用Rust库或二进制的情况下。作为交换,它的功能可能会比功能齐全的Rust库少。 一旦运行良好,我们计划进一步探索Quilkin-in-the-edge方案,看看需要做哪些工作来支持它。
在Embark,我们相信开源是游戏行业的未来,开放的、跨公司的合作是未来的方向,这样所有的工作室,无论大小,都可以达到相同的技术能力水平。
Quilkin是Embark工作室和谷歌云之间的一个开源合作。
我们特别热衷于在快速增长的Rust生态系统中合作和建设开放项目。如果你不熟悉的话,Rust是一种高性能的编程语言,具有强大的内置安全功能和一个奇妙的社区,这使得合作和使用广泛的高质量软件包变得非常容易。 我们既开发和维护自己的开源项目,如cargo-deny、tame-oauth、physx-rs,也积极赞助和支持Rust Analyzer、Tokio和Dim Forge等开放项目。