小Cの已经记不起来的博客

↓ 向下滚动

Redis 缓存穿透、雪崩与 配置中心

Redis 缓存穿透、雪崩与 配置中心 上周三晚上运营搞了个限时秒杀,活动开始不到两分钟,数据库 CPU 直接飙到 100%,接口超时报警响个不停。排查下来发现,凌晨批量刷进 Redis 的一批商品数据用的是同一个过期时间,正好卡在活动开始这个点集体失效,请求一股脑全砸到了数据库上。当时群里有人管这叫击穿,严格来说单个热点 key 失效才叫击穿,大批 key 一起失效才是雪崩,那天算是两个都占了。...

阅读更多

Rust 所有权模型与 配置中心 的思考

Rust 所有权模型与 配置中心 的思考 最近在给一个 Rust 写的内部小服务接配置中心,本来以为就是启动的时候拉个配置的事儿,结果产品说改了配置要立刻生效,不许重启。行吧,那就做热更新。然后就掉坑里了:一个全局配置变量,想改,编译器不让;想读,也一堆讲究。折腾了两天回头一看,配置中心这套东西跟 Rust 的所有权模型居然是能一一对上的,索性记录一下。 先说踩的坑 最开始的写法很朴素,全局放一个...

阅读更多

Go 语言 分布式锁 实战:从原理到落地

Go 语言 分布式锁 实战:从原理到落地

阅读更多

Redis 缓存穿透、雪崩与 缓存一致性

Redis 缓存穿透、雪崩与 缓存一致性 前段时间接手了一个老服务,缓存这块写得很朴素,就是经典的“查缓存,没有就查库,查完回写”。我一开始也没觉得有啥问题,直到某天凌晨被告警短信吵醒,看了一眼监控,MySQL 的连接数和 CPU 直接拉满,缓存命中率却掉得一塌糊涂。排查了一圈,发现是缓存这层埋了几个经典的坑。趁还热乎,把这几个问题和解法整理一下,免得下次再踩。 缓存穿透:查一个根本不存在的数据 ...

阅读更多

微服务架构下 鉴权体系 的设计与权衡

微服务架构下 鉴权体系 的设计与权衡 最近把手头一个跑了三四年的单体应用往微服务上拆,业务逻辑迁移都还算顺利,结果在鉴权这块卡了好几天。单体的时候一个 Session 走天下,登录之后用户信息往 ThreadLocal 一塞就完事了,拆完之后发现事情完全不对:用户在服务 A 登录了,服务 B 压根不认识你是谁。网上搜了一圈,大部分文章要么无脑吹 JWT 无状态多好多好,要么就是画一堆架构图讲“集中...

阅读更多

Python 异步编程与 优雅停机 实践

Python 异步编程与 优雅停机 实践 起因 前阵子写了个基于 asyncio 的消费服务,从队列里拿任务、处理、写库,平时跑得好好的。直到有一天更新部署,习惯性 docker compose restart 下去,服务是重启了,一查数据库发现好几条记录状态停在中间,消息队列里还躺着一堆 unacked 的消息等着重投,等于这批活儿白干了。 最早我还试图自救过一把,在信号处理里直接 loop.s...

阅读更多

Rust 所有权模型与 蓝绿部署 的思考

Rust 所有权模型与 蓝绿部署 的思考 最近同时在干两件看起来毫不相关的事:下班啃 Rust,上班给公司一个老服务从滚动发布改成蓝绿部署。本来以为一个语言特性、一个发布策略,八竿子打不着,结果越做越觉得它们在讲同一件事:一个资源同一时刻只能有一个所有者,交接必须显式,不能靠猜。 先说 Rust 那边 Rust 里每个值都有明确的所有者,赋值默认是 move 而不是 copy,旧的变量移交之后就失...

阅读更多

React 项目中 消息队列 的设计取舍

React 项目中 消息队列 的设计取舍 最近在改公司的客服聊天模块,踩了一堆坑。起因很简单:测试提了个 bug,说快速发消息的时候偶尔会出现自己发的两条消息顺序颠倒,还有小概率某条消息直接消失。我第一反应是不可能,socket 本身是有序的啊。结果排查了两天发现,socket 确实有序,但消息从 onmessage 到 setState 再到渲染,中间被我们自己的代码搅得一塌糊涂。说白了,项目里...

阅读更多

Nginx 反向代理 灰度发布 配置详解

Nginx 反向代理 灰度发布 配置详解 最近公司项目要上灰度发布,本来想着找个现成的网关方案,什么 K8s + Istio 之类的,结果一算成本和复杂度,算了,咱们这小体量,Nginx 自己配一下就够了。折腾了两天,踩了几个坑,把实测可用的方案记录一下,免得下次又忘了。 什么是灰度发布 简单说就是新版本代码部署上去之后,不是一刀切把所有流量都切过去,而是先放一小部分用户(比如 5%)到新版本上,...

阅读更多

从零实现一个简易的优雅停机

从零实现一个简易的优雅停机 前段时间部署服务的时候遇到一个很烦的问题:每次发新版,kill 掉旧进程的瞬间,正在处理的请求直接被掐断了,客户端那边时不时收到连接被重置的报错。一开始还以为是网络问题,排查了半天才发现,就是停机的时候太粗暴了。所以这次干脆花点时间,自己动手实现一个简易的优雅停机,顺便把过程记录下来。 什么是优雅停机 简单说就是:进程收到退出信号后,不再接收新的请求,但是把手头正在处理...

阅读更多
未在播放