-
数据库慢查询优化完全指南:从一次"数据量一大接口就卡死、加了索引却没用"看懂慢查询治理
2021 年我做一个电商后台有一个订单列表接口。第一版我做得很省事写一句 SQL 把订单查出来按时间倒序分页返回。开发期和测试环境我测了测真不错翻页飞快几十毫秒就返回。我心里很踏实查数据库嘛写条 SQL 查出来就行了真慢了给条件列加个索引不就快了。可等这个系统真正上线订单表的数据从几万行涨到几百万行一串问题冒了出来。第一种最先把我打懵数据量一大这个列表接口直接卡死一次查询要几十秒接口频频超时。第二…- 0
- 0
-
CDN 缓存完全指南:从一次"发了新版用户还看旧的、源站一挂整站全白"看懂 CDN 的正确用法
2022 年我做一个内容网站要给静态资源接入 CDN 加速。第一版我做得很省事把域名 CNAME 到 CDN 厂商配一个回源地址指向我的源站完事。本地和小流量下测了测真不错图片 JS CSS 加载肉眼可见地快了。我心里很踏实CDN 嘛把域名 CNAME 过去静态资源自动就走 CDN 加速了不就行了。可等这个网站真正上线扛起真实的用户流量一串问题冒了出来。第一种最先把我打懵我发布了一版新代码改了 C…- 0
- 0
-
数据库死锁完全指南:从一次"大促下单成片失败、库存还被扣两次"看懂死锁的根治
2022 年我做一个电商的下单系统下单时要在一个事务里挨个扣减购物车里每个商品的库存。第一版我做得很省事拿到购物车的商品列表就按列表里的顺序一个个 UPDATE 过去。本地我下了几十单测了测真不错库存扣得准订单也对得上。我心里很踏实事务嘛把要改的几行包进一个 BEGIN COMMIT 数据库自己会保证一致。可等这个系统真正上线扛起大促的并发下单一串问题冒了出来。第一种最先把我打懵后台日志里时不时蹦…- 0
- 0
-
数据库读写分离完全指南:从一次"用户下单后看不到自己的订单、主库宕机丢了几千条数据"看懂主从复制
2021 年我做一个交易系统流量涨上来数据库的读压力越来越大。第一版我做得很省事配一套主从复制一主一从然后把所有的读查询全甩给从库写还留在主库。本地我开两个库测了测真不错读和写分了家主库轻松了。我心里很踏实读写分离嘛配好主从复制读全走从库不就行了。可等这套架构真正上线扛起真实流量一串问题冒了出来。第一种最先把我打懵用户刚刚下单成功页面跳到我的订单却看不到那笔刚下的单他以为下单失败了又下了一遍。第二…- 0
- 0
-
数据库变更完全指南:从一次"线上加个字段、整张表锁了十分钟、服务全挂"看懂在线 DDL
2022 年我做一个用户系统要给 users 表加一个字段。第一版我做得很省事既然要改表结构那就直接在生产库上敲一条 ALTER TABLE。本地我拿一张几百行的小表测了测秒过。我心里很踏实改表结构嘛就是直接 ALTER TABLE 一下数据库自己会搞定。可等这条语句真正跑到线上落在那张几千万行的大表上一串问题冒了出来。第一种最先把我打懵那条 ALTER 跑了整整十分钟这十分钟里 users 表的…- 0
- 0
-
分布式 ID 生成完全指南:从一次"两台机器同时生成了一样的订单号"看懂雪花算法
2021 年我做一个订单系统要给每一笔订单生成一个全局唯一的订单号。第一版我做得很省事订单表是 MySQL 我直接用了表的自增主键当订单号。本地一测完美每插一条订单 ID 自动加一从不重复。我心里很踏实生成唯一 ID 嘛数据库自增不就行了要么随手 UUID 一下。可等系统真正长大扛着真实的业务量一串问题冒了出来。第一种最先把我打懵订单量上来后我做了分库分表把订单拆到两个库结果两个库各自从 1 开始…- 0
- 0
-
Redis 持久化完全指南:从一次"服务器一重启、Redis 里的数据就少了一大半"看懂 RDB 与 AOF
2022 年我给一个项目做缓存层用的是 Redis。我当时想数据都在内存里万一服务器重启不就全没了所以得开持久化。第一版我做得很省事在 redis.conf 里抄了一行 save 900 1 心想这下数据就落到磁盘上了。本地测试时我特意重启了一次 Redis 数据还在我心里很踏实持久化嘛不就是在配置里开一下数据就落盘永远不会丢了。可等它真正上线扛着真实的流量和真实的意外一串问题冒了出来。第一种最先…- 0
- 0
-
JWT 鉴权完全指南:从一次"用户改了密码、旧 token 却还能畅通无阻登录三天"看懂无状态令牌
2023 年我给一个后台系统做登录鉴权。我听说 JWT 现在很流行无状态不用查数据库天生适合分布式于是就用了它。第一版我做得很省事用户登录成功我就把用户信息打包成一个 JWT 签发出去用户之后每次请求带上这个 token 我解开验一下放行。本地一测完美登录带 token 访问接口一气呵成。我心里很踏实鉴权嘛不就是签发一个 token 用户带着它来我解开验一下身份就行了。可等它真正上线面对真实的用户…- 0
- 0
-
Nginx 反向代理与负载均衡完全指南:从一次"后端挂了一台、用户每三次请求就撞一次 502"看懂代理层
2022 年我给一个后端服务加了 Nginx 做负载均衡。原本服务只有一台机器扛不住量我加到三台前面挂一个 Nginx 分流。第一版我做得很省事写一个 upstream 把三台后端的地址填进去 location 里 proxy_pass 一指完事。本地一测真香请求轮着打到三台机器负载看着挺均匀。我心里很踏实负载均衡嘛不就是 upstream 里写几个后端地址 Nginx 自动帮我分流。可等它真正上…- 0
- 0
-
数据库事务隔离级别完全指南:从一次"两个人同时下单、库存被卖成了负数"看懂脏读幻读
2023 年我做一个电商的库存扣减功能。逻辑看着特别简单用户下单我就查一下库存够不够够就扣减生成订单。第一版我做得很省事查库存判断够不够扣减三步我把它们包进了一个数据库事务里。本地一测毫无问题下单扣库存生成订单一气呵成。我心里很踏实把这几步包进一个事务里它就是原子的就安全了。可等它真正上线撞上大促的高并发一串问题冒了出来。第一种最离谱一个只有 1 件库存的商品居然卖出去了 3 单库存字段变成了负二…- 0
- 0
-
gRPC 完全指南:从一次"加个字段老服务就错乱、一个慢服务拖垮整条链"看懂 RPC 框架
2023 年我把团队内部几个服务之间的调用从 REST JSON 改成了 gRPC。第一版我做得很省事写了个 proto 文件生成客户端和服务端代码服务之间直接互相调用。本地一测真香比 JSON 快还带类型检查改个字段编译器立刻报错。我心里很踏实gRPC 嘛不就是一个更快带类型的 HTTP 接口。可等它真正上线跑在真实的多服务环境里一串问题冒了出来。第一种我给 proto 加了一个字段重新发布结果…- 0
- 0
后端开发
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!











