3 ms·
Staircar: Redis-powered notifications
- rdoherty 15y agoNeat technology, but at first I thought I was going to read an article about some sort of messaging/event system. It's not; Staircar is basically a way to deal with high write to read ratio data. It's not for subscribing to or publishing events.
- ozataman 15y agoIt reads like a hash-based sharding front-end for Redis rather than a layer for notification systems specifically.
- mkjones 15y agoThis looks pretty cool. I'm curious how they deal with machine failure though - does Staircar coordinate some kind of redundancy, or when you lose a redis machine do you need to manually fix it and bring it back up with whatever the last checkpoint data was?
- aaronbrethorst 15y agoDo you have to watch out for hop-ons? edit: no arrested development fans, i see...
- stephth 15y agoIt is a pretty good naming scheme. Looking forward for steveholt, featherbottom, annyong and nevernude.
- jrockway 15y agoThere's always money in thebananastand.
- aaronbrethorst 15y agoSteveholt! Also: MrF, Cornballer, and Chickendance.
- troyk 15y agoI'm curious as to the speed difference between redis current protocol and a resty-json loving http redis server, as the speed was more than enough for tumblr and going the http route has the benefit that any http client becomes a full blown redis client.
- owyn 15y agoPossibly early optimization syndrome? Redis is awesome, but the main problem here seems to be the amount of data (in the hundreds of gigs) and not scaling writes... The stated requirements are 7500 notifications per second but a single instance of redis can do 50k/sec updates on my mac...
- bmatheny 15y agoI worked on Staircar so maybe I can answer a couple of questions. Machine failures: failures we'll likely address in a future post but basically each redis instance can have a slave which can be failed over to. Performance: Staircar isn't nearly as fast as redis, but the primary project goal was making the redis infrastructure opaque to any clients. The secondary goal was performance, which is still quite good. Early Optimization: In a large infrastructure (thousands of machines, multiple data centers, etc) you have locality issues, slow clients, machine failures and other operational considerations. Again, redis performance is fine and we weren't concerned with that. We were interested in creating a high performance proxy to a pool of redis instances. Also, with Staircar we can make online changes to the redis pool without needing to notify clients of those changes.
- a-priori 15y agoI find it interesting that there are two distinct bands in the response time plots. Any ideas what the two represent?
- bmatheny 15y agoThe upper band essentially represents new users. At the current rate of growth, we push into a new redis shard every 2-3 days. When we first start writing/reading against that shard, it appears to take a bit of time to warm up.
- SteveMorin 15y agoIs the code open source or do you have plans to open source it. I am actually pretty interested in this and would love to be able to read the code for it. -Steve
- bmatheny 15y agoHey Steve, we do have plans to open source the code in two parts. The first part to likely be open sourced will be the high performance logging library that was written for it. After that, the proxy component. Keep an eye on the Tumblr engineering blog for a notification.