后端系统与数据库基础设施
这批新增内容里有一条偏工程基础设施的支线:一份用电商例子讲清 Dubbo + Nacos 的 Markdown,以及一本讲 MySQL 内核设计与实现的长篇 PDF。它们虽然不属于 agent 主线,但很适合作为后端背景参考。 [[raw/PDFs/Dubbo+Nacos.md|来源: Dubbo+Nacos.md]] [[raw/PDFs/2025年新书-MySQL内核设计与实现.pdf|来源: 2025年新书-MySQL内核设计与实现.pdf]]
Dubbo + Nacos:微服务协作层
Dubbo+Nacos.md用一个电商系统的渐进演化过程,把”为什么要拆微服务、为什么需要注册中心和配置中心”讲得很直白。 [[raw/PDFs/Dubbo+Nacos.md|来源: Dubbo+Nacos.md]]- 它的价值在于把服务调用、地址管理、配置管理三个问题串成了一条常见企业架构线。 [[raw/PDFs/Dubbo+Nacos.md|来源: Dubbo+Nacos.md]]
MySQL 内核:数据库底座层
- 《MySQL内核设计与实现》是一部偏系统底层的资料,适合作为数据库内核、存储引擎和实现机制的背景书。 [[raw/PDFs/2025年新书-MySQL内核设计与实现.pdf|来源: 2025年新书-MySQL内核设计与实现.pdf]]
- 对 AI 编程工作流来说,这类书的意义在于:agent 能写 CRUD,不代表它天然懂数据库内核与系统代价,底层书仍然是重要参照。 [[raw/PDFs/2025年新书-MySQL内核设计与实现.pdf|来源: 2025年新书-MySQL内核设计与实现.pdf]]
缓存优化实战:从命中率到策略组合
Fox 爱分享整理了一套系统化的缓存优化方法论:
五套连招:
- 预热:系统启动时提前加载热点数据,避免冷启动击穿
- 粒度重塑:调整缓存 key 的粒度——太粗浪费空间,太细命中率低
- LRU → LFU:从”最近最少使用”升级为”最不频繁使用”,更适合热点稳定的业务
- TTL 柔性控制:不是写死过期时间,而是根据访问频率动态调整
- Caffeine 本地缓存:在 JVM 内做一级缓存,进一步降低延迟
进阶技术:
- 逻辑过期模式:物理不过期,逻辑上标记过期;后台异步刷新,用户无感
- Morris Counter:用极少内存做近似计数,替代精确计数器来驱动 LFU 等策略
对 AI Agent 开发的意义:agent 生成的代码默认不会做这些优化——缓存策略需要人工显式指定。[[raw/2026-05-20/Fox爱分享/面试官:“你们系统的缓存命中率是多少?如果低于 90%,你是怎么优化的?“.md|来源: Fox爱分享-缓存优化]]
Fox 高并发缓存/Kafka 实战系列(2026-06 新增)
Fox 爱分享的三篇面试文章提供了工业级后端架构的三种核心设施的完整选型与兜底方案参考:
Redis 多级缓存六连环炮
一整套从”多级缓存怎么做”到”Redis 全崩怎么办”的极端场景推演:
- 多级缓存一致性:Canal + MQ 异步双删 + 本地自过期(5-10 秒 TTL 兜底)
- 旁路缓存替代方案:Read/Write Through(读写穿透统一抽象)、Write Behind Caching(异步回写合并更新)、分布式锁强一致方案(Redisson RReadWriteLock,金融场景)
- 秒杀 Redis 预扣减三大坑:少买与超卖拉扯(回滚丢数据)、热点 Key 单机顶死(几十万 QPS 轰一个 Key)、链路异步化体验断层(先给希望再绝望)
- 宕机修复:跨机房双活 + Cluster 自动选主 → 唯一流水号 + 状态机异步对账 → 全量 DB 倒推覆盖 → 反向冲正/差错挂账/代金券补偿
- Redis 全崩终极方案:断臂求生——绕过 Redis 核心读请求返回本地缓存的静态 JSON 兜底数据、写请求漏斗限流 99% 后 MQ 盲写、绿色隔离区重建 Redis 后灰度放量
[[raw/2026-06-01/Fox爱分享/听说你觉得旁路缓存很Low?蚂蚁金服一面:高并发下的 Redis 顶级连环炮.md|来源: Fox Redis]]
Redis 脑裂与数据丢失防御
脑裂(网络分区)是 Redis 生产环境中最隐蔽的数据丢失场景。Fox 爱分享通过字节面试题拆解了完整的技术链条 [[raw/2026-06-20/Fox爱分享/字节面试:Redis 机房故障、网络中断 30 秒,恢复后数据丢失,你怎么处理?.md|来源: Fox Redis脑裂]]:
脑裂数据丢失的完整链路:
- 主节点与从节点、Sentinel 之间网络中断,但旧主自身仍在运行
- 孤岛内客户端继续向旧主写入数据
- Sentinel 在
down-after-milliseconds(默认 30 秒)后判定主节点客观下线,将从节点提升为新主 - 网络恢复后,Sentinel 将旧主降为从节点,触发全量同步
- 旧主内存被清空,孤岛期间写入的 30 秒数据全部消失
- AOF 文件也会被全量同步覆盖——即使开了 AOF everysec 也无法挽救
三层回答框架:
- 第一层(落盘分析):兜底最多丢多少数据取决于
appendfsync配置——always零丢失(性能差)、everysec最多丢 1 秒(推荐)、no丢几秒到几分钟 - 第二层(AOF 恢复):AOF 文件完好则可自动重放恢复;损坏时用
redis-check-aof工具修复截断 - 第三层(架构防御):AOF 解决不了脑裂,必须在主节点配置
min-replicas-to-write 1+min-replicas-max-lag 10(Redis 5.0+ 新参数名),确保脑裂期间旧主检测到无从节点后拒绝写入。极端重要数据还要在 Redis 之外建兜底链路——Binlog/Canal/MQ
核心认知转变:这道题考的不是 AOF 和 RDB 的区别,而是有没有从单点思维跳到高可用架构思维。单靠 Redis 本身,AP 架构下极端情况一定会丢数据,兜底要做在缓存之外。
矛盾:之前的缓存优化文章强调的是”怎么用好缓存”,这篇脑裂文章强调的是”怎么在出事时不让缓存害死你”——两者互补,不冲突。
Kafka 选型与三大致命缺点
| 维度 | Kafka | RocketMQ | RabbitMQ | Redis Stream |
|---|---|---|---|---|
| 单机吞吐量 | 百万级 | 十万级 | 万级 | 万级 |
| 时效性 | 毫秒级 | 毫秒级 | 微秒级 | 微秒级 |
| 数据可靠性 | 极高(多副本) | 极高(多副本) | 高 | 较低 |
| 特色 | 天生流处理 | 事务/延迟/重试丰富 | 灵活路由 | 极简轻量 |
Kafka 三大致命缺点:
- Topic 多时性能断崖式下跌:Partition 过多→顺序写退化为随机写。KRaft 模式(Kafka 3.x+ 元数据自管理)可缓解
- 业务功能极度匮乏:无原生定时消息/死信队列/重试机制。需要在客户端自建重试队列 + 时间轮指数退避
- 早期 ZK 依赖运维成本高:需要运维 Kafka + ZooKeeper 两套集群。JVM 堆内存、OS 页缓存、网络吞吐参数相互牵制
架构选型黄金法则:流计算/海量日志→Kafka;金融交易/分布式事务→RocketMQ;微服务解耦/灵活路由→RabbitMQ;小项目/极简→Redis Stream。
[[raw/2026-06-02/Fox爱分享/蚂蚁一面:为什么选Kafka?别的MQ不行吗?.md|来源: Fox Kafka]]
流数据入湖:零 ETL 与架构减法(2026-06 新增)
阿里云消息团队的文章系统阐述了”零 ETL”趋势——将通用入湖能力从外部 Flink/Spark 作业前移到消息主链路中,以降低系统复杂度和运维成本。 [[raw/2026-06-19/阿里云消息团队/AI 时代,实时入湖正在告别 ETL:从 Kafka 到 Iceberg 的架构减法.md|来源: 阿里云消息团队-零ETL]]
背景:实时与历史的双重诉求
Kafka + Iceberg(开放表格式)+ 对象存储已成为一类常见的架构组合。自 2024 年 AWS 推出 S3 Tables 后,流式接入 + 开放表格式 + 对象存储的架构方向更加明确。
零 ETL 真正减掉的是什么
传统链路 Kafka → Flink/Spark Streaming → 开放表 → 对象存储 带来了三层系统复杂度:系统边界增加(多一层运行时和调度体系)、通用能力重复实现(解码/Schema 映射/位点管理/小文件控制等)、平台成本持续上升(额外的流计算集群)。零 ETL 减掉的不是数据处理本身,而是这三层复杂度。
Kafka × Table Bucket 三层架构
- Record 转换:Key/Value 反序列化、Transform 链处理,支持 Avro/Protobuf/String 等多种格式
- Schema 自适应演进:自动感知兼容性变更(ADD_FIELD、MAKE_OPTIONAL、PROMOTE_TYPE 及嵌套结构递归演进),减少人工干预
- Iceberg 写入与事务提交:Append 模式(直接追加写入)或 Upsert 模式(DataFile + DeleteFile),文件达到目标大小(如 64MB)后切换新文件
关键能力
- 双路同步:增量预同步(提交间隙持续读取/转换/写入)与强一致同步(触发时只需提交少量增量),解决延迟-吞吐权衡矛盾
- 多层小文件治理:L1 内存 Buffer 合并 → L2 32MB 微批处理 → L3 64MB 目标文件 → L4 后台 Compaction
- 智能分区策略:支持 7 类分区方式(字段直接分区、Year/Month/Day/Hour 时间分区、Bucket 分区、Truncate 分区)及多维组合
- 完整 CDC/Upsert:原生集成 Debezium 解包,Insert/Update/Delete 映射为 Iceberg v2 Equality Delete
- 多 Catalog API 兼容:Iceberg REST Catalog + OSS Tables 兼容 Catalog
四类优先受益场景
- 实时日志分析:持续写入、查询维度稳定、保留周期长,适合短链路直接沉淀为表
- 数据库变更实时入湖:CDC 语义映射为 Upsert/Delete,保留主键语义与可查询的当前视图
- IoT 多源数据汇聚:高吞吐、多来源、字段变化频繁、历史保留需求强
- AI 多模态训练数据 Pipeline:非结构化数据(OSS 对象桶)+ 向量(OSS 向量桶)+ 元数据(Table Bucket)三桶一体系
边界的清醒判断
零 ETL 不是替代 Flink/Spark Streaming,而是合理分工——复杂计算(窗口聚合、多流 Join、状态管理)留给流计算引擎,通用入湖交给平台内建能力。两者不是替代关系。
LLM Infra 优化:从数学等价变换到硬件压榨(2026-06 新增)
腾讯程序员(binnnliu)的文章深度拆解了 LLM 推理中核心操作的底层 Infra 优化逻辑——AI Infra 优化本质上就是用数学等价变换或精度适度妥协,换取更高的硬件利用率和极致的推理速度。 [[raw/2026-06-17/腾讯程序员/拆解大模型几项核心操作背后的数学与 Infra 优化逻辑.md|来源: 腾讯程序员-LLM Infra]]
这条内容不属于传统的后端系统范畴,但它代表了大模型时代基础设施的下沉方向——GPU 计算效率优化已经成为 AI 系统基础设施的核心组成部分。放在这个页面作为跨领域参考。
RMSNorm:去掉平移的归一化
RMSNorm 基于实验发现——LayerNorm 有效主要靠缩放(除以标准差),平移(减去均值)贡献微乎其微。砍掉均值后只需一次单向 Reduction,节省大量减法操作和寄存器/SRAM 占用。当今主流开源大模型不仅 RMSNorm 去掉了 bias,几乎所有 Linear 层也去掉了 bias——实验有效 + Infra 友好。
Pre-Norm vs Post-Norm
- Post-Norm:先子层计算再残差相加后归一化。主干路径被多次 Norm 打断,梯度层层衰减,深层梯度爆炸,需要 Warm-up 机制打补丁
- Pre-Norm:先归一化再子层计算后残差相加。主干路径为纯粹 x,梯度无损回传,但前向传播会随层数加深出现表征坍塌(Representation Collapse——深层新特征相对于累加的主干越来越微不足道)
- Pre-Norm 牺牲前向质量换反向稳定,使 100+ 层网络成为可能,是当前主流选择
Safe Softmax 与 sqrt(d_k)
- Safe Softmax(-M 技巧):减去最大值后指数运算,防止 FP16 上溢 NaN
- sqrt(d_k) 缩放:Attention 中点积结果的方差随维度 d_k 线性膨胀(Var(qk) = d_k),除以 sqrt(d_k) 将方差拉回 1,防止 Softmax 退化为 Hard Max 导致梯度消失
- 标准差开根号的几何意义:将抽象的数据差异还原为多维空间中的直线物理距离(勾股定理)
Online Softmax
将 Softmax 从 3-pass HBM 访存降为单次流式计算:维护 Running Max (m) 和 Running Sum (l),读入新块时用动态缩放因子修正旧结果。最终将 (m,l) 压缩为一个 FP32 标量 LSE(Log-Sum-Exp),支撑三大核心机制——反向传播 P 矩阵重置(化除法为减法)、Split-K 局部归约合并、跨卡序列并行(Ring Attention)。
FlashAttention 架构演进
| 版本 | 核心变化 |
|---|---|
| FA1 | 外 KV、内 Q,HBM 多次写回中间 O |
| FA2 | 外 Q、内 KV,寄存器累积到底,消除 HBM round-trip |
| FA3/FA4 | Persistent Kernel + TMA Multicast + 软件定义调度 |
SFU 物理瓶颈
LLM Infra 的一个反直觉发现:算 Softmax 里的 e^x 耗时可能逼近矩阵乘法。原因在于 NVIDIA Hopper 每个 SM 仅有 16 个 SFU(Special Function Unit),而 FP32 单元有 128 个——超越函数成为计算流水线瓶颈。FA4 采用 Hybrid SFU+ALU 策略:75-90% 指令走原生硬件 SFU,剩余用 CUDA Core 多项式逼近模拟。
Gumbel-Max Trick
将串行前缀和采样的 multinomial sampling 转化为并行 argmax 操作:给对数概率加 Gumbel 噪声后直接取最大值。vLLM 实现为 argmax(p/q),将采样退化为结合律的 reduce 运算,跨卡通信从 O(V) 降到 O(world_size)。同时统一了贪心采样和随机采样的代码执行流。
核心哲学
大模型是实验科学,Infra 优化的核心逻辑始终如一:用数学等价变换、数值稳定重写、或经过验证的近似/架构简化,换取更好的访存局部性、并行度和 kernel 融合空间。
2026-07 更新:Spring、Nacos、ES 与 Agentic Data
7 月新增来源把后端基础设施线扩展到 Spring Boot 4、Nacos 3.x、ES 深度分页、Agentic 数据底座和 Agent 可观测性。它们和 AI Agent 主线的关系很直接:Agent 可以生成调用代码,但系统性能、一致性、分页漂移、注册中心协议和数据权限仍是传统工程问题,别指望模型自动替你兜住。[[raw/2026-07-01/Fox爱分享/别再回答“加 starter 就能用”了!把 Spring Boot 4 自动配置原理彻底撕透.md|来源: Spring Boot 4 自动配置]] [[raw/2026-07-02/Fox爱分享/看透 Nacos 3.x 注册中心:一次注册背后的 6 个关键设计.md|来源: Nacos 3.x]] [[raw/2026-07-02/互联网服务器团队/从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战.md|来源: ES 深度分页]]
Spring Boot 4 自动配置
Spring Boot 自动配置的关键链路仍是 @EnableAutoConfiguration + AutoConfigurationImportSelector:先收集候选自动配置,再通过条件过滤器剔除不满足 classpath/property/bean 条件的配置。DeferredImportSelector 的价值在于让用户配置先注册,自动配置后判断,从而实现”用户显式配置优先”。Spring Boot 4 将 autoconfigure 按技术栈模块化,降低无关配置扫描和依赖耦合。[[raw/2026-07-01/Fox爱分享/别再回答“加 starter 就能用”了!把 Spring Boot 4 自动配置原理彻底撕透.md|来源: Spring Boot 4 自动配置]]
Nacos 3.x 注册中心
Nacos 3.x 的核心变化是从服务中心化向客户端连接中心化迁移:临时实例走 AP/Distro,持久实例走 CP/JRaft,gRPC 长连接承担心跳和变更推送。一次注册背后涉及客户端连接、实例模型、健康检查、协议同步和服务端分区,不能简化成”往注册中心写一条记录”。[[raw/2026-07-02/Fox爱分享/看透 Nacos 3.x 注册中心:一次注册背后的 6 个关键设计.md|来源: Nacos 3.x]]
Nacos Distro 协议的增量同步采用两阶段任务模型:数据变更先进入 DistroDelayTask,在默认 1000ms 延迟窗口内按 DistroKey 合并,再转为执行任务通过 gRPC 同步到其他节点。这个 1000ms 不是无意义延迟,而是用可接受的新鲜度窗口换取消息量下降。Distro 还通过责任分片保证只有负责某个 Client 的节点发起同步,并用 5000ms 定时校验和版本号对账兜底网络丢包或节点短暂故障。[[raw/2026-07-03/Fox爱分享/拆解 Nacos 3.x Distro 协议:一个 1000ms 延迟背后的分布式设计.md|来源: Nacos Distro]]
Nacos 3.x 的 AI 注册中心把 Prompt、MCP Server、A2A Agent、Skill、AgentSpecs 等资源压到统一模型里:ai_resource 保存资源类型、名称、命名空间、可见范围等元数据,ai_resource_version 保存版本内容快照和发布状态。关键设计是区分内容、端点和版本:Prompt/Skill 更需要 Pipeline 审查门,MCP/Agent 更偏注册元数据;MCP endpoint 查询时可从 Naming 动态注入,而不是在注册时写死。[[raw/2026-07-04/Fox爱分享/Nacos 3.x AI 注册中心设计解密:让 4 套协议在同一张表里和平共处.md|来源: Nacos AI 注册中心]]
这个案例说明后端注册中心正在从”服务发现”扩展到”AI 资源治理”:统一存储不是为了抹平资源差异,而是让版本、权限、审查、命名空间和运行时发现进入同一治理平面。需要特别注意的是强制发布会跳过 Pipeline 校验,风险从传统配置错误升级为 prompt injection、恶意 Skill 包或带漏洞 MCP 工具。
A2A + gRPC + Nacos 分布式 Agent 方案进一步把 Nacos 放到 Agent 控制面位置:Agent 启动后生成标准 Agent Card,把完整 JSON 存入 Nacos 元数据,同时冗余 a2a_cap_streaming、a2a_skills、a2a_protocol_version 等高频筛选字段,避免每次路由都反序列化完整 Agent Card。命名空间、分组、服务名用于环境、业务域和权限隔离;临时实例心跳、K8s readiness/liveness、SDK 本地熔断组成复合健康检查。[[raw/2026-07-05/尼恩顶级架构团队/腾讯面试:如何 基于A2A+ gRPC+Nacos 实现 分布式 Agent 方案,解决Agent孤岛问题?.md|来源: A2A gRPC Nacos 分布式 Agent]]
LLM KV Cache 与推理成本
KV Cache 的工程含义是复用已计算的 Key/Value,避免每轮对完整上下文重复做注意力计算。命中率由可复用输入 token 占比决定,因此稳定系统提示词、固定前缀和连续会话有成本优势;切模型、改前缀、压缩上下文会导致冷启动或缓存断裂。它把 LLM 推理成本问题从”总 token 数”细化成”哪些 token 能按缓存读价复用”。[[raw/2026-07-03/是sudden哦/一文说清大模型缓存命中机制,同样的token,命中和未命中价格相差120倍!不懂KV Cache的人,每个月都在白烧钱.md|来源: KV Cache]]
ES 深度分页与数据漂移边界
ES 任意跳页优化的核心不是硬翻 from + size,而是用 search_after + Redis anchor cache 缓存关键页锚点。它能把 10 分钟级深翻降到秒级,但必须承认数据漂移边界:索引更新后旧 anchor 可能对应旧排序快照,强一致分页需要 PIT/快照或业务上接受近似一致。[[raw/2026-07-02/互联网服务器团队/从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战.md|来源: ES 深度分页]]
Agentic 数据底座与可观测性
火山引擎提出的 Agentic 数据管理服务,把数据库从”被应用调用”推进到”被大量 AI Agent 直接消费”:自然语言 SQL、安全审计、serverless、branch/time travel/PITR、DBCopilot guardrails 都成为新需求。OBI/Agent 可观测性则用 eBPF/uprobe、OpenTelemetry GenAI 和调用链捕获,把模型调用、工具调用、HTTP/SDK/RAG/MCP 纳入同一 trace。[[raw/2026-07-02/字节跳动数据库/从数据库到 Agent 原生数据底座,火山引擎发布 Agentic 全栈数据管理服务.md|来源: Agentic 数据底座]] [[raw/2026-07-02/古琦/不改一行代码,看透 AI Agent 的每一次调用.md|来源: Agent 可观测性]]
相关页面
- [[wiki/concepts/Spec + RAG 与增强开发工作流]]
- [[wiki/syntheses/AI 学习方法、求职与认知升级]]