<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>微服务 on Zampo Blog</title><link>https://blog.cpdd.fyi/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/</link><description>Recent content in 微服务 on Zampo Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 20:00:00 +0800</lastBuildDate><atom:link href="https://blog.cpdd.fyi/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/index.xml" rel="self" type="application/rss+xml"/><item><title>我用 PostgreSQL 替换了整个技术栈，省了 6 个微服务</title><link>https://blog.cpdd.fyi/posts/replaced-entire-stack-with-postgresql/</link><pubDate>Fri, 17 Apr 2026 20:00:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/replaced-entire-stack-with-postgresql/</guid><description>&lt;p&gt;现代软件工程已经基本变成了&amp;quot;订阅管理模拟器&amp;quot;。&lt;/p&gt;
&lt;p&gt;我们被云厂商洗脑了，以为即使构建一个基础应用，也需要拼凑一个脆弱的分布式网络：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redis 做缓存&lt;/li&gt;
&lt;li&gt;Confluent Kafka 集群做后台任务&lt;/li&gt;
&lt;li&gt;Elasticsearch 只是为了一个简单的搜索框&lt;/li&gt;
&lt;li&gt;再搞个专用向量数据库为了那个临时加上的 AI 功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等你终于把应用部署给你那&amp;quot;要求极高&amp;quot;的用户群（你自己和你妈）时，你已经欠了十几家 Y Combinator 支持的 SaaS 初创公司的钱，就为了让灯亮着。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是一个过度工程化、价格离谱的陷阱。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但如果我告诉你，你可以把那些闪亮的云依赖全部扔进焚化炉，用一个经过 30 年验证的开源软件替换它们呢？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;科技行业不想让你知道的秘密：一个久经考验的工具可以吞噬你的整个架构。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我刚刚用 PostgreSQL 替换了整个技术栈。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一postgresql-为什么能吞噬整个栈"&gt;一、PostgreSQL 为什么能吞噬整个栈&lt;/h2&gt;
&lt;p&gt;PostgreSQL 是一个开源对象关系数据库系统，已经活跃开发了 30 多年。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开箱即用的能力：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;坚如磐石的 ACID 合规性——当你的廉价云服务器崩溃时，用户数据不会损坏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可扩展性&lt;/strong&gt;——这才是它能吞噬整个栈的真正原因&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL 不只是行列存储。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它还能存储：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSONB（半结构化数据）&lt;/li&gt;
&lt;li&gt;向量（AI 嵌入）&lt;/li&gt;
&lt;li&gt;全文搜索索引&lt;/li&gt;
&lt;li&gt;地理空间数据（PostGIS）&lt;/li&gt;
&lt;li&gt;图数据（关系遍历）&lt;/li&gt;
&lt;li&gt;时间序列数据&lt;/li&gt;
&lt;li&gt;键值对（作为 Redis 替代）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL 不是数据库，是一个数据平台。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二实战替换redis缓存--键值存储"&gt;二、实战替换：Redis（缓存 + 键值存储）&lt;/h2&gt;
&lt;h3 id="传统架构"&gt;传统架构&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;应用 → Redis（缓存） → PostgreSQL（持久化）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;两个服务要运维&lt;/li&gt;
&lt;li&gt;缓存和数据库数据可能不一致&lt;/li&gt;
&lt;li&gt;Redis 挂了要处理降级&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="postgresql-方案"&gt;PostgreSQL 方案&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;使用 UNLOGGED 表做高速缓存：&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>为什么很多团队的内部 API，早就不该只用 REST 了</title><link>https://blog.cpdd.fyi/posts/internal-api-should-not-only-rest/</link><pubDate>Tue, 14 Apr 2026 11:30:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/internal-api-should-not-only-rest/</guid><description>&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/internal-api-should-not-only-rest/cover.svg" alt="REST vs RPC 内部 API 设计的选择困境"&gt;&lt;/p&gt;
&lt;p&gt;服务越写越多，接口越写越拧巴。&lt;/p&gt;
&lt;p&gt;明明是 &lt;code&gt;approveInvoice()&lt;/code&gt; 这种动作，却要硬拗成 &lt;code&gt;POST /invoices/{id}/approval&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;文档越来越厚，新来的同事越看越迷糊——这到底是资源操作，还是动作调用？&lt;/p&gt;
&lt;p&gt;很多团队的问题，不是不会做 API，而是一开始就把内部系统也按公共 API 那套方式设计了。&lt;/p&gt;</description></item></channel></rss>