RabbitMQ vs Kafka vs Redis Streams:消息队列选型
"消息队列"不是一种东西——RabbitMQ(传统 AMQP,路由灵活)、Kafka(分布式日志,高吞吐流处理)、Redis Streams(轻量流),设计哲学完全不同。本文讲清三者的核心模型、各自擅长的场景,以及"按需求选而非按热度选"。
DevOps、Docker、Kubernetes、可观测性
本专题收录 云原生 方向的文章和社区讨论,重点关注真实工程场景、工具选择、实践路径和风险边界。
页面会持续更新,适合作为学习路线、选型参考和技术复盘入口。
"消息队列"不是一种东西——RabbitMQ(传统 AMQP,路由灵活)、Kafka(分布式日志,高吞吐流处理)、Redis Streams(轻量流),设计哲学完全不同。本文讲清三者的核心模型、各自擅长的场景,以及"按需求选而非按热度选"。
默认 Docker 容器权限过大(root + 无 seccomp)。本文讲清 Docker 安全加固:非 root 运行、最小镜像(distroless/scratch)、镜像扫描(Trivy/Grype)、seccomp/AppArmor、只读文件系统、资源限制,给一份生产容器安全 checklist。
流量来了 Pod 扛不住、流量去了 Pod 浪费。K8s 的三级伸缩(HPA 水平/VPA 垂直/CA 节点)解决不同问题。本文讲清 HPA(按 CPU/自定义指标加减 Pod)、VPA(调资源 request)、Cluster Autoscaler(加减节点),以及冷启动与预测性伸缩的实战。
插入还是更新?UPSERT 一条语句搞定。本文讲清 PostgreSQL 的 INSERT ON CONFLICT(指定冲突列/DO UPDATE/DO NOTHING)、MySQL 的 ON DUPLICATE KEY UPDATE、幂等写入场景(同步/重试不重复),以及 ON CONFLICT 的陷阱(部分索引/多列冲突)。
单文件 Terraform 跑 demo 够了,生产要模块化 + 远程 state。本文讲清 module 的输入/输出/版本、远程 state 后端(S3+DynamoDB 锁/Terraform Cloud)、state 漂移与 import、以及一份生产级 Terraform 项目结构。
部署不只是"推新版本"——怎么推、怎么切、出问题怎么回滚,决定了风险大小。本文讲清三种部署策略:蓝绿(两套环境瞬间切换)、金丝雀(小流量验证再放量)、滚动(逐步替换),各自的适用场景与代价,以及生产中怎么选。
单 Redis 扛不住内存/吞吐时,Redis Cluster 水平扩展。本文讲清 Cluster 的分片模型(16384 槽位 + hash tag)、主从复制与自动故障转移、客户端路由(MOVED/ASK)、跨槽操作限制,以及什么时候该上 Cluster(>单机内存/高吞吐)什么时候用哨兵就够。
索引不是建了就不管——它会膨胀(碎片)、变无用(查询不再用)、占空间。本文讲清索引维护的三件事:检测膨胀(pgstattuple)、找无用索引(pg_stat_user_indexes 零使用)、重建(REINDEX CONCURRENTLY),给一套定期索引体检方案。
请求进入时只能估算成本,完成后才知道真实消耗;若多个网关各自扣减、超时就退款,容量会被重复花费。本文用预留 receipt、结算与过期竞争维护限流守恒。
K8s 默认所有 Pod 互通——这在生产是安全隐患。NetworkPolicy 让你声明"哪些 Pod 能和哪些 Pod 通信"。本文讲清 NetworkPolicy 的 ingress/egress 规则、默认拒绝模式、以及"零信任"的 K8s 网络实践。
大表慢?分区表把一张物理表拆成多张子表,查询只扫相关分区。本文讲清 PG 三种分区策略(Range 按范围/List 按枚举/Hash 按哈希)、分区裁剪(partition pruning)、何时该分区(千万级+)、分区键怎么选、以及分区与索引的关系。
分布式锁用 Redis?但如果你已有 PostgreSQL,Advisory Locks 直接在 DB 里做应用级锁——不需要额外中间件。本文讲清 Advisory Locks 的两种模式(session 级/transaction 级)、pg_advisory_lock vs try_lock、实际场景(并发任务调度/迁移/幂等),以及它和行锁的区别。