摘要:皮鞋 老板遇到的热升级实现问题很有趣,这个问题早在我在腾讯做 cc 模块升级期间就频繁涉及,昨晚写了一版 reuseport 约束的,因为这个 reuseport 如今成了热升级的标准利器(无奈内核模块没有 reuseport 类似的东西,只能 sleep 1
皮鞋 老板遇到的热升级实现问题很有趣,这个问题早在我在腾讯做 cc 模块升级期间就频繁涉及,昨晚写了一版 reuseport 约束的,因为这个 reuseport 如今成了热升级的标准利器(无奈内核模块没有 reuseport 类似的东西,只能 sleep 10)。
但为了展示效果,又写了一个纯 demo,与 ebpf 无关,只显示算法逻辑:
test 目录
但为了展示效果,又写了一个纯 demo,与 ebpf 无关,只显示算法逻辑:的 test 目录
但貌似有 bug ...
下图为原理:
下面显示了效果,我故意放大了时间尺度好截图,所以运行有点慢:
吐槽时间到。
Linux 内核的 reuseport ebpf 接口非常不友好,它那个默认的 “用最后一个 item 填洞” 的逻辑无法自定义,所以就必须在外部适配它,不管是 ebpf 程序还是用户态工具程序,都需要一大堆的 map 来维护 status,这就增加了复杂性。既然你连如何 mapping 的权力都给到了,如何增删改查自己留着有啥用呢,一般而言,要么无,要么全,crud 才完美闭环。
浙江温州皮鞋湿,下雨进水不会胖。
来源:大黄律师说法