-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Kafka based persistent stream provider #1205
Comments
Very nice! Thanks for posting this @yoniabrahamy I will leave @gabikliot, @jason-bragg and other Orleans streaming experts to provide more detailed comments. |
Looks great @yoniabrahamy ! Do you guys prefer to keep it in your Gigya repository, or maybe move to https://github.com/OrleansContrib? This is where we plan to have all the non-core Orleans contbution projects. It will help others discover them. Totally up to you. |
Looking through the code, I noticed you are offloading a lot to Thread Pool - going via Also, why do you need ClientGenerator and ClientGenerator/Serialization? |
@gabikliot This is actually sort of a middle-ground solution before the implementation of #756. It doesn't allow full historic rewinding, it just retains messages in the queue cache (the Once we see for a while how this solution fares in production we'll decide whether we want to implement the full solution (#756). |
Thanks for clarifying @randa1. |
hey @yoniabrahamy let me know if you'd like to add it to the contrib org, and I'll add you as an admin. |
@gabikliot about the whole Thread Pool offloading. Basically I sent every Kafka-bound operation to the default scheduler in order to not cause pressure on the Orleans Scheduler with these operations. I took the idea from the implementation of AzureStreamProvider and we also saw that not doing as such causes issues such as Orleans responses not getting in time. |
The discussion about Thread Pool offloading moved to: gigya/Orleans.KafkaStreamProvider#16 |
@richorama Regarding the OrleansContrib question, let's do it. Other than @yoniabrahamy, please also add @armona and myself as admins, as we'll be more actively maintaining it in the future (we're all members of the same team here at Gigya). Sorry for the late answer but I had to verify with other people in the company that it's fine. |
done! |
I found this present under my Christmas tree. :-) This is great! |
@yoniabrahamy The cache mechanism introduced in the Kafka stream provider provides rewind able streams for a period of time, which is something we needed to do with EventHub as well. The issue we ran into when developing this was that messages kept for an extended period of time all end up in Gen2 causing a serious garbage collection hit when running under load. We worked around this by keeping the cached messages in a combination of large blocks of tightly packed data structures and blocks of raw data, both of which were pooled. If you guys encounter similar problems under load you may want to check out PooledQueueCache #1245. This cache is the cache we developed for 343 that addresses the GC hit. The port is still incomplete, but most of the guts are there. |
@yoniabrahamy and @randa1 |
@jason-bragg, I'll take a look. We want to adopt your PooledQueueCache when we have the time, so we're keeping an eye on it too. Thanks! |
side question (related to @gabikliot earlier response): if OrleansContrib is the go to place for "add-ons" to Orleans, do we have a build process, and generating nugets? |
I don't think @richorama has set anything up there. I'm not sure if we can leverage the .NET Foundation resources for that or not. I need to ask them. |
I use travis to build, and manually do the nugets. There are a number of free build systems that could be used, or we could stand one up, or use the .NET one, but it's kind of down to each individual repo to choose the most appropriate, and set them up. Happy to take a suggestion, but reluctant to have a policy. Sent from my iPhone
|
re: build and nuget creation ... this probably needs to move to a new issue |
I am just wondering. What happened with the decision to move this implementation into OrleansContrib? |
Hello all,
This is not really an issue, I just wanted to write in this forum that I have implemented a persistent stream provider based on Kafka. You can check it out here: https://github.com/gigya/Orleans.KafkaStreamProvider
I would love to get some feedbacks about it, we are already using it in a system on production environment and it seems to be working pretty great.
If you have any questions I'll try to write some answers in the following week (although I'm on a Christmas holiday, so I will do my best 😅).
Happy holidays!
The text was updated successfully, but these errors were encountered: