Personally, I think this video was all over the place and even though some ideas are valid, I think a coherent design was not landed. Would consider revisiting this video as the quality of other videos has been really good, keep the good work.
Unfortunately, this video left me with a lot of unanswered questions, as some portions seemed intentionally or unintentionally hand wavy. This is one of the most confusing videos on the channel.
I made it to Meta E5 thanks to your channel and the site. Without you it's not possible. I am always grateful for your workπ
The time window aggregation part went completely over my head
The windowing part is too hard to follow. I would instead lean on some data streaming solution and storing into persistent DB at frequent intervals.
My goodness, I thought am I too dumb to get so confused on a hello interview video. Thankfully others feel the same. Definitely revisit this content considering how high quality the rest of the content is. This one was really confusing for me, ideas were all over the place too much information within short period , less context. I would love more infra content but slightly easier to digest like other videos on this channel. Really appreciate the content thoβ€
Please create video for these topics => I love the way you approach System Design problems and it really helps to build intuition 1. Payment gateway like stripe 2. Payment system like Paypal 3. Stock Exchange System =====> (could not understood Alex Xu book chapter) 4. Wallet Service =====> (could not understood Alex Xu book chapter)
At first, I couldn't fully understand your solution, but after learning about how Flink handles these kind of sliding window-based grouping, counting, and sorting, now I understand how it works, but there's a few things to be clarified. 1. heap should actually be balanced-binary searching tree so you can know specific videoId exist in it and update random element's count in O(logK) and getting some elements from it without popping off. 2. lagged Kafka event doesn't scale efficiently for the windows with long size(e.g. Top K for last month, year). We have to use pretty large amount of additional space to store those delayed events. I think we could have a timer in the service having a heap and counter that runs for every period(e.g. 10 seconds or 1 minute) and reflect the count for the bucket outside the current window and increment the count for new bucket coming in to the current window to the current global counter.
Hello. I've been following your channel for some really good content, but this video didn't meet the high bar that was set prior. I believe the focus of the video should have been primarily on the count-min DS v/s delayed processing and decrementing. Reason is because the delayed read can either be done by creating duplicate kafka streams or partitions that will have the delay enabled. Or, implementing a custom logic in the counter application to persist the information and then read it after some delay, which seems to be an overkill. There isn't an OOTB solution to read delayed messages without incurring any overhead. The count-min solution does look optimal though and a deep dive on that would be a great next video! Thanks again for your continuous efforts in sharing the immense knowledge that you guys have!
I've been waiting for this video! Never been so excited for a youtube video!
This was extremely helpful. I learnt so much, especially about using sliding windows to update time/lag offsets. Thank you!
will you please create a video explaining the deep dive part in more details? it a bit hard to visualize everything from even a client perspective and the stream perspective simultaneously, definitely easy for you with the knowledge you have.
I'm so extremely glad to hear this video out. The written explanation had me lost honestly with how we're handling the edge case (when we are saying the solution is to increase the size of the heap when potentially everything can be falling off, this wasn't really called out in the original text). I have been loving the entire content of hello interview and given my constant readings on system design, this is definitely the best place anyone can really study. You guys are so concise, clear and offer even complex solutions in such a digestible manner. As much as I want to gate-keep this content for myself, I want to see you guys explode (honestly the rarest feeling I ever get). Tl;dr You guys rock and thank you so much for the amazing content. Honestly, I would love to contribute to your vision if that's a possibility at all. If you end up reading this and want a few extra hands on deck, lemme know and I would be super happy to.
the initial explanation of a sliding window isn't that clear to me. my thought was that if you're asking for the top k most popular videos *today*, it could be relevant, but i have trouble seeing how it would be relevant if the time period has a fixed start and end.
At 25:45 you took the Top K Service out. Given this is just 1 instance of Top K service, do we still need a load balancer before it? Don't we need a load balancer after it before the sharded counter service instnces?
Love these videos, best content I have seen. Feel bad for the people who are missing out on this channel
This is awesome. Gives me the POV of a senior manager
Also at 26:41, how they are sorted list? I thought a heap structure doesnt garantee all contained elments are in sorted order. Am i missing something here?
Thanks for the video. Several maybe a bit stupid questions: 1/ How would you store the heap? Is it simply stored in in-memory? 2/ With several shards and aggregation how do you guarantee 10-100ms latency?
@hello_interview