Go 1.24用户报告:Datadog如何借助 Swiss Tables版map节省数百 GB 内存?

本文永久链接 – https://tonybai.com/2025/07/22/go-swiss-table-map-user-report 大家好,我是Tony Bai。 Datadog 的故事始于一次对Go 1.24内存回归问题的追踪。在与 Go 社区协作修复了该问题后,他们在部署修复版本的过程中,观察到了一个意料之外的现象:在高流量环境中,内存使用不仅恢复了正常,甚至大幅下降。一个名为 shardRoutingCache 的巨型内存 map,其堆内存占用减少了约 500 MiB,考虑到 Go 的垃圾回收机制(GOGC=100),这相当于节省了近 1 GiB 的物理内存。 ...

July 22, 2025 · 6 min · Tony Bai

自定义Hash终迎标准化?Go提案maphash.Hasher接口设计解读

自定义Hash终迎标准化?Go提案maphash.Hasher接口设计解读 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 17, 2025 · 9 min · Tony Bai

Go map使用Swiss Table重新实现,性能最高提升近50%

本文永久链接 – https://tonybai.com/2024/11/14/go-map-use-swiss-table 在2024月11月5日的Go compiler and runtime meeting notes中,我们注意到了一段重要内容,如下图红框所示: 这表明,来自字节的一位工程师在两年多前提出的“使用Swiss table重新实现Go map”的建议即将落地,目前该issue已经被纳入Go 1.24里程碑。 ...

November 14, 2024 · 16 min · Tony Bai

使用minio搭建高性能对象存储-第一部分:原型

近期参与了一个项目,该项目有存储大量图片、短视频、音频等非结构化数据的需求。于是我优先在Go社区寻找能满足这类需求的开源项目,minio就这样进入了我的视野。 图:minio logo 其实三年前我就知道了minio,并还下载玩(研)耍(究)了一番,但那时minio的成熟程度与今天相比还是相差较远的(当时需求简单,于是选择了较为熟悉的weedfs)。而如今的minio在github上收获了广泛的关注,小星星也是蛮多的(20k+ star)。它不仅被Go社区使用,在其他语言社区也有着广泛应用。我可以不负责任的说:在对象存储领域,minio大有kafka(java技术栈)在消息队列领域舍我其谁的气概:)。 ...

March 16, 2020 · 12 min · Tony Bai