2022年7月第四周周报
生活
莫名其妙的低谷期
- 本周还是没有女朋友的一周,呜呜呜
- 本周状态奇差,周一周天晚饭后突然就什么不想干,觉得自己是 Kind of Loser 的一周
- 本周事情也贼多,四只猫同事生病了,自己生产上搞了事故(技术章中我会完整复盘)
- 本周的业余时间
- 德凯奥特曼第三话,保持目前的态势,德凯要成,人物塑造非常的不错
- 开始复习《实习医生格雷》,医生真的不错
- 大眼珠子的新书《深海余烬》,目前为止,展开的不错
- 复习日剧《仁医》,感动得稀里哗啦
- 本周因为摆烂,没有看闲书
- 本周没有女朋友,没有动力改善伙食(
- 本周出去挑新的植物啦!两盆红枫,两盆茉莉
技术
这周是摆烂的一周,愧疚感爆炸的一周,不过还是简单聊聊吧
- nerdctl 开始写 Issue54 了,增加一些 Filter,目前在写 Image 的部分,下周估计能 PR
- 又是与 Envoy 奋战的一周。有一说一,Envoy 我是坚定的黑粉(具体可以看下 CVE-2019-25225 Envoy 早期的心大程度)。不过其很多的设计还是比较有意思的,比如 Envoy 将 Rate Limit 这样一些常见的功能抽象出来,定义 Protocol,让用户可以不用受限于 Plugin 的局限性而是具备完整的 Service 的扩展能力,这样的设计我比较认可。可以参考 Rate Limit Service (RLS) (proto)
- 又回到了业务系统异常治理的日常,对于一个异常手机系统而言,我觉得应该是具备 Project 粒度的限流能力的,否则如果业务方路子太野导致了异常爆炸,如果不具备限流能力,那么你可能会导致整个业务系统的异常搜集出问题。如果是你的服务商不具备这样的能力,那我觉得 SRE 团队需要具备在上面裹一层流量治理的能力
- 帮群友 Review 周报的时候,大概复习了一下 HTTP3 的 RFC9114,收获挺大
- 本周的论文时间 《XRP: In-Kernel Storage Functions with eBPF》 我太喜欢这篇论文了
- 这篇文章的工作做的相当扎实,比一众 ML System 的论文高到不知道哪里去了(我给作者的问题咨询邮件里也表达了我对这篇论文的超级喜欢)
- 对于 NVME 这样的新型硬件设备,传统的 VFS/BIO 读取这一套已经无法充分的发挥性能(受限于用户态/内核态迁移,Context Switch),即便 SPDK 这样的 Kernel Bypass 的技术也有不少的局限性
- 作者在 5.12 内核上 Patch 了一波,在 NVME 驱动层上封装了一层 eBPF 执行点。可以让用户执行 JIT 后的 eBPF Bytecode,这某种意义上算是 Storage 的 XDP。在 NVME Driver Complete Interrupt 回调用户 BPF Function 后,可以由用户自决是否直接 resubmission command 到 NVME 的 SQ 中。尽可能的减少(用户态 syscall->内核态 VFS -> Kernel Block Layer -> NVME Driver)这样的来回
- 在此内核 Patch 的基础上,作者将一套简单的 KV,有不错的性能
- 整体的项目已经开源,参见 xrp-project
- 排查我的 MBP 为什么在内网下和 NAS 之间带宽不够的问题,结果发现 Apple 会在特定情况下,2.4GHz 更强的情况下将链接切到同一个 SSID 下的 2.4GHz 频段上。即便这个时候 5GHz 频段也很猛,Damn..。
好了,开始本周的一个事故覆盘,以后在允许的情况下,我也会在周报中覆盘我遇到过一些有意思的事。这次之所以覆盘我这周搞出来的小事故,是因为这个事故虽然小,但是比较典型的大意失荆州的例子,所以大概聊聊吧
首先聊聊背景,我这周在落地一个类似网关的东西,需要做流量入口的切换的操作。我之前最开始设计的方案是先新增一个 ALB 关联在新服务上,然后额外新增一个 ALB 对老服务的 ALB 和新服务的 ALB 做流量灰度的操作。当然这就涉及到了对于 CDN 的变更
然后大概的时间线如下
- 我通过 Terraform 开始变更 CloudFront 的 Origin 相关的配置(不过因为业务方另外一个功能错误使用 CF 的 API,导致帐号被 RateLimit,我的变更实际上是没有原子化成功的,导致 API 访问会出现 CORS 的错误)
- 三分钟后我之前做的全球拨测报警开始报警(监控系统的重要性)
- 我开始快速回滚 Terraform 配置,但是由于 Rate Limit ,回滚失败,我直接去网页强行手动修改配置(快速止血)
- 业务恢复
从事故后的视角去复盘这次事故,我犯的错误实际上都比较典型
- 实际上在前段时间一次偶然机会下,我就观察到 CloudFront 限流的问题,然而没有推进业务方的治理
- 实际上在技术方案设计的时候也是比较大意的,有更好的通过 ALB CRD Annotaion 的方式直接灰度流量(虽然写起来比较丑陋),然而我却依靠自己的惯性思路去选择了一条自己最熟悉/最喜欢的路径而不是正确的路径,这实际上也犯了技术方案设计的忌讳
在饿了么时期,我从导师 @tonyseek 那学到的最重要的一句话就是
敬畏生产,遵守 SOP
每当我忘了这句话,或者抱有侥幸心理的时候,事故总会教我做人。所以这句话,也与大家共勉
总结
最近负能量太大了,还是想在周报里积极一点,这周看的日剧《仁医》里,坂本龙马去世前,问南方仁这样一个问题
医生你是怎么看待我们这个时代的呢,一定会觉得很笨的吧
突然想起了大眼珠子在《黎明之剑》我最喜欢的一段话
“朋友,希望这封信没有让你太过意外,在我们有限的智识中,我们实在想不到更好的办法,来与一个可能会在我们死后数十年甚至数百年才会降临这个世界的存在建立交流,人类的寿命过于短暂,而灵魂脆弱难以保留,我又不愿将心智交付于亡灵巫术或神明那缥缈的赐福,思来想去,只能给你写一封信。
“你可能会认为这种‘交流’并无意义,因为当你收到这封信的时候,我可能已经成为泥土的一部分,但对于我们这些寿命短暂又眷恋世界的生物而言,有许多看上去没有意义的行为都是值得去做的,因为纵使死后,我们也有很多放不下的事情。
“你如果能读到这封信,那想必已经如高文卿所言的那样履行了约定,你想必已经降临大地,并在着手振兴这个支离破碎的世界了吧?
“圣灵平原现在产的粮食够吃了么?西北边境那边现在应该不会再冻死人了吧?安东尼一直想在东部地区建造一座坚固的大城,那座城建起来了么?
“我真的很想看看,你那个时代的世界变成了什么模样,我想象力不足,也勾勒不出未来的风景,但我想那至少会是个比现在更好的时代吧?
“我们这个时代……不怎么好。别误会,我仍然热爱这片土地,热爱这片土地上的每一个人以及我们共同建设起的一切,但即便如此,我们仍然生活在一个艰难的世道,粮食总是不够吃,北方的天气比我们启程时所知的还要寒冷。温暖的地方离废土太近,安全的地方万里冰封,我们已经在这片陌生而冷硬的土地上开垦了许多年,但这片土地仍然将我们视为陌生人……
“但是到了你那个时代,这应该都已经是过去的记忆了吧?
“朋友——我不知道你是否会视我为朋友,但我想这么称呼你。高文卿说你会继承他的记忆,继承他的躯体和姓名,在降临大地的岁月里,你就将是另一个他。尽管对于像你这样的存在而言,这可能只是一个临时取用的躯壳,但他跟我说,你值得信赖,值得把许多东西托付,而我一向是信任他的,所以现在我也信任你。
“我相信——如果你连这跨越时光的约定也愿意遵守,连一个在你眼中可能眨眼即逝的族群也愿意关注,那你也一定能实现高文卿和我所畅想过的那些事情。
“所以我便将这一切都托付给你了,一个烂摊子,一个烂世道,一个不那么有前途的种族,一个碎成一地的文明,怎样称呼这些都可以——但请务必珍重它们,因为即便再烂,这也是我们一路走至今日所拥有的一切,是我们最为贵重的珍宝。
“你素未谋面的友人,C。”
这是最好的时代,也是最坏的时代,愿大家在这样碰撞的时代里,诸事顺意,不负此生