微服务架构下 数据脱敏 的设计与权衡
微服务架构下 数据脱敏 的设计与权衡 最近在搞微服务的数据脱敏,发现这事比想象中麻烦。原来单体应用一个拦截器能搞定,现在服务拆得七零八落,用户手机号在订单服务、用户服务、通知服务、日志里到处飞。你要脱敏,先得回答:在哪脱?脱给谁看?脱完还能不能用?这些问题不统一,最后就是每个服务各写一套正则,维护起来想死。 先别急着上工具,先把数据流画出来 我一开始也是直接找开源组件,结果发现没有一个能开箱即用。...
阅读更多微服务架构下 数据脱敏 的设计与权衡 最近在搞微服务的数据脱敏,发现这事比想象中麻烦。原来单体应用一个拦截器能搞定,现在服务拆得七零八落,用户手机号在订单服务、用户服务、通知服务、日志里到处飞。你要脱敏,先得回答:在哪脱?脱给谁看?脱完还能不能用?这些问题不统一,最后就是每个服务各写一套正则,维护起来想死。 先别急着上工具,先把数据流画出来 我一开始也是直接找开源组件,结果发现没有一个能开箱即用。...
阅读更多React 项目中 蓝绿部署 的设计取舍 React 项目做蓝绿部署,一开始我以为把 Nginx 的 root 指到新目录就完事了,结果被浏览器缓存和 index.html 教育了一顿。前端蓝绿不像后端那样只要两个实例、切个 Service 就完事,真正麻烦的是静态资源、入口文件和 API 兼容窗口。下面是我们踩过一圈之后留下的方案,以及每一步为什么要这么取舍。 先说结论:别把蓝绿部署想成流量开关...
阅读更多WebSocket 实时通信与 优雅停机 应用 先把场景摆出来 我这边有个实时通知服务,前端用 WebSocket 收消息,后端 Node.js 挂着 ws。功能不复杂,平时也没啥存在感,直到每次发版:进程一重启,客户端就开始批量报“连接已断开”,有些页面还得手动刷新才能恢复。更烦的是,偶尔有消息正好卡在重启那几秒,发是发出去了,但客户端没收到,事后查日志只能看到一行“connection clo...
阅读更多一次线上 分库分表 故障的复盘记录 背景 我们订单库是 4 库 × 4 表,按 userid 取模分片,中间件用的 ShardingSphere-JDBC。平时查询、更新都带 userid,上线快一年没出过大的幺蛾子。结果上周四下午,一个历史数据修复任务把整个订单库差点拖死。 故障现象 14:07 开始告警,订单查询接口大量 500,P99 直接拉满。应用日志里一片: 第一反应是数据库崩了?登上监...
阅读更多从零实现一个简易的分库分表 最近一个老项目的订单表眼瞅着快 3000 万了,单表查询开始有点顶不住。本来想直接上 ShardingSphere,结果看了一眼配置,头有点大。干脆自己写一个简易的,先把分库分表这事儿跑通,后面再换中间件也不迟。下面是实测能跑通的版本,代码不复杂,但坑不少。 先把分片规则定下来 这里不搞太复杂,就按 userid 分。规则是: 也就是说,两个库,每个库两张表,一共 4 ...
阅读更多从零实现一个简易的鉴权体系 最近在折腾一个小项目,本来只想加个登录功能,结果翻了翻现成的鉴权方案,要么是一整套 OAuth 流程,要么直接上 SSO、OIDC,配置文件和概念堆得比我整个项目的代码还多。然后我就想,算了,自己写一个吧,反正就是“注册、登录、证明你是谁”这三件事。 下面这套东西不是拿来上生产的,但它确实能跑,而且整个过程能让你把鉴权到底在干什么搞明白。我做的时候是用的 Node.js...
阅读更多WebSocket 实时通信与 任务调度 应用 先说背景。前阵子给内部做了个任务平台,用户可以提交一批批处理任务,后台跑完再把结果推回前端。一开始图省事,前端直接 setInterval 每 5 秒拉一次 /api/tasks,接口压力倒还好,毕竟用的人不多,但是那个体验是真的难受——任务一多,表格里的状态就一卡一卡地跳,明明任务已经跑完了,前端还得等下一次轮询才能看见。更要命的是,任务执行过程中...
阅读更多微服务架构下 灰度发布 的设计与权衡 前阵子给订单服务做灰度,本来以为在网关配个权重就完事了,结果链路一深,问题全冒出来了。A服务灰度了,B服务没灰度,C服务又调了个旧版本,最后用户看到的页面一半新一半旧,日志里连这个请求到底走了哪个版本都查不出来。所以这篇不聊什么“灰度发布最佳实践”,就聊聊我踩过的坑和最后怎么权衡的,没准儿你们团队也正卡在某个点上。 入口灰度最容易,也最容易给人错觉 最开始我就...
阅读更多Kubernetes 链路追踪 配置避坑指南 先说结论:大部分问题不是链路追踪坏了,是配置没对上 我一开始以为链路追踪就是装个 Collector、加个 Agent,然后 Jaeger 里就能看到漂亮的时间线。结果真在 Kubernetes 里配下来,发现坑比想象中多。最难受的是,它不像 Pod 起不来那样直接报错,很多时候是“有数据,但链路断了”“有 trace,但服务名全是 unknownse...
阅读更多机器学习入门:消息队列 数据预处理 最近给一个入门项目补数据管道,一开始我图省事,写了个脚本扫目录直接预处理,结果数据一多就卡在那儿,终端半天不动,我还以为代码写挂了。后来才发现,不是模型的问题,也不是 Python 的问题,是我把“读文件、解码图片、缩放、归一化、落盘”全塞一个循环里了,前面还没处理完,后面又不停往里灌。这个场景其实很适合把消息队列拉进来:生产端只管把“要处理哪张图”丢进队列,消...
阅读更多