文章分享用阿里云突发性能 ECS、Caddy 和 PostgreSQL 搭建低成本生产后端的方法。重点涉及资源分配、查询与表结构优化,以及避免事务锁拖垮性能。
我们成功地将 ShadowSocial.io 的生产环境后端部署在 Alibaba Cloud 上,并把每月运行成本长期稳定地控制在 10 英镑以内。这里想分享一下我们是如何做到的。关键在于合理分配资源,并充分了解不同云服务带来的成本影响。
我们的核心计算服务运行在 Alibaba Cloud ECS t5/t6 实例上。这些属于“突发性能型”实例,也就是说,它们可以提供基准 CPU 性能,并在需要时突发到更高的性能水平。对于我们日常的 Web 流量和 API 请求而言,基准性能已经绰绰有余。
我们使用 Caddy 作为反向代理,并用它完成 SSL 终止。Caddy 非常轻量,配置也极其简单,非常适合资源受限的环境。它能够高效处理传入的请求,并将这些请求转发到我们的应用服务器。
数据库方面,我们使用 PostgreSQL。为了尽量降低数据库负载,我们投入了大量精力优化查询和 schema。更重要的是,我们非常重视事务锁。过于激进的锁策略会迅速拖慢系统性能,最终迫使你升级到成本更高的硬件。
我们的架构中有一个关键设计:如何处理计算密集型任务,尤其是视频推理。我们没有在主 Web 服务器上运行这些任务,而是将其卸载到一个具备调度感知能力的独立 GPU worker 池中。只有真正需要时才会启动这些 worker,从而大幅降低资源闲置带来的托管成本。
这种卸载策略至关重要。它意味着我们的主要 ECS 实例始终可以用极低的 CPU 使用率来处理 Web 请求。GPU worker 同样得到了高效管理,只有实际存在推理任务时才会消耗资源。
我们还使用 Server-Sent Events(SSE)提供实时更新。SSE 是一种简单而高效的协议,用于将数据从服务器推送到客户端。在许多使用场景中,它都比 WebSockets 更轻量,可以进一步降低服务器负载,并帮助我们控制成本。
通过组合使用突发性能型实例、轻量级反向代理、谨慎的数据库管理,以及对重型计算任务的智能卸载,我们得以用极低的成本维持一个满足生产环境要求的后端。这证明,运行一个能力完善的 SaaS 平台并不需要巨额预算。
由 ShadowSocial.io 自主撰写
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。