我编写了一个实时套接字 API,它与数据提供程序通信,并向订阅模型事件的连接发送数据模型。假设提供程序是 StackExchange,模型是一个问题,即在创建每个问题时将其发送到订阅接收该问题的每个连接。
我突然意识到这需要大量带宽。如果每个模型都是约 5kb 的 JSON 数据,而我平均每秒向每个连接发送 25 个模型,那么每天每个连接大约需要 5kb * 25 * 86400 = 10,800Mb,或者每月每个连接需要 324Gb。在标准的 5TB/月 VPS 计划中,这意味着我只能处理 15 个连接,这远低于实际使用量(甚至可能高达 1000 个连接)。
这是否意味着我的应用程序基本上是无用的,因为我负担不起运行它的费用?它是开源的,无法货币化,因此没有广告或投资的选择。
我是不是该就此放手?
编辑:用户可以订阅部分数据,但“发送所有内容”选项是核心用例。这意味着我有将其用作最坏情况指标。
答案1
开源(通常)并不意味着它不能货币化。您可以提供源代码或 VM 映像,让人们托管自己的服务器,或者向他们收费以进行托管。许多开源项目都采用这种方法 - 免费运行,或以每月 $x 或每 GB 流量 $x 的价格将软件作为服务。
除此之外,您还可以通过以下方式节省带宽:
限制发送的 JSON 数据部分。如果大多数人不需要某些部分的数据,则可将其设置为可选发送。
对订阅设置过滤器,以便它们可以请求事件的子集。在您的示例中,这可能意味着我的连接仅显示带有带宽标签的服务器故障问题。
确保所有内容都经过压缩。文本压缩效果很好,因此带宽节省量应该很大。
所有这些也对您的用户有益。他们也需要为带宽付费,而且没有人希望通过他们的连接发送 100GB 的不必要的数据。
还有一些托管计划提供不限带宽。那么你唯一的问题是每秒的数据量,而不是每月的数据量。请注意,许多廉价的“无限”计划都是无限的,直到我们认为你使用了太多,所以在购买之前要做一些研究。