跳到主要内容

11 篇博文 含有标签「Backend」

后端开发与分布式系统

查看所有标签

面试题:设计一个 IM 即时通讯系统——百万长连接怎么撑住、消息怎么做到不丢不重不乱序、万人群的消息扩散怎么算账?

· 阅读需 34 分钟

这是「每日一题」专栏的第二十三篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇是 MySQL 索引与深分页,文末预告的分布式 ID 生成器在 8 月 16 日已经出过一版 基础篇,再写一遍是重复劳动,所以今天换成同属系统设计方向、但更贴近日常后端的一道硬题:IM 即时通讯系统。

这题的杀伤力在于它「看起来谁都能画个框图」:客户端、网关、业务层、存储,几笔就画完了。但只要面试官往下一问——「单机百万连接,内存要多少 GB?端口够用吗?」「网关到底是不是无状态?」「你说消息不丢,丢在哪几个时刻?」「顺序用什么保证,时间戳行不行?」「一万人群发一条消息,写放大是多少倍?」——画框图的人立刻熄火。今天把这五个追问的账全部算一遍。

面试题:MySQL 为什么用 B+ 树而不是 B 树或跳表?联合索引的最左前缀怎么生效、回表与覆盖索引的代价怎么算、limit 100000, 20 这种深分页为什么慢、怎么优化到 O(1)?

· 阅读需 18 分钟

这是「每日一题」专栏的第二十二篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇是 长上下文与 RoPE 长度外推,今天按轮换回到后端/分布式方向,兑现上一篇的预告:MySQL 索引与深分页。这题的面试杀伤力在于它「人人都会、人人答不满」——绝大多数人能说出「B+ 树矮、叶子有链表」,但一追问「三层的容量账怎么算」「最左前缀为什么断在范围列就没了」「延迟关联为什么还是 O(offset)」,就露馅了。

面试题:分库分表之后怎么在线扩容?不停机把 4 库扩到 8 库,双写、影子表、数据校验与回滚怎么做?

· 阅读需 17 分钟

这是「每日一题」专栏的第二十篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇是 MoE 混合专家,今天按轮换回到后端/分布式方向,兑现昨天的预告:分库分表之后的在线扩容。这题的面试杀伤力很高——很多人张口就是「双写」两个字,但一追问「迁移期间读走哪边」「校验对不上怎么办」「出错怎么退回去」,就答不完整了。

面试题:分布式限流怎么做?令牌桶、滑动窗口各适合什么场景,为什么 Redis + Lua 是集群限流的标准答案?

· 阅读需 9 分钟

这是「每日一题」专栏的第十七篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇讲了 为什么 vLLM 是当前最快的 LLM 推理框架,今天按轮换回到后端/分布式方向,聊上一篇预告的题:分布式限流。

Token 即金钱:LLM 用量计量与计费系统的工程实践

· 阅读需 11 分钟

聊 LLM 应用的工程,大家津津乐道的是推理优化、RAG、Agent 编排,但真正决定一个 ToB/ToC 产品能不能赚钱的,往往是没人愿意写的计量与计费。模型调用不像 MySQL 查询——没有免费的 EXPLAIN,每一次 API 调用都是真金白银的流出;而一旦你开始对用户收费、对开发者分成,计费就从「省钱工具」升级成「信任地基」:计量错了,不是亏钱就是信任崩塌。

这篇文章从后端工程师视角,把「一次模型调用 → 一条 usage 事件 → 一张账单 → 一笔分账」的完整链路拆开:usage 从哪来、按什么价、怎么记、怎么算、怎么对账。基于真实平台(以 DeepSeek 2026-08 官方计价为例)的实操经验,有 schema、有代码、有坑。

LLM 流式响应后端工程:SSE、背压、超时与取消传播的实战细节

· 阅读需 10 分钟

流式输出(streaming)已经是 LLM 应用的默认形态——用户等不了非流式的 TTFB,ChatGPT 系的打字机效果也成了产品预期。但对后端工程师来说,SSE 协议本身只有半小时的学习成本,真正的工程难点在异步管道的生命周期管理:客户端慢了怎么办?上游断了怎么办?用户关页面了,上游还在生成、还在烧钱,怎么办?这篇文章聊的就是这些。

面试题:分布式事务怎么做?2PC、TCC、Saga 各解决什么问题、又各有什么坑?

· 阅读需 8 分钟

这是「每日一题」专栏的第八篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇讲了 KV Cache 与长上下文推理,今天回到后端/分布式方向,聊聊分布式系统里最经典、也最容易被问住的话题:分布式事务。