为什么 Supabase 需要这么大内存对比 Directus 和 Go-Zero

270 次阅读

本文最后更新于 2026年5月15日。

为什么 Supabase 需要这么大内存?是用的 Go 吗?

答案是:不全是。

Supabase 并不是一个单一的程序,而是一个由多个开源组件“拼装”而成的分布式后端平台。虽然它的一部分核心组件(如认证服务)是用 Go 语言写的,但整个系统包含了多种技术栈的组件,这些组件同时运行会消耗大量资源。

当你通过 Docker 启动 Supabase 时,后台实际上是在同时运行 13个左右的独立容器/微服务。这就像是你为了住进一套房子,不仅要把家具搬进去,还得同时在院子里运行发电机、净水厂和安保中心。

以下是 Supabase 的核心技术栈及其内存消耗大户:
层级 核心组件 编程语言/技术 作用与内存特点
数据库层 PostgreSQL C语言 核心数据存储,本身就是一个内存消耗大户。
API层 PostgREST Haskell 自动将数据库转为 RESTful API。Haskell 运行时环境相对较重。
实时层 Realtime Elixir (基于 Erlang VM) 负责 WebSocket 实时数据推送。Erlang 虚拟机为了保证高并发实时性,起步内存占用较高。
网关层 Kong Lua (跑在 Nginx 上) API 网关,负责请求路由和安全校验。
函数层 Edge Functions Deno (基于 V8 引擎) 无服务器函数,运行 TypeScript/JS 代码。V8 引擎同样需要一定的内存开销。
认证层 GoTrue Go 语言 处理用户登录、注册和 JWT 签发。这是其中比较轻量高效的部分。

正是由于需要同时维持 PostgreSQL、Elixir、Haskell、Deno 等多个重型服务的运转,导致 Supabase 的整体最低内存门槛被拉高到了 4GB。

⚔️ 与 Directus、Go-Zero 的硬核对比

这三个工具虽然都属于后端领域,但它们的定位完全不同。打个比方:

  • Supabase 像一个“全能精装房”(BaaS),水电煤网家具全包,拎包入住,但房子结构(PostgreSQL)固定。
  • Directus 像一个“智能装修队”(Headless CMS),能把你现有的毛坯房(已有的 SQL 数据库)瞬间装上智能控制面板和接口。
  • Go-Zero 像是一套“顶级建筑工具包”(Go 微服务框架),给你砖瓦和图纸,让你从零开始盖摩天大楼,追求极致的稳固和性能。
  1. 内存与资源占用对比
  • Go-Zero(最轻量): 它是用 Go 语言编写的微服务框架。Go 语言以高性能和低内存占用著称,Go-Zero 的二进制文件非常小,常驻内存通常仅需 20MB – 30MB 左右,极致轻快。
  • Directus(中等): 基于 Node.js 和 Vue.js 构建。Node.js 的运行效率不错,但比 Go 稍重。它作为一个单独的应用运行,内存占用适中,通常几百 MB 到 1GB 即可流畅运行。
  • Supabase(最重): 如上所述,因为是十几个服务的集合体,起步就需要 4GB 内存。
  1. 核心定位与适用场景对比
    维度 Supabase (BaaS 平台) Directus (Headless CMS) Go-Zero (微服务框架)
    核心价值 开箱即用的一站式后端。提供数据库、认证、存储等全套服务。 现有数据库的“包装器”。连接你已有的 MySQL/PG 等数据库,自动生成管理后台和 API。 高性能的后端开发框架。提供写代码的规范、工具和库,让开发者自己写业务逻辑。
    数据库限制 强绑定 PostgreSQL。 极其灵活,支持 PG, MySQL, SQLite, SQL Server 等多种主流 SQL 数据库。 完全自由,你可以搭配 GORM 等 ORM 库连接任何数据库。
    开发方式 几乎不用写后端代码,前端直接调用 SDK 操作数据库和接口。 主要是配置和可视化操作,适合内容管理、内部工具,非技术人员也能用。 纯代码开发,需要专业的后端工程师编写 Go 代码,灵活性最高。
    适合人群 前端开发者、独立开发者、初创团队快速出 MVP(最小可行性产品)。 需要快速给现有数据库做管理后台或 API 的团队、外包接私活神器。 对性能要求极高、业务逻辑复杂的大型互联网公司或专业后端团队。

📌 总结建议

  • 如果你是前端开发者,不想碰复杂的服务器运维,只想快速做一个带用户系统和数据库的网站/App,Supabase 是首选(哪怕它吃内存,你也可以直接用官方提供的免费托管云服务,无需自己部署)。
  • 如果你手头已经有一个现成的 MySQL 或 PostgreSQL 数据库,想立刻给它配一个漂亮的管理后台和 API 给前端用,选 Directus。
  • 如果你在组建专业的后端团队,要开发一个高并发、高可用的大型商业系统,并且希望每一行代码都尽在掌握,那么请选择 Go-Zero。