FastComments.com Blog


Wed Apr 01 2026
...

FastComments 自动路由传输系统

介绍

FastComments 自动路由传输系统 (FARTS) 是我们的传输和服务层。FARTS 帮助解决拥堵,根据用户位置和未来可能的负载来路由流量。它由多个不同的系统组成,包括一个地理感知的 DNS 层、一个数据库代理、数据库复制、SSL 证书管理、反向代理,以及使用磁盘上的 LRU 缓存来在边缘缓存资产的 CDN。该系统支持静默和响亮的故障切换模式。生产环境中更倾向于使用静默模式。

活动-活动

最新版本的 FART 包含一个内置的代理和数据库复制层。这使得 FastComments 可以实现活动-活动的全球写入可用性,从而使我们的 FARTS 最终保持一致性。更多细节请查看这里

我们早期采取的一种方法是查看是否可以创建 MongoDB 的一个分支。我们的一个工程师 (Sloperators) 实际上能够在 Opus 4.6 中完成这一点,然而我们决定这样做的风险高于构建我们自己的隔离系统。

对于 FART 这样的系统,你最不希望的是知道它已经到达,但你无法追踪来源。我们添加了监控和诊断,以在细粒度级别监控活动-活动的复制。

大规模使用 Rust

创建 FART 的部分动机是替换一些用 Java 编写的现有服务。在考虑了一段时间后,我们决定将这些合并为一个 Rust 服务,以降低运行时开销。由于我们并不经常部署 FART,因此这是一个可以接受的权衡。FART 与 LTO 一起编译,因此我们可以充分利用其性能。

我们花了很多时间尝试用不同的 GC 等调优旧的 Java 系统,最后决定使用异步 Rust + Mimalloc 在相同的硬件上表现显著更好,并且内存需求更低,因此切换是显而易见的选择。

FART 主控

每个部署都包含自己的 FART 主控。主控负责协调定时任务、网络钩子等。

客户影响

FART 系统在生产环境中运行了大约一年。最近我们进行了活动-活动部署的迁移。新系统让我们对系统的延迟有了更高的可见性,同时降低了维护负担,因此我们现在可以花更多时间在功能上。

FART 背景中安静地工作,虽然其存在始终可感知。我们希望您发现我们的系统在您的用例中更快(大多数导致数据变化的用户操作在某些地区会更快)。

部署

部署使用我们用于部署服务本身的相同全球协调系统。FARTS 文档建议 sloperators 永远不要信任一个部署,始终在发布之前验证有效载荷。

部署后 FART 警报遵循升级政策:首先是房间,然后是楼层,最后是建筑物。

总结

像所有重大版本一样,我们很高兴能够花时间优化、测试并适当地发布此更改。我们对未来即将到来的内容感到兴奋。经过这项工作,FastComments 应该在长期内具有更好的扩展性和更高的正常运行时间。正如 FART 操作手册所说:“如果你闻到了什么,告诉我们。” 如果您发现任何问题,请在下面告知我们。