当前位置: 首页 > news >正文

我用一个 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 语义。

2. 缓存 & KV 存储:Postgres 内建 JSONB

SELECT * FROM kv_storeWHERE value @> '{"user_id": 12345}';

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

3. 全文搜索:无需 Elasticsearch 的轻量方案

SELECT title, ts_rank(search_vector, query) AS rankFROM posts, to_tsquery('startup & postgres') queryWHERE search_vector @@ queryORDER BY rank DESC;

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

4. 实时通知: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 微服务实战,如果你正在做项目,又或者刚准备做。可以仔细阅读一下,或许对你有所帮助!

    图片

    http://www.lryc.cn/news/610357.html

    相关文章:

  • LeetCode 分类刷题:16. 最接近的三数之和
  • 【Unity】协程 Async
  • 体育数据创业:用 API + 比分网,低成本快速验证
  • Mirror学习笔记
  • Linux RAID 存储技术
  • GaussDB 数据库架构师(十二) 资源规划
  • 用户与组管理命令
  • 小实验:按键点灯(中断法)
  • 【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
  • traefik网关鉴权中间件转发multipart/form-data请求的multipart: NextPart: EOF问题
  • LLM大模型时代:生活服务领域的“生存革命“与新生态重构
  • 深度学习-卷积神经网络CNN-卷积层
  • 探索机器学习在医疗领域的应用与挑战
  • Flask 项目 Windows 服务器部署全流程
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • RTX5060显卡安装cuda版本PyTorch踩坑记录
  • 深度解析:CPU 与 GPU 上的张量运算,为何“快”与“慢”并非绝对?
  • chatgpt plus简单得,不需要求人,不需要野卡,不需要合租,不需要昂贵的价格
  • 从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单
  • Oracle MCP Server简单配置以及备份调用
  • Oracle EBS ERP接口开发 — 修复bug基本流程
  • Calcite自定义扩展SQL案例详细流程篇
  • Centos Docker 安装手册(可用)
  • el-table高度自适应vue页面指令
  • Mac中M系列芯片采用rbenv管理ruby版本
  • 板子指示灯状态设计
  • 2SA2016-TD-E ON安森美 功率晶体管 0.18Ω超低压降+30MHz高频 工业电源专用
  • C语言的指针
  • python采集拍立淘按图搜索API接口,json数据参考
  • 2.4.3-2.4.8控制成本-控制资源-监督沟通-监督干系人-监督风险-控制采购