Kubernetes 日志采集 配置避坑指南
Kubernetes 日志采集 配置避坑指南 最近给集群上日志采集,本来以为写个 DaemonSet 跑个 Fluent Bit 就完事儿了,结果日志不是缺、就是乱、要么就是疯狂重复,前前后后折腾了快一个礼拜... 把踩过的坑都记在这了,配置全部实测能跑,直接抄就行,不谢。 先搞清楚运行时是啥,别拿 docker 的解析规则硬套 最开始在测试环境一切正常,因为测试集群跑的还是 docker,日志文...
阅读更多Kubernetes 日志采集 配置避坑指南 最近给集群上日志采集,本来以为写个 DaemonSet 跑个 Fluent Bit 就完事儿了,结果日志不是缺、就是乱、要么就是疯狂重复,前前后后折腾了快一个礼拜... 把踩过的坑都记在这了,配置全部实测能跑,直接抄就行,不谢。 先搞清楚运行时是啥,别拿 docker 的解析规则硬套 最开始在测试环境一切正常,因为测试集群跑的还是 docker,日志文...
阅读更多Kubernetes 分布式锁 配置避坑指南 起因:任务跑了两遍 前段时间把公司的一个定时任务调度器从单副本扩到了两个副本做高可用,结果没过几天,凌晨的任务在数据库里写了两遍。看日志才发现,两个 Pod 同时认为自己是“当前执行者”,说白了就是没有锁。本以为加个分布式锁五分钟的事儿,结果在 Kubernetes 里一路踩坑,forbidden、双主、锁丢失全碰上了。折腾完之后记录一下,没准儿你也能...
阅读更多微服务架构下 熔断 的设计与权衡 前段时间线上出了个事,订单服务依赖的优惠券接口突然变慢,响应时间从几十毫秒飙到十几秒,订单服务的线程池很快被这些挂着的请求占满,整个下单链路跟着一起瘫。最气人的是,优惠券服务后来自己缓过来了,订单服务却还没醒,重启了两台才救回来。事故过后我就想着把熔断这玩意儿认真补一补,查了半天资料,讲原理的文章一抓一大把,讲参数到底怎么定的却少得可怜,可能是我瞎没搜到吧...这...
阅读更多Go 语言 链路追踪 实战:从原理到落地 前阵子线上一个下单接口突然变慢,用户反馈要等七八秒才有响应。这个接口一路串了订单、库存、支付三个服务,日志翻了半天,只知道确实慢,就是不知道慢在哪一段。最后我干了一件很蠢但有效的事:在三个服务里手动打时间戳日志,一条一条对出来,是库存服务里一条没走索引的 SQL。问题解决了,但这个过程实在太难受,于是决定认真搞一搞链路追踪。 结果一查资料就被劝退了一次:O...
阅读更多React 项目中 熔断 的设计取舍 起因是前段时间后端一个服务抽风,接口大面积超时。当时前端页面的表现相当难看:一个列表页里三四个组件各自发请求,全部挂在那儿等超时,loading 转了半天,最后弹出一排报错 toast,用户手一抖刷新了页面,又是一轮。控制台里红色的失败请求刷屏,服务器那边也跟着陪葬。那天我就觉得,这事儿必须在前端加个熔断,不然下次还是这副德行。 熔断本来是微服务里的概念,搬到...
阅读更多Redis 缓存穿透、雪崩与 幂等设计 前阵子接手了一个活动查询接口,上线第一天风平浪静,第二天早上十点活动正式开始,数据库连接池直接被打满了,告警在群里炸个不停。看了一眼日志,全是同一个查询在疯狂打 DB。排查下来发现是活动详情的缓存正好在那个时间点集体过期,几千个请求同时穿透到数据库,这玩意儿就是典型的缓存雪崩。顺带还发现有人拿着不存在的 id=-1 在刷接口,缓存里永远查不到,每次都落到数据...
阅读更多深入理解 Linux 任务调度 的工作机制
阅读更多从零实现一个简易的文件上传 前两天折腾一个小工具,有个特别朴素的需求:网页上选个文件,传到服务器存下来就行。按理说这事儿不大,但真动手的时候发现,网上的教程要么上来就是 Express 加 multer 一整套端上来,要么直接塞给你一个现成组件,为了传个文件引一堆依赖,总觉得有点杀鸡用牛刀。索性从零手写一个,顺便把浏览器上传文件时到底发了些什么东西搞清楚,免得下次再踩上传相关的坑,还是两眼一抹黑。...
阅读更多Python 异步编程与 连接池 实践 前段时间把手头一个同步的采集服务改成 asyncio 版本,改之前想得挺美,觉得换成异步以后并发随便拉,吞吐量翻几倍不是问题。结果一压测就露馅了,并发开到几百的时候请求开始大量超时,日志里全是 TimeoutError 和 ServerDisconnectedError,反而比同步版本还不稳定。折腾了两天才把问题理清楚,发现锅基本都在连接池上。网上讲 asy...
阅读更多从零实现一个简易的配置中心
阅读更多