无服务器通信

Communication without server

考虑在线游戏、whatsapp 和许多其他分布式系统等协作应用程序,服务器起着重要作用。它执行许多关键功能,这些功能是整个应用程序顺利运行所必需的。

但是假设我想开发一个应用程序,用户可以使用它来在线连接和实时共享数据,如文本、图像、绘图。例如,一个用户可能正在研究数学问题并想与另一个用户讨论它。因此,应用程序使这两个用户(如果需要,还可以让更多用户)联系并分享他们的想法。

用户可以在没有服务器作为中介的情况下进行这种通信吗?如果是,什么网络技术可以做到这一点?应用程序因缺少中介服务器而错过的优势是什么?

如果要构建这样的分布式拓扑,需要解决的问题有很多。

  1. NAT一定要想到。这是首先要解决的,你可能需要搭建Natpmp或者upnp或者ICE来实现nat穿越

  2. 第二个问题是在没有服务器的情况下如何找到其他用户。您可能需要使用 LSD 或 DHT

  3. 你需要考虑网络的安全问题,比如没有认证的服务器,可以存储用户信息,确保它们真的无害。

如果您使用我上面提到的这些技术或其他一些技术解决了所有问题,您会发现使用服务器更好,因为它相对简单。这就是商业生产中的权衡。