又是一年夏天。
我对夏天还是很有好感的,这种好感想一想可能是因为以前有暑假吧。提到夏天、暑假这类词语,就会让我想起一种味道,就是那种夏日空调房的味道,有点潮潮的霉味,但又因为凉爽和自在让我将这个味道与舒服惬意建立起联系。
但这几年的夏天并没有让我有重回当年的感觉,对比之下觉得最大的不同是当年的夏天是简单的夏天。简单到可以没有任何目标,没有任何烦恼,纯粹用空调、晚风、电脑、冰棒几个词就可以描述。而现在的夏天并不全部属于我:有需要做的事、有需要达成的目标;即便完成,也背负了一个“让时间过的有意义”的担子——无忧无虑最难得。
最近在干嘛
之前造了一个 Rust 的运行时 Monoio,不过开源之后很多精力被另一个事情占掉了:重写一个 etcd 的缓存代理。现在后面这件事基本结束了,承载了千万 QPS 的流量,CPU 和内存相比 golang 版本都有了大幅降低;继续搞运行时了。
运行时这边新增了 epoll/kqueue 作为 uring 不可用时的 fallback 已经完成开发合并了。内部的 RPC 框架试着适配了一下,4 core 下 1K pingpong 的极限吞吐分别是 35w(tokio), 40w(monoio+epoll), 44w(monoio+uring)。这个适配可以为生产环境提供良好的兼容性,一套代码即可在不同内核版本运行,获得当前内核版本上的最佳性能。
生态也是个大问题,不过目前看 GAT style 是未来的趋势了,没人愿意写 poll。http1 组件基础部分搞完了,目前可以支持比较难用的 http1 client 和 server(当然没有完全 follow rfc,还差了很多细节);tls 也基于 rustls 搞了一个。更上层应用上,和计算机协会搞的 GLCC 一起弄了个写 Gateway 的项目——目前还没有 Rust 写的 thread-per-core 模式的可扩展 Gateway,很不科学,感觉是个机会。
方向选择
本科的时候我主要写 python,后面主要写 golang,现在写 rust。从编程语言上现在算是 all in rust 了。
我个人对这个语言还是很有信心的,更好的安全性、工程性,还有更好的包管理等,终于不用再为了性能忍受 cpp 的裹脚布了。但是 rust 也不是万能的,鉴于较高的学习成本,我觉得中短期内只有对性能或延迟有要求的,或对安全性有要求的基础设施侧会逐渐使用 rust。最上层的业务代码更像是需要快速迭代的胶水,golang 的性能和简便可能已经基本满足需求了,切 rust 的收益和成本对不上。
目前我主要做的都是框架方向,主要涉及如何暴露合理的接口、如何合理抽象、如何处理协议等。除了框架外,存储、计算、网络、内核这几个大方向感觉也可以开始多了解一下。
开心吗
除了一些比较烦的事情以外(比如搞出事故连着好多天被鞭尸),整体感觉还不错。工作压力没那么大,工作内容我也挺认可。工作之外还可以玩玩游戏溜溜弯,还有 3 只小猫咪可以撸。
很大一部分焦虑感来自于未来逐渐增大的确定性。能够一眼看到头真的会令人绝望,可是随着年龄的增长这个确定性的感觉越来越强了。不知道大家说的成长是不是逐渐对此放弃挣扎,虽然我知道这是迟早的事,但就是不想就此承认。为了保持这种不确定性,我会尽量避免在非投资性质的固定资产上做投入,会尽量增强自己技能的适用性,好像能做的也只有此了。
这几个月上海搞封城,有点烦。本想能够四处溜达,结果年假都没花出去。国际形势感觉也有点在走下坡路,局部的战争和主流意识形态的对立,我对此地未来持悲观态度,这是焦虑感的另一个来源。
我觉得人类的思想和精神是相通的,朴素的常识是不看屁股的,也并不与各自的利益挂钩。合作做建设性的事情总是比对抗着拼谁亏损小要好;自由总是比条条框框的限制要好。愿我们能借助互联网上将这种精神延续并普及到更多还没有阳光的地方。