跳转到主要内容

出站流量至上:将 Synadia Cloud 的按 GiB 计费 NATS 出站流量记为可变基础设施销货成本

发布日期 阅读需 2 分钟Mike ThriftMike Thrift
出站流量至上:将 Synadia Cloud 的按 GiB 计费 NATS 出站流量记为可变基础设施销货成本
本页总览

你注册了 49 美元的 Starter 套餐,也恰好按这个数做了预算。然后第二张账单来了,金额是两倍,而你的仪表盘上没有任何东西能解释原因。套餐价格从来就不是真正的价格。真正收费的是离开云端的字节。Synadia Cloud 会对你从它的 NATS 服务中拉出的每一个 GB 进行计量,而超出部分正是让固定订阅变成随流量缩放的可变账单的地方。

时机很重要。NATS 于 2026 年 11 月 10 日从 CNCF 毕业,下载量超过 4 亿次,有 2,000 多家公司在运行它。眼下正有一波团队从自托管 NATS 迁移到托管云,用运维苦活换取一个他们从未留意过的计量器。本文将解释 Synadia Cloud 如何为网络数据定价、在真实规模下这需要花多少钱、为什么生产消息应归入销货成本而不是间接费用,以及如何入账才能让你的毛利率说出真相。

Synadia Cloud 如何为网络数据定价​

Synadia 按团队应用套餐,每个团队都从免费的 Personal 套餐开始。付费阶梯很短:Starter 每月 49 美元,Pro 每月 199 美元,Enterprise 采用定制合同。每一档都附带一定额度的包含网络数据,以及连接数、流数量和存储上限。Personal 包含 10 GiB,Starter 包含 100 GiB,Pro 包含 1 TiB,Enterprise 包含 2 TiB。

包含额度才是全局的关键,因为超出之后会发生什么取决于你的套餐。在免费的 Personal 套餐上,根本没有超额计费。如果团队超过 10 GiB,活跃和新建的客户端连接会被断开,直到下一个计费周期或套餐升级为止。你的演示日流量高峰在 Personal 上不花钱,它花的是可用性。

在所有付费套餐上,超出部分都会被计量,并在计费周期结束时收费,按流量类型定价。三个费率,相差近一个数量级:

  • 客户端与叶子节点出站流量:每 GiB 9 美分
  • 网关出站流量:每 GiB 2 美分
  • 路由入站与出站流量:每 GiB 1 美分

注意这个列表里缺少了什么。发布到云端不计量。计量器只对向外流出的字节计数,这意味着扇出是每张 Synadia 账单上的乘数。一条消息发布一次、投递给十个消费者,就是十次出站投递,而不是一次。

客户端与叶子节点出站流量:每 GiB 9 美分​

这是主导真实账单的费率,它覆盖你的系统消费数据的两种方式。客户端出站流量是从云端投递给你的应用的每一个字节:订阅者投递、请求-回复响应,以及流读取。叶子节点出站流量是同一概念延伸到边缘。叶子节点是你自己网络上的一个 NATS 服务器,它向外拨号到云端中心,并跨越该链路桥接主题兴趣,因此防火墙后的工厂车间或零售门店无需任何入站防火墙规则就能发布和订阅。

计费后果是边缘并不免费。云端通过叶子链路向下转发的每个字节都是按最高费率计费的出站流量。叶子订阅如果限定在像 orders.created 这样的紧凑主题上,就只拉取那个主题。如果偷懒订阅一切,就会把整个数据洪流拉过一条 9 美分的链路。在边缘限缩主题兴趣是成本控制,而不仅仅是良好习惯。

网关出站流量:每 GiB 2 美分​

网关把集群联结成超级集群,通常跨区域,这样一个区域的工作负载可以访问另一个区域的主题。网关出站流量是这些集群之间的复制和跨区域流量,按每 GiB 2 美分计费。

两美分听起来微不足道,直到你想起它叠加在云服务商自身底层传输费用之上。Synadia 自己的运维指南将高网关流量比率标记为值得修复的问题,并指出仅跨可用区传输在每个方向每 GB 就要约一美分。大量跨区域复制的团队要为同样的字节支付服务商的传输成本和 Synadia 的网关计费。除非架构确实需要地理分布,否则把发布者、流和消费者放在同一区域。

路由流量:每 GiB 1 美分​

路由是 NATS 服务器之间集群内的链路,承载让集群保持一致的路由和复制流量。双向每 GiB 一美分,这是页面上按设计最便宜的计量器。它的存在是为了让运行有韧性的多服务器拓扑不会惩罚你。如果路由流量在你的账单上曾经成为一行有意义的数字,那一定是结构上出了问题,因为要达到一美元的客户端出站流量,它需要九倍的量。

真实规模下的成本​

每 GB 费率只有乘出来才有意义,所以这里给出三种真实的形状。

一个有少量服务的副项目可以毫不费力地装进 Starter 的 100 GiB 里。每天一万条小消息,每条投递给两个消费者,每月大约移动 20 GiB。账单是 49 美元固定价,零超额,包含数据的实际费率约为每 GiB 49 美分。在这个规模上的错误是为了你并不需要的余量升级到 Pro:每月多花 150 美元,去持有你从不触碰的 GB。

