美图 kv 存储 titan

市面上开源 kv 轮子一大堆,架构上都是 rocksdb 做单机引擎,上层封装 proxy, 对外支持 redis 协议,或者根据具体业务逻辑定制数据类型,有面向表格 table 的,有做成列式存储的

国内公司大部分都有自己的轮子,开发完一代目拿到 KPI 走人,二代目继续填坑,三四代沦为边缘。即使开源也很难有持续的动力去维护,比如本文要分享的 美图 titan,很多优化的 proposals 都没实现,但是做为学习项目值得研究,万一哪天二次开发呢

Mehr lesen

聊聊并发库 conc

上个月 sourcegraph 放出了 conc 并发库,目标是 better structured concurrency for go, 简单的评价一下

Mehr lesen

浅析 redis lua 实现

关于 redis lua 的使用大家都不陌生,应用场景需要把复杂逻辑的原子性,比如计数器,分布式锁。见过没用 lua 实现的锁,不出 bug 也算是神奇

好奇实现的细节,阅读了几个版本,本文源码展示为 3.2 版本, 7.0 重构比较多,看着干净一些

Mehr lesen

IO Pipeline 读 Minio 源码

IO Pipeline 不算什么新鲜事儿,通过 io.Reader io.Writer 等接口,把多个流处理连接一起,只需返回 Reader, 直到调用 Read 函数时才读数据,高效节约内存。类比 Spark 流处理,transformation 时只是传递 RDD, 只有 Action 时才会触发数据计算

Mehr lesen

聊聊最近基于 S3 的项目

提起对象存储,业务唯一扛把子就是 AWS Simple Storage Service (S3), 国内云厂商不需要做什么,要什么创新,直接抄就完事。协义都是现成的,哪家厂商敢不支持 s3 协义,都会被现实打脸,纯纯的开卷考试

Mehr lesen

新手如何调试 MySQL

前几天看到姜老师的旧文用 VSCode 编译和调试 MySQL,每个 DBA 都应 get 的小技能, 文末留了一个思考题,如何修改源码,自定义版本,使得 select version() 输出自定义内容

Mehr lesen

为什么泛型使你的程序变慢

强烈推荐大家读完,可以很好的理解泛型实现,以及当前有哪些性能问题,翻译时我会加些注释,以便大家更好的理解,原文链接请看底部

Go 1.18 发布很久了,人们期待己久的第一个版本终于可以投入生产环境使用。泛型是经常被提到的功能,在 Go 社区中一直存在争议

Mehr lesen

每个 gopher 都需要了解的 Go AST

最近业务迁移,大约 100+ 个接口需要从旧的服务,迁到公司框架。遇到几个痛点:

  1. 结构体 dto 做 diff, 对比结果
  2. 自定义的结构体与 protobuf 生成的互相转换,基于 json tag

Mehr lesen

小技巧!Wireshark 让调试 GRPC 不再困难

以前用 wireshark 分析过 GRPC 流量,非常方便,年初用同样方法分析了HOL blocking 问题,感兴趣的可以看看。今天记录下全过程,分享给大家,贼好用^^

1
ssh root@some.host 'tcpdump -i eth0 port 80 -s 0 -l -w -' | wireshark -k -i -

Mehr lesen

小技巧!Mac 环境下编译 Go 服务

Grab 北京(格步科技)大量招聘 后端开发、全栈、IOS/Android、SRE, 还有少量实习生岗位开放。有意向的请联系我 ^_^

背景

本篇分享来源于上午和同事的讨论。大部份工程师都使用 Mac 做为开发环境,平常 local 编译 go 代码没什么问题,偶尔需要 linux binary, 交叉编译足够了

Mehr lesen