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

↓ 向下滚动

Rust 所有权模型与 缓存一致性 的思考

Rust 所有权模型与 缓存一致性 的思考 前阵子优化一个多线程计数的小工具,逻辑特别简单:几个线程各写各的统计变量,最后汇总一下。结果性能死活上不去,用 perf 一看,热点居然落在根本没几行代码的地方。查了半天资料才反应过来是 false sharing——几个变量挤在同一条 cache line 上,硬件层面天天打架。顺藤摸瓜去补 MESI 协议的时候,看着看着突然愣住了:这套东西怎么越看越...

阅读更多

正则表达式进阶:鉴权体系 匹配技巧

正则表达式进阶:鉴权体系 匹配技巧 前段时间给公司的网关加统一鉴权,方案是 nginx authrequest + JWT,思路很简单:所有请求先被网关拦一道,丢给鉴权服务验签,通过了才放行到上游。听着挺美好,结果联调第一天就翻车了,健康检查、支付回调、还有一堆 /public 开头的静态资源全被 401 了,上游一个请求都没收到。一开始我的想法是给每个路径单独加 location,写到第十几个的...

阅读更多

从零实现一个简易的任务调度

从零实现一个简易的任务调度

阅读更多

限流 的十种打开方式:工程实践笔记

限流 的十种打开方式:工程实践笔记 前段时间一个导出接口被人拿脚本刷了,QPS 瞬间冲到平时的几十倍,数据库连接池直接被占满,连带着一堆不相干的接口也跟着趴窝。事后复盘的时候发现,这服务裸奔快两年了,什么限流都没有...趁着修 bug 的功夫,把限流这摊子事从头捋了一遍,能想到的打开方式都记在这儿,省得下次再抓瞎。 一、固定窗口计数器 最直觉的做法就是数数:一分钟最多放 100 个请求,超了直接打...

阅读更多

分布式锁:写给初学者的通俗解释

分布式锁:写给初学者的通俗解释 前不久上线了一个领优惠券的功能,规则很简单,每个用户限领一张。结果运营半夜找过来,说有个用户领了三张。我翻日志翻到凌晨,代码里的判断写得明明白白,if (received >= 1) return;,逻辑挑不出任何毛病。后来才反应过来:服务是三个实例一起跑的,三个请求分别打到了三台机器上,每台机器都自己判断了一遍“他还没领过”,然后就各发各的了。 这事之后我才明白,...

阅读更多

Redis 缓存穿透、雪崩与 日志采集

Redis 缓存穿透、雪崩与 日志采集 上个月值晚班,凌晨两点多被告警叫醒,一个商品详情接口的耗时从20ms飙到了3s,数据库CPU直接拉满,连接池也满了。第一反应是有慢SQL,登上服务器一看,应用日志里全是同一个请求在刷:GET /goods/999999,而这个ID压根就不存在。也就是说请求根本没被缓存挡住,全部打穿到了数据库上。当时日志散在三台机器上,我是挨个 grep 才把现场拼出来的,折...

阅读更多

机器学习入门:数据脱敏 数据预处理

机器学习入门:数据脱敏 数据预处理 起因 前阵子接了个小活儿,要拿一批真实用户数据训练个分类模型,结果打开 csv 一看,姓名、手机号、身份证号全在里面。直接拿去训练肯定不行,万一哪天数据泄露出去,麻烦就大了。以前总觉得数据脱敏是安全团队该操心的事,真轮到自己头上才发现,这活儿不提前想好,等数据已经散出去了再补救,基本就是灾难现场。 顺便把预处理也一起捋一遍,毕竟脱敏完的数据也不能直接喂模型,中间...

阅读更多

熔断 的十种打开方式:工程实践笔记

熔断 的十种打开方式:工程实践笔记 之前一直觉得熔断这东西,面试背背“三态转换”就够了,实际项目里谁真配啊。直到上个月一个边缘的推荐服务抽风,RT 从 20ms 飙到 3s,把上游订单详情页的线程池打满,最后连网关一起躺下,整个站凉了二十分钟。复盘会上大家齐刷刷说“要有熔断就没这事儿”,然后发现熔断这玩意儿全公司没一处真正落地。于是花了两个周末把能用的姿势挨个摸了一遍,记录如下,省得下次事故再背锅...

阅读更多

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

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

阅读更多

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

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

阅读更多
未在播放