Crates.io | loglogd |
lib.rs | loglogd |
version | 0.1.0 |
source | src |
created_at | 2022-07-22 03:41:12.907367 |
updated_at | 2022-07-22 03:41:12.907367 |
description | Distributed replicated binary log |
homepage | https://github.com/rustshop/loglog |
repository | https://github.com/rustshop/loglog |
max_upload_size | |
id | 630552 |
size | 57,143 |
LilLil LogLog (or just LogLog for short) is (well... will be) a distributed, replicated, ordered, strongly consistent, (eventually) fault-tolerant binary log in Rust.
Anytime I think about communication patterns in distributed systems, it hits me that I really, really need:
There's a reason every distributed storage starts with replicated log under the hood. So why there are so few distributed logs that I could use directly?
The closest thing to what I want is Log Cabin, but I want it be content-oblivious, and will try to make it faster. Plus I'm not touching C++. Another similiar thing seem to be Apache BookKeeper, but it is just another resource and operationally heavy Java project that I don't want to work with.
So here is the plan:
read
,
then use the lenght to copy the content to file's fd
ASAP. Ideally this would be zero-copy,
but seems like tcpsocket->file can't be zero-copy. Since we probably need to load into userspace
buffer, might as well keep the most recent ones for fast response.tokio-uring
has enough functionality to fit these needs, so might as well start with it.I'm definitely a lillil bit out of depth here, but I trust the Internet will reliably tell me which of my ideas are stupid, and worst case I'll just learn some stuff and deliver nothing. 🤷
Read the design doc