一个中等规模的 SaaS 平台向它的工作进程和两个边缘叶子节点流式发送订单和通知事件,每月产生约 1.2 TiB 的客户端和叶子节点出站流量。在 Starter 上,这大约是 1,129 GiB 的超额,按 9 美分计算,即比 49 美元基础价多出约 102 美元,账单总计 151 美元。仍比 Pro 的 199 美元便宜,而且盈亏平衡点比大多数团队猜的远得多:从 Starter 到 Pro 那 150 美元的台阶,仅靠网络数据本身要往回赚回来,需要每月超额超过约 1.6 TiB。在这条线以下,你升级是为了连接数、流或存储,绝不是为了数据额度。在点击升级前,先算算这个除法。

现在加上地理复制。同一个平台跨区域镜像流以做灾难恢复,增加了 500 GiB 的网关出站流量,而客户端出站流量在 Pro 套餐上刚好略低于 2 TiB。客户端超额是超出包含的 1 TB 的 960 GiB,按 9 美分计算,即 86.40 美元。网关超额是 500 GiB,按 2 美分计算,即 10 美元。账单是 199 加 96.40,即 295.40 美元,而超额的三分之二来自一个在画白板时没人定价的复制拓扑。这就是一张令人意外的 Synadia 账单的反复出现的形状:不是一个巨大的数字,而是扇出和复制放大了小额费率。

为什么生产消息是可变销货成本,而非间接费用​

把你的产品交付给付费客户的消息,是收入的一项直接成本。它随用量缩放,当没有销售时它就消失,投资者期望在毛利率线之上看到它,与生产环境的计算、数据库、存储和带宽并列。

会计准则在这里留有空间:公认原则并未精确定义销货成本,而 SaaS 毛利率实践用一个直接成本测试来填补空白。问一问这笔支出是否为了在生产中服务客户。承载订单事件的流、向面向客户的工作进程扇出的投递,以及向服务客户的边缘位置供数的叶子链路,全都通过。重放上周流量的预发布环境账户、负载测试主题,以及开发者沙箱订阅则不通过。那些属于研发或一般间接费用。

生产边界才是全局的关键。一张 Synadia 账单把所有账户和所有流量类型混在一起,所以每月用仪表盘的按账户用量把它拆开。跳过拆分的团队通常往好看的方向犯错,把基础设施埋进间接费用,并报告一个其单位经济无法自圆其说的毛利率。一次尽职调查审查会在一个下午就把它重分类,而重述后的毛利率永远不会是更高的那个。

按你实际支付的净额入账。未使用的包含数据不是资产,免费 Personal 层级也不是收入,所以没有什么需要还原或结转。如果你想看清余量,在指标里跟踪已用与包含的 GB,并让账本条目保持在现金成本。

如何入账,才能让毛利率说出真相​

给消息单独的销售成本账户,而不是把它混进一个通用的云或软件行。一个专门的账户,比如 cloud messaging,可以让你把当月支出除以当月出站流量 GB,看到你真实的每 GiB 成本,这个数字告诉你扇出增长是否在吞噬毛利。

Synadia 的收费在月末之后结算,所以要计提。在结账时依据你的出站流量指标估算生产部分,账单到达时再调整到实际金额,并把非生产部分排除在销售成本之外。下面是一个一月份的完整周期,生产中估算为 291.20 美元,而实际账单为 295.40 美元,另有一个独立的 49 美元 Starter 团队用于开发:

2026-01-01 open Assets:Cash:Operating USD
2026-01-01 open Expenses:CostOfSales:Cloud-Messaging USD
2026-01-01 open Expenses:Research:Cloud-Sandbox USD
2026-01-01 open Liabilities:Accrued:Synadia USD
 
2026-01-31 * "Synadia" "January prod estimate, Pro base plus client-leaf and gateway overage"
  Expenses:CostOfSales:Cloud-Messaging  291.20 USD
  Liabilities:Accrued:Synadia  -291.20 USD
 
2026-02-03 * "Synadia" "January invoice settles at 295.40 plus 49.00 dev team"
  Liabilities:Accrued:Synadia  291.20 USD
  Expenses:CostOfSales:Cloud-Messaging  4.20 USD
  Expenses:Research:Cloud-Sandbox  49.00 USD
  Assets:Cash:Operating  -344.40 USD

至少每月将计提金额与仪表盘的按账户网络用量核对一次,把客户端、网关和路由流量作为单独的行,这样某一项的峰值就不会隐藏在其它项的平稳趋势里。如果你用纯文本记账,文档中的成本跟踪模式可以自然地扩展到按流量类型拆分消息。

要避免一个分类陷阱:额外叶子节点、连接包和存储等附加项在服务生产时仍是消息成本,但连接你自己自托管 NATS 系统的 Remote System 附加项是一种混合架构选择。如果那条链路的存在是为了让一个遗留的本地系统继续存活,而不是为了服务当前客户,那么它属于那个系统成本所在的地方,而不是销售成本。

五个控制措施,防止出站流量吞噬毛利​

从扇出纪律和负载大小开始。它们共同应对乘数和被乘数,而且两者都是下午就能完成的修复。

1. 把每一次投递都当作一次购买​

每个订阅者投递都是单独计量的出站流量,所以审计谁接收什么。附加紧凑的主题范围,让每个消费者只收到它处理的事件,并移除已停用工作进程上的死订阅。未过滤的扇出会为消费者到达即丢弃的消息支付投递费用。这是纯粹的浪费,每个订阅只需一行修复。

2. 给负载瘦身​

保持事件精简。把完整文档存入对象存储,只发送一个引用加上消费者需要的标识符,即索赔支票模式。从热路径中剥离内嵌的二进制块、重复的客户记录和啰嗦的调试上下文。你移除的每个 GB 都能在承载它的每条消息的每次投递上节省 9 美分,这就是为什么负载大小通常胜过挑套餐作为节省杠杆。

3. 严格限定叶子节点兴趣​

叶子链路只转发另一侧有兴趣的主题,这让边缘订阅成为一条 9 美分管道上的阀门。每季度审查每个叶子订阅,确认每个仍在服务一个活跃的边缘工作负载。一个门店里一个被遗忘的 catch-all 订阅,就能悄悄地把整个主题空间拖过账单上最贵的链路。

4. 让流靠近其消费者​

在架构允许的任何地方,把发布者、流和消费者放在同一区域。跨区域复制要在同样的字节上支付网关超额加上服务商的底层传输,所以把每个网关 GB 都当作有罪,直到证明有必要。如果灾难恢复确实需要第二个区域,只复制满足恢复目标的最小子集,而不是整个账户。

5. 调整套餐规模并监控消耗速度​

按周而不是按月跟踪已用与包含的 GB,因为超额会静默累积直到周期结束。记住为了数据原因把 Starter 升级到 Pro 之前的 1.6 TiB 盈亏平衡点,也记住另一个方向上的 Personal 悬崖:在免费层上做原型的团队应该在他们关心的任何流量高峰之前升级,因为 Personal 对超额的回应是断开连接,而不是账单。

消息成本的月末清单​

每月以同样的方式闭环,让数字保持可信:

  1. 从仪表盘按流量类型拉取出站流量 GB,而不是从应用日志里拉取逻辑消息计数。
  2. 将每种类型的支出除以其 GB,并与 9、2、1 美分的基准对比。
  3. 通过投递数除以发布数,计算每个主题的投递扇出;任何高于你设计比率的都值得做一次订阅审查。
  4. 按账户把生产与预发布和沙箱用量分开,并确认只有生产进入了销售成本。
  5. 把上个月的计提调整到已结算的账单,并把差异结转到你的估算中。
  6. 检查网关流量占总出站流量的份额,并确认每个跨区域流仍有架构上的理由。
  7. 确认当月创建的每个新账户、流和叶子节点都继承了生产标记和紧凑的主题范围。

今天就从你的仪表盘拉出这个月的 Synadia 网络数据行,把总出站流量 GB 与包含额度对比。如果超额增长快于客户用量,那就是扇出或复制在放大费率,而你最便宜的毛利胜利是更小的负载和更紧的订阅,而不是更大的套餐。

来源:https://beancount.io/zh/blog/2026/11/11/synadia-cloud-nats-egress-pricing-variable-cogs-guide

发布日期: 2026年11月11日

阅读需 2 分钟

64 KB 分块规则:将 AWS SQS/SNS 按请求计费的费用记为可变销货成本

SQS 和 SNS 会对每次 API 调用按每个 64 KB 块计费,所以一条 200 KB 的消息要算 12…

cost-of-goods-sold
cloud-services
阅读需 2 分钟

按秒计费,而非按消息计费:将 CloudAMQP 的实例时间账单作为基础设施 COGS 进行核对

CloudAMQP 按秒对实例时间计费,并延后一个月开票:将生产 broker 计入 COGS,在月末计提,并把 staging 单独拆出。

cost-of-goods-sold
cloud-services
阅读需 2 分钟

按特征视图而非席位计费:将 Tecton 的消费额度账单记为 ML 平台的 ASC 606 销货成本

Tecton 按消费额度计费,云资源开销则走你自己的账户:把生产环境服务计入销货成本,把实验计入研发费用,并计提尚未出账的欠款。

cost-of-goods-sold
machine-learning
阅读需 2 分钟

小型SaaS团队的云成本分摊:一份实用的成本归属指南

一份面向小型SaaS团队的30天成本归属操作手册——定义报告维度,执行简短的标签字典,用可辩护的公式拆分共享成本,并在AI工作负载(目前98%的FinOps调查…

saas
cloud-services
阅读需 1 分钟

你的Webhook账单是销货成本(COGS),不是间接费用:在Svix和Hookdeck上进行事件驱动SaaS的记账

Svix和Hookdeck的账单是收入成本,不是间接费用:将平台费用与计量用量分开,在开票前应计,并跟踪每1,000个事件的成本。

saas
cost-of-goods-sold