310 karma · joined December 29, 2011
Personal site: alexgallego.org Twitter: twitter.com/emaxerrno
at the end of the day, there is plenty of ppl that are making money on this that is not us and that's cool too. we just need to retain the brand of the code we maintain. that's really the thing that matters.
it's a misconception that redpanda is simply a better kafka. the way to think about it is that is a new storage engine, from scratch, that speaks the kafka protocol. similar to all of the pgsql companies in a different space, i.e.: big table pgsql support is not a better postgres, fundamentally different tech. you can read the src and design here: https://github.com/redpanda-data/redpanda. or an electric car is not the same as a combustion engine, but only similar in that they are cars that take you from point a to point b.
for example, assume you have to write A, B, C ... in syscalls it would be
write( A ), flush() write( B ), flush() write( C ), flush()
so if you add a debounce of say 4ms you get
Write( A ), Write( B ), Write( C ), Flush()
and saved 2 flush()-es
This is common with protocol aware storage applications.
Complexity and industrial level reference impls are crucial
In general this was a response to Confluent attempting to dismiss fsync() as a neat trick rather than an actual safety problem and why when we benchmarked we showcase the numbers we did.
Try this on your laptop see global data loss - hint: multi-az is not enough
Regardless of the replication mechanism you must fsync() your data to prevent global data loss in non-Byzantine protocols.
1. writen to majority 2. majority has done an fsync()
i can see in the future giving people opt-out options here tho.