PD 有 API 可以获取 TSO 吗

目前公司业务需要用到 TiDB 生成 TSO,每秒大概生成1000万次。

调用比较多,不能使用 TiDB 函数来实现。

请问下有没有 API 可以从 PD 获取,或者JAVA代码的实现?

https://github.com/tikv/pd/tree/master/tools/pd-tso-bench

可以使用 bench 工具进行下获取 tso 的压测获取下数据,但是1000w明显太多,满足不了的。

如果是 golang 的话,可以使用 “github.com/tikv/pd/client”,client.GetTS(ctx) api 获取。

其他语言按照grpc调用也可以,接口文档 https://github.com/pingcap/kvproto/blob/master/proto/tsopb.proto

Tso提供了 batch 获取接口,可以极大增加了获取大量tso的可能性。可以参考 github.com/tikv/pd/client 部分实现。

1 个赞

只从TSO的格式上来算,TSO每毫秒最多可以生成2^18(也就是50多万个),理论上还是能提供的。不过每秒1000万次,你可以用上面提到的工具压测一下,看下PD的性能如何。

1 个赞

可以参考一下这个文章

1 个赞

感谢回复,这边综合考虑下来,还是打算使用函数来实现,优化后调用量没有那么大了。

获取 tso,精确到毫秒 & 解析 tso
SELECT CONV(CONCAT(BIN(UNIX_TIMESTAMP(NOW(1)) * 1000),‘000000000000000001’),2,10);
SELECT TIDB_PARSE_TSO(‘441349285006540801’);

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。