我用一个 Postgres 实现一整套后端架构!

作为一名开发者,你是不是也陷入过这样的循环?

  • 功能还没上线,已经设计了微服务、消息队列和 NoSQL;

  • 用户还不到百人,架构却能抗百万并发;

  • 想省事,结果变得事更多、系统更脆。

我曾经也是。Redis 缓存、RabbitMQ 队列、Elasticsearch 搜索、MongoDB 存储......

你真的需要它们全部吗?我决定反其道而行之:只用 Postgres 一个数据库完成所有功能。

- 01-

Postgres 能做的,远超你的想象

许多人还以为 Postgres 只是个"传统关系数据库"。但实际上,它:

功能 传统技术 Postgres 功能
队列 Redis + RabbitMQ LISTEN/NOTIFY + SKIP LOCKED
缓存 Redis JSONB + GIN Index
搜索 Elasticsearch 内置全文搜索 + ts_rank
实时 WebSocket 服务 pg_notify + Trigger
KV 存储 MongoDB/Redis JSONB + SQL 查询

Instagram 、Discord 、Notion 、Airbnb,都是 Postgres 的激情用户。

- 02-

Postgres 中是怎么实现这些功能的?

  1. 作业队列:一个事务,搞定所有后台任务
复制代码
BEGIN;UPDATE job_queueSET status = 'processing', processed_at = NOW()WHERE id = (  SELECT id FROM job_queue  WHERE status = 'pending'  ORDER BY created_at  FOR UPDATE SKIP LOCKED  LIMIT 1)RETURNING *;COMMIT;

不需要 Kafka、不需要 Redis,一条 SQL 保证 Exactly-Once 语义。

  1. 缓存 & KV 存储:Postgres 内建 JSONB
复制代码
SELECT * FROM kv_storeWHERE value @> '{"user_id": 12345}';

这个 @> 操作符快得离谱。别再烧钱买 Redis了。

  1. 全文搜索:无需 Elasticsearch 的轻量方案
复制代码
SELECT title, ts_rank(search_vector, query) AS rankFROM posts, to_tsquery('startup & postgres') queryWHERE search_vector @@ queryORDER BY rank DESC;

模糊匹配、词根提取、权重排序。中小体量系统,用 Postgres 就够。

  1. 实时通知:LISTEN/NOTIFY 完爆 pub/sub
复制代码
PERFORM pg_notify('table_changes', json_build_object(  'table', TG_TABLE_NAME,  'action', TG_OP,  'data', row_to_json(NEW))::text);

用它实现了 WebSocket 推送,无需引入额外的服务。

- 03-

技术的成本

引入太多服务,表面上看灵活,其实成本极高:

  • 部署复杂:每个服务一套配置、一套监控

  • 测试混乱:数据一致性难以维护

  • 故障难排查:凌晨 3 点排 Redis 内存爆炸

  • Redis: 20/月、RabbitMQ: 25/月、Elasticsearch: $50/月

  • 监控、备份、安全、调试:最低 $30/月

而 Postgres,一套系统 All in One,既省钱又省心:

  • 实时通知

  • 全文搜索

  • 任务处理

  • 设置存储

  • 用户状态缓存

它让我交付更快,运维更简单,性能还稳如老狗。

- 04-

总结

下一次写后端,先问自己三个问题

  1. 我能不能只用 Postgres 搞定?

  2. 我是为了问题本身设计系统,还是为了"万一"的问题?

  3. 我的用户真的在乎架构吗,还是只关心产品好不好用?

技术不是越复杂越好,而是越合适越好。

如果你还没用 Postgres 试过构建一个完整产品,那你可能从未真正认识它。

让系统更简单,让交付更迅速,让你专注做真正重要的事

别再为"技术栈"而技术栈。从 Postgres 开始,专注于用户,架构自然水到渠成。

下一次有人说:"我们是不是该上 Redis/Mongo/ES?"

你只需反问一句:"你确定 Postgres 做不到?"

然后静静地看对方沉默 🤫

Postgres 真的扩展不加好嗎?你没真正用过

  • Instagram 在一个实例上有 1400 万用户

  • Discord 每日数亿消息

  • GitLab 全部基于 Postgres

它能做分区,能做副本,能做高并发连接池,而太多初创老哥还正在把自己的服务分片漂亮地固定在处理器头顶。

我用一个 Postgres,做完了一个全栈项目。说:你也能。

- 05-

粉丝福利

点点关注,送你 Spring Cloud 微服务实战,如果你正在做项目,又或者刚准备做。可以仔细阅读一下,或许对你有所帮助!

相关推荐
Hello.Reader41 分钟前
一个开源项目,让 AI 做逆向不再靠猜reverse-skill 架构解析与本地实战
人工智能·架构·开源
驭渊的小故事2 小时前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
哦虎!7 小时前
【JavaEE】网络初识
java
for_ever_love__7 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓8 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡8 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
CCblandy8 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
IT研究室8 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项8 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友