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

↓ 向下滚动

Go 语言 热更新 实战:从原理到落地

Go 语言 热更新 实战:从原理到落地 先交个底:严格意义上的热更新,Go 做不到 事情是这样的:手上有个内部网关服务,转发规则改得比谁都想得勤,每次改完都得重启,高峰期重启就是直接掐断在途请求,前端那边肉眼可见地报错。同事问我能不能搞热更新,我心想 Go 是编译型语言,哪来的热更新,但话出口了活儿还得干,就把能想到的几条路全趟了一遍。结论先放这儿:像 Erlang 那种运行中原地换代码,Go 是...

阅读更多

微服务架构下 日志采集 的设计与权衡

微服务架构下 日志采集 的设计与权衡 上周排查一个超时问题,从网关到下游一共跨了五个服务,我开着五个终端窗口挨个 kubectl logs + grep,grep 完了还得自己对时间线,来回对了一个多小时才把整条链路的日志拼起来。拼完那一刻我就想,这事不能再这么干了,日志采集这块是时候好好收拾一下了。 趁记忆还热乎,把这次重构里做的几个决策和对应的权衡记下来,省得下次再纠结一遍。 先统一输出,再谈...

阅读更多

机器学习入门:日志采集 数据预处理

机器学习入门:日志采集 数据预处理 最近打算入门机器学习,跟着教程跑了一圈,发现数据集全是现成的:鸢尾花、MNIST、泰坦尼克,下个 csv 直接 pd.readcsv() 就完事了。但总觉得这样学不踏实,正好手头有台服务器,nginx、ssh 天天在上面写日志,这不就是现成的数据吗... 于是决定从日志采集做起,把数据这条链路完整走一遍,踩坑记录如下。 日志从哪来 日志其实不用刻意“采集”,服务...

阅读更多

缓存一致性 的十种打开方式:工程实践笔记

缓存一致性 的十种打开方式:工程实践笔记 上周评审代码,看到同事在一个写接口里先更新数据库、紧接着又把新值 set 回缓存,我就多问了一句:“这俩操作中间挂了怎么办?”他愣了一下,我也愣了一下,因为发现要把这件事说明白,还真得从头捋一遍。干脆趁着有空把这些年用过、见过、踩过的方案都整理一遍,就当是给自己的备忘。 1. Cache Aside:最常用,但口诀别背错 读:先读缓存,未命中再读库并回填。...

阅读更多

用 Docker 搭建配置中心的完整流程

用 Docker 搭建配置中心的完整流程 最近迁移一个跑了快两年的小项目,才发现配置文件散落在三台服务器上,改个 Redis 地址得挨个登上去 sed 一遍再重启服务,中间还漏改了一台,排查半天才发现是两边配置不一致。痛定思痛,决定搭个配置中心。选型看了一圈,Apollo 功能是全但太重了,Consul 又没有原生的配置管理界面,最后选了 Nacos,单机模式一个容器就能跑,对我这种小项目来说刚刚...

阅读更多

性能优化手记:灰度发布 排查全过程

性能优化手记:灰度发布 排查全过程 起因 上周给订单详情服务发了个新版本,改动不大,就是在接口返回里加了个用户标签的展示,照例先灰度 5% 的流量,观察半小时没问题再全量。结果发上去还不到十分钟,告警群就响了,P99 从平时 80ms 左右直接飙到 500 多毫秒,灰度实例上尤其明显。 第一反应肯定是回滚,但转念一想,才 5% 的流量,影响可控,不如先按住别动,趁这个机会把原因查清楚,不然回头全量...

阅读更多

Nginx 反向代理 蓝绿部署 配置详解

Nginx 反向代理 蓝绿部署 配置详解 起因很简单:站点每次更新,我都是直接把旧进程一杀,换包重启,那十几秒里所有请求全是 502,有人正在用就直接被踢出去了。之前流量小都忍了,直到有一次更新正好赶上有人在操作,群里当场有人问“网站挂了?”,怪尴尬的。于是琢磨着搞蓝绿部署,说白了就是同时跑两套一样的服务,一套对外服务(蓝),一套闲着(绿),更新只更新闲的那套,测好了把流量切过去,全程不断线。 原...

阅读更多

Go 语言 任务调度 实战:从原理到落地

Go 语言 任务调度 实战:从原理到落地 起因 前段时间接手了一个内部小服务,打开一看,里面塞了十几个定时任务,全是一个套路:起个 goroutine,里面 for 循环加 time.Sleep。跑是能跑,但改个执行周期要重新编译发版,任务 panic 了进程直接挂,日志里也完全看不出哪个任务几点几分跑的、跑了多久。想着反正要重构,干脆把 Go 任务调度这块从头到尾捋一遍,顺手把踩的坑记下来,就有...

阅读更多

Git 工作流中的 鉴权体系 最佳实践

Git 工作流中的 鉴权体系 最佳实践 前几天帮同事排查问题,他重装系统过后代码拉不下来了,push 一路报 Authentication failed。我瞄了一眼他的 remote 地址,好家伙,token 直接拼在 URL 里,还是两年前生成的,早过期了...说白了就是当年图省事埋的雷。趁着这个机会,把我这几年在 Git 鉴权上踩过的坑和最后固定下来的一套做法整理一下,都是实测可用的。 HTT...

阅读更多

React 项目中 任务调度 的设计取舍

React 项目中 任务调度 的设计取舍 最近在改一个数据看板的项目,首页一个页面要并发拉三十多个接口,然后渲染一堆图表和表格。测试机上一打开,浏览器直接卡住好几秒,接口那边还报了限流。同事说要不加个 loading 遮罩吧,我心想这不是 loading 的事,是任务全挤在一瞬间了。于是就开始折腾任务调度这摊子事,中间踩了不少坑,记录一下,顺便聊聊每个方案的取舍。 问题到底出在哪 先把问题拆开看,...

阅读更多
未在播放