无标题文档
来源:无标题文档
面试官:线上出Bug你怎么查?
短视频
链接: https://pan.baidu.com/s/1DFeWAwdvsQrw9ZGa2JrcvQ?pwd=jcn9
提取码: jcn9
Part 1:【开场悬念】 (0:00 - 0:25)
(快速剪辑:代码滚动 -> 办公室加班场景 -> 一个人挠头的特写)
[PPT Slide 1: 标题页]
“兄弟们!上周我一个哥们去面字节,面试官问了个特常见的问题:线上出了Bug,你怎么查?”
“他心想这不 so easy 嘛,张口就来:‘看日志啊!’”
(音乐突然停顿,画面定格在面试官微笑的脸上)
“结果面试官微微一笑,反手就是一个王炸:‘那……需要查多久?’”
“我那哥们当场就懵了……因为他想起了上个月,一个用户付了钱但没发货的Bug,值班的兄弟吭哧吭哧查了整整 40分钟 才找到问题!”
“今天,我就带你把这个问题彻底打通!想要完整的技术文章和PPT资料的,一定要看到最后!”
Part 2:【灵魂拷问,戳中痛点】 (0:25 - 1:00)
(音乐变得稍微悬疑、急促)
[PPT Slide 2: 灵魂拷问页]
“为啥查个日志这么费劲?来,你品品面试官这几个灵魂拷问,看你顶得住几层?”
(手指快速划过PPT上的四个问题方块)
“第一问! 一个用户ID搜出8万条日志,哪条是这次出问题的?”
“第二问! 订单、支付、库存,日志分散在3台不同机器,你怎么串起来看?”
“第三问! 请求中间还经过了异步的MQ消息,链路直接断了,你怎么还原?”
“第四问! 1秒钟10万条新日志刷出来,你眼睛跟得上吗?”
[PPT Slide 3: 传统方式痛点页]
“是不是已经开始冒冷汗了?在微服务时代,只用 grep 查日志,就像… 大海挥针一样! 简直是噩梦!”
Part 3:【破局!核心思想登场】 (1:00 - 1:45)
(音乐转为明快、充满希望,出现“叮”的音效)
[PPT Slide 4: 破局思路页]
“怎么破局?思路其实也简单!就一句话:给每个请求,发一张独一无二的‘身份证’!,并实现在调用链路上身份证透传就搞定了”
“这张身份证,在咱们技术圈里,有个酷炫的名字,叫 TraceID!”
(PPT上TraceID高亮放大)
“你看,就像这个19位的数字,当一个请求进来,我们就给它盖个章!无论它接下来是走HTTP、还是RPC、甚至是异步MQ,这个ID就跟个GPS一样,全程跟着它!”
“它就像一条隐形的红线,把所有散落的珍珠(日志)全都串了起来!”
[PPT Slide 5: 效果对比页]
“有了它,效果有多炸裂?我们看一下对比就知道了!”
(左手指向PPT左边“传统方式”) “过去,东翻西找,猜来猜去,40分钟起步!” (右手指向PPT右边“TraceID方式”,加重语气) “现在,只需要复制这个ID,往搜索框里一扔,回车!”
“10秒钟,从请求进来,到每个服务的调用顺序,调用时间,再到最后哪里出了问题,清清楚楚,明明白白!” “效率直接干了240倍!就问你香不香!”
Part 4:【三步实现,优雅永不过时】 (1:45 - 3:15)
(音乐变得更具节奏感和科技感)
[PPT Slide 6: 三步搞定页]
“这么牛的技术,实现起来难吗?其实就三步!而且最骚的是,你的业务代码,一行都不用改! 非常优雅,永不过时!”
(手指依次指向三个步骤)
“第一步:生成ID!”
[PPT Slide 7: 雪花算法页]
“我们用大名鼎鼎的雪花算法,它生成的ID是19位数字,天然带时间顺序,而且在分布式系统里绝对不会重复!高性能,巨能打!”
“第二步:传递ID!”
[PPT Slide 8: 自动传递页]
“这一步是精髓!我们用拦截器和ThreadLocal,像个自动安检门一样。请求过来,自动把ID塞进HTTP请求头;发个MQ消息,自动塞进消息头。全程自动化,业务代码根本不知道它的存在!”
“第三步:打印ID!”
[PPT Slide 9: 日志打印页]
“最后一步,让日志记下这个ID。只需要在日志配置文件里,加一行小小的[%X{traceId}]。然后你所有的日志,就都像这样,自带‘身份证号’了!完美!”
Part 5:【避坑指南,全是干货】 (3:15 - 4:15)
(音乐稍微放缓,增加一些“警告”音效)
[PPT Slide 10: 生产三大坑页]
“兄弟们,理论听着爽,但上了生产环境,会有三个巨坑等着你!我替你们都踩过了,请看解决方案!”
“坑一:线程池! 你开了个异步线程去干活,TraceID直接就丢了!解法: 把你的线程池包装一下,让它能认得这个ID,并传给儿子线程!”
“坑二:日志成本爆炸! 你要是不做处理,一天日志几个T,一年光存储费就够买辆特斯拉了!解法: 搞智能采样!正常的请求,抽1%记录就行;但只要是报错的请求,100%给我记下来! 成本直接打一折,省下99%!”
“坑三:前端客服两眼一抹黑! 用户打电话来报bug,客服怎么知道这次请求的TraceID?解法: 在接口的响应头里,把ID返回给前端。前端可以在页面某个不显眼的地方显示出来,或者在用户反馈时自动带上。这样一来,客服拿到ID,直接扔给研发,10秒搞定!”
Part 6:【总结升华 & 结尾引导】 (4:15 - 5:00)
(音乐变得激昂、有力量)
[PPT Slide 11: 终极总结页]
“好了,兄弟们,总结一下!今天分享的,绝不仅仅是一个技术方案,它是一种‘系统化解决问题’的思维!”
(手势从代码转向大脑)
“让你从一个只会写代码的‘码农’,跃升成一个能洞察问题本质、设计优雅方案、还能预判生产风险的‘架构师’!”
“这才是让你在面试中脱颖而出,让面试官觉得‘这哥们,我要了!’的关键!”
(画面拉近,真诚地看着镜头)
“OK!如果今天的内容对你有启发,别忘了点赞、收藏、加关注,不然一划走就找不到了!”
“有需要这套方案的完整文章和PPT资料的兄弟,私信“全链路日志”,我会把相关资料毫无保留的发给你!”
“今天我们就讲到这,感谢大家的观看!下期视频我们再见,拜拜~”
(结尾动作:自信的微笑 + 一个帅气的挥手)