Live data from Hacker News

Streams: a new general purpose data structure in Redis

antirez.com

151–154 of 154 posts

Re: Streams: a new general purpose data structure in Redis

#151

The consumer groups proposal breaks the FIFO abstraction of a stream by allowing multiple clients to process a single stream. Have you considered adding a semantic layer inside streams that allows each client to consume a substream? In effect the stream becomes multiplexed substreams. If substreams makes the design too complex... have you considered server side stream 403 semantics? When a stream is manually deprecat…

Don't use consumer groups and every client will get a complete copy of the stream. What is broken with that?

The use case I'm referring to is when the client must be sharded to avoid CPU or network or disk bottlenecks.

Re: Streams: a new general purpose data structure in Redis

#152

Earlier quoted context omitted.

Don't use consumer groups and every client will get a complete copy of the stream. What is broken with that?

The use case I'm referring to is when the client must be sharded to avoid CPU or network or disk bottlenecks.

Then that's exactly what consumer groups help with but it sounds like you want partitioning then - which is exactly what Kafka does but with a little more automation.

Run multiple Redis instances and use a simple hash based on whatever key you want to route messages and get the throughput you need. It's probably never going to be part of the core Redis logic but should be possible as a module to do the routing when used in a Redis cluster.

Re: Streams: a new general purpose data structure in Redis

#153

Earlier quoted context omitted.

The use case I'm referring to is when the client must be sharded to avoid CPU or network or disk bottlenecks.

Then that's exactly what consumer groups help with but it sounds like you want partitioning then - which is exactly what Kafka does but with a little more automation. Run multiple Redis instances and use a simple hash based on whatever key you want to route messages and get the throughput you need. It's probably never going to be part of the core Redis logic but should be possible as a module to do the routing when u…

What I'm referring to is changing the partitioning dynamically by splitting streams, not just redis nodes. Here is one implementation example http://docs.aws.amazon.com/streams/latest/dev/kinesis-using-...

Doing it without server support is tricky.

Re: Streams: a new general purpose data structure in Redis

#154
post #144

Earlier quoted context omitted.

Exactly right - in my case the situation was another team accidentally bringing a new ZK node with "bad" but "new" data online. Had there been network isolation, no issues. Had there been static cluster identifiers, also no issues. It was a messy environment, and it should have been prevented by operational diligence, but my point is redis is "harder to mess up". As on on-call engineer, I'll always go with simpler, f…

In order to connect a ZK host to the cluster its IP needs to be included in configuration of all the nodes. It's hard to accidentally add node to a cluster. A person who can "accidentally" add a ZK node has enough permission to do a lot of more devastating things accidentally.

Yep. All it takes is service discovery and a not-totally-familiar with ZK jr. sysadmin.

This is all in service to my point about simplicity and safety.

Post reply on HN