存算分离下groupcommit是否支持wal写入

Viewed 4

**场景:**存算分离,数据写s3。版本3.1.4

**数据流:**源数据发送mq,然后用k8s上的pod接收,有100个pdo,我在k8s的每个pod接收多个mq消息,一个消息就是一个sn,然后每个sn解码出大概80张热表,然后在pod内部我会将几个sn的数据按照表聚合,相当于已经做了攒批,然后用stream load的方式提交到doris。

**问题:**目前看下来这种方式因为有100个pod同时解码提交,会产生单表并发问题。然后在ms的log中也发现了fdb的commit冲突,比较多。展现在客户端的情况就是一个pod中某些表提交doris后返回的速度很慢,有超过10s的,因为是的pod中逻辑是必须等待所有表提交完,这个request才会结束,这样就拖慢了我处理sn的速度。

**我的想法:**我现在的想法是用group commit的async_mode方式,异步提交,但是存在问题,如果异步提交,客户端是返回了,但是提交给be的数据如果没有wal持久化到本地,只是在memtable cache中,那么如果be崩溃,这部分数据就丢失了,客户端也没有感知,这样是不行的。经过调查,存算一体的方式中group commit的async_mode,数据先到memtable后会写入wal,此时返回客户端,be自己在后台提交到s3上。这个模式因为有wal本地存储,即使be崩溃,数据还在可以恢复,没有问题。

**我的问题:**我现在是想确认存算分离情况下group commit的async_mode方式是否也有这种wal持久化本地的功能?

image.png

image.png

image.png

0 Answers