feat: support horaedb submit compaction task to remote
Rationale
The subtask to support compaction offloading. See #1545
Detailed Changes
Compaction node support remote compaction service
-
Define
CompactionServiceImplto support compaction rpc service. -
Introduce
NodeTypeto distinguish compaction node and horaedb node. Enable the deployment of compaction node. -
Impl
compaction_clientfor horaedb node to access remote compaction node.
Horaedb node support compaction offload
- Introduce
compaction_modein analytic engine'sConfigto determine whether exec compaction offload or not. - Define
CompactionNodePickertrait, supporting get remote compaction node info. - Impl
RemoteCompactionRunner, supporting pick remote node and pass compaction task to the node. - Add docs (e.g.
example-cluster-n.toml) to explain how to deploy a cluster supporting compaction offload.
Test Plan
It looks good to me. I just helped to sort out codes, mainly move the compaction client to runner crate.
I am checking it in my local, let's merge it after the double check!
I am checking it in my local, let's merge it after the double check!
I check your commits in my local. It's indeed better to move compaction client to runner crate.
I think we can merge it.
Thanks @LeslieKid