New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking issue for remote WAL based on Kafka #2722
Comments
Roughtly share some thoughts:
First, Entry's ID should be generalized if we keep this interface: /// Create a new `EntryStream` to asynchronously generates `Entry` with ids
/// starting from `id`.
async fn read(
&self,
ns: &Self::Namespace,
id: Id,
) -> Result<SendableEntryStream<Self::Entry, Self::Error>, Self::Error>; Cause Kafka's Second, we should decide how to map Namespace to Kafka's topic. Simply, config a base topic for the log store (wal_dir?), and create a new topic for each namespace ( The other topics would be how much options we should include in the first version, and if we just let message retention to GC. BTW, this doesn't seems a "Tech debt reduction" but a new feature? |
With rdkafka you can simply implement let topic = format!("BASE-TOPIC-{}", e.ns);
let (partition, offset) = self
.producer
.send(
FutureRecord::to(&topic).payload(&e.data).key(&e.id),
Duration::from_secs(0),
)
.await?;
Ok(todo_partition_offset_to_id(partition, offset)) and |
@tisonkun thx for your suggestions! rdkafka is looking great. However, for the usage of kafka as a remote wal service, we prefer rskafka. See the reasons here. As to the kafka topic and partition design, we are taking a very special way. Will illustrate it in the following RFC, stay tune if you are interested! It's kind of "tech debt reduction" because it's a long awaiting feature that's planned since early days. |
This makes sense. Good to know :D |
@MichaelScofield I noticed that part of the tracking items are checked. Are they implemented in a personal branch or privately? |
@niebayes Could you please link your pull requests to the tasks? I think we should mark the item as checked after the related pull request is merged otherwise it is confusing. e.g. I can't find |
@evenyag Unmarked and linked related issues or pull requests. |
What type of enhancement is this?
Feature
What does the enhancement do?
Tracking tasks:
Implementation challenges
No response
The text was updated successfully, but these errors were encountered: