First draft for Vitess Queues design document.#2377
First draft for Vitess Queues design document.#2377alainjobart merged 1 commit intovitessio:masterfrom
Conversation
|
As per the doc, this seems to be an unordered event relaying. |
|
This is our #1 priority for our Vitess migration (8 week timeline), so I'm highly motivated to get this in motion. We're replacing the Google App Engine task queue, so that informs most of my opinions. https://cloud.google.com/appengine/docs/go/taskqueue/ Here's a screenshot of the queue UI Key Needs
ThoughtsPrimary Key ProposalUsing a timestamp as the PK is likely going to cause serious write hotspotting when adding many tasks simultaneously and read hotspotting at execution time. Add in an
Configurable CleanupKeep task history for N days, but also allow for users to manually purge individual task names or entire queues. Push / Pull QueuesThe core Queue Manager functions as a pull queue with acks, so the push component could potentially be external to the system. The queue limits would need to be applied at the Queue Manager level, which may necessitate a limitation of only 1 listener per queue, if only for the ease of implementation. Google Tasks likely implements it this way, as they have a hardcoded 500/s limit. If faster execution is necessary, the user is responsible for sharding queues. These are my initial thoughts, I'll keep mulling over the proposal. I'm super excited for this! What is your expected timeline / availability? Thanks for the super detailed proposal! |
|
@rnavarro and @bbeaudreault both expressed some interest in Vitess queue capabilities. |
doc/VitessQueues.md
Outdated
There was a problem hiding this comment.
doc/VitessQueues.md
Outdated
doc/VitessQueues.md
Outdated
doc/VitessQueues.md
Outdated
There was a problem hiding this comment.
Will we provide an ordering guarantee? @harshit-gangal was asking.
|
We don't have a need for guaranteed ordering, though if it were provided, I'm sure we could find a use case. :) That would be one of the first things I'd punt on. I think that could maybe be a queue type |
|
@derekperkins There are other parameters that needs to be considered to provide ordering guarantee. |
|
@harshit-gangal I know that ordered queues is a non-trivial problem, which is why we don't rely on them currently. It feels like we'd have a better shot at doing it than a NoSQL store. All in all, I think the extra layers of complexity for it would introduce unwanted tradeoffs for systems that don't need ordering, which is why I think an |
Task Metadata / TaggingA pretty common use case we currently have that is difficult to manage is "when all X tasks complete, then do Y". This may just be covered by user field data, but may be globally useful. If you had a single
|
Addresses a few comments.

No description provided.