Iggy.rs – building message streaming in Rust
blog.iggy.rs
blog.iggy.rs
Good luck with the project!
I also echo some of the others, it would be great to see a sort of comparison with the alternatives so that we can better understand how the project fits in.
It provides really useful SCTP-like multi-streaming, which is a great base to start from. There's already so many good libraries the project or others can work from, and it'll just keep getting better (and better optimized, likely). https://github.com/xileteam/awesome-quic?tab=readme-ov-file#...
This seems like such a natural place where of course having a somewhat better transport protocol than we've had is a huge win. Looking forward to the next decade of QUIC.
I'm also curious about your macOS vs Linux numbers. As a Quinn maintainer, we're always happy to hear feedback including about our performance!
Still, there are plenty of options to be configured in Quinn (buffer size, send/receive window etc.), so it might be that with some tweaking the performance would be similar or QUIC would be even faster than TCP - this is also one of the things that I'd like to spend more time with in the future. We expose most of these options in the server configuration file, so it's easy to adjust.
Thank you for contributing to such a great library, really easy to work with :)
--
Is it more of a message queue like rabbitmq?
If I remember correctly, I had seen iggy.rs in one of the recent applicant resumes to one of our Senior Rust Developer roles. Iggy seems like a cool project. All the best for the future of Iggy.
Fluvio has been in open source development for nearly 5 years now. The team has written hundreds of thousands of lines of code.
Fluvio core is a complete distributed streaming system for unbounded stream processing that is reliable, scalable, self healing. It’s the Kafka bit.
The Flink bit is our Stateful Service Development Kit which is currently in Dev Preview. Stateful Service Development Kit offers a scaffolding to compose complex chained event driven data pipelines.
Once we launch the stateful materialization bit, we will have a complete system for building end to end streaming data flows.
He did it to learn and have fun, but finishing it to be prod-ready would require at least one user.
I'll take a look at the theme as well, thank you.
Here is a blog that is from June 2021 from our CTO laying out the vision for Fluvio.
https://news.ycombinator.com/item?id=38880743
Since the comparison question keeps popping up, I would share whatever we have as well. It's a long drawn documentation exercise and I am happy to share what we have at Fluvio.
Again - Great job with Iggy!
1. How can I run more than one instance of the server?
2. When running more than one instance of the server, how would the filesystem interaction work between servers?
Running as a single node (no cluster support yet)
If cluster is supported, I think this can compete with KafkaI have not compared monoio with glommio, which does run on stable. Would be interesting!
I did compare with glommio a bit and disliked the file API in monoio but that’s probably more a matter of taste.
* only use what is absolutely necessary
* go wild and add tons of stuff
As well as there being two kinds of nightly features:
* stuff that's not stable but has a clear path to becoming stable on some time frame
* stuff that's not stable but who knows when that will change, it may never
And to me, this dependency feels kinda closer to choosing the first option from both lists, which is the most conservative way of using nightly.
Not saying it’s the wrong choice, just highlighting the trade offs.
I’m not sure what you mean by io_uring as glommio/monoio should be hiding the io_uring details behind the runtime.
Speaking of the other platforms, having the fallback to epoll or kqueue (they've even announced some Windows integration) is nice to have, however, at some point we might just purely focus on Linux development anyway (io_uring only), if there'd be any issues e.g. when it comes to the code design to provide the compatibility across multiple OS.
Love it
That should get you started to writing decent code, maybe not aways idiomatic or neatly structured. That might take a few more weeks or months (depending on your interest domains and their inherent complexities). But like with all skills, it's an endless journey; you'll keep getting better as you're increasingly more familiar with the tools.
> All survey participants are professional software developers (or a related field), employed at Google. While some of them had prior Rust experience (about 13%), most of them are coming from C/C++, Python, Java, Go, or Dart.
> Based on our studies, more than 2/3 of respondents are confident in contributing to a Rust codebase within two months or less when learning Rust. Further, a third of respondents become as productive using Rust as other languages in two months or less. Within four months, that number increased to over 50%. Anecdotally, these ramp-up numbers are in line with the time we’ve seen for developers to adopt other languages, both inside and outside of Google.
> Overall, we’ve seen no data to indicate that there is any productivity penalty for Rust relative to any other language these developers previously used at Google.
For ABI Rust has an explicit way to say "Lay this out the way C does" which works for things that you could have done in C. How is everything else laid out? Not your business. So again, your C expertise applies.
Neither Rust nor C formally have agreed pointer provenance rules, if you've learned things that are promised to work in this domain in C most of them also work in Rust. Most things aren't promised to work in C, Aria's Strict Provenance experiment and associated APIs are more than you're going to get from ISO C any time soon.
Aliasing rules are stricter in Rust than C, but also I'd argue much simpler. So that seems not to be a huge amount of extra work.