Skip to content

RFC: Metafora v2 - Leader based task assignment; task dependency metadata #134

@schmichael

Description

@schmichael

Impetus

Metafora's current peer-based work stealing approach has limitations:

  • In a cluster with nodes A and B, each with 10 tasks, if you start node C, any tasks released (due to the fair balancer) from A or B, are just as likely to be claimed by A or B as C! The CanClaim method alone offers very few tools to mitigate this.
  • Starting a cluster is extremely resource intensive as each node often tries to claim every task.

New Scheduling

  • Use something similar to the current work-stealing scheduling to elect a scheduling leader. Have that leader assign or offer tasks to followers.
  • Task metadata used for scheduling decisions (affinities, anti-affinities, dependencies, resource utilization) could be declarative definitions or a tasks could implement a function that given an Offer determines whether or not it's sufficient for the task to run. (assignment vs. ask/offer)

Open Questions

  • How simple and extensible can we keep metafora and still address scheduler scaling issues?
  • What metadata and constraints are valuable for scheduling decisions?

Topologies

  • Metafora doesn't have them currently. Period.
  • Super complicated stuff, especially if you want to generically handle inter-task communication.

Open Questions

  • Leave topologies up to another library/layer?
  • Treat topologies as scheduling metadata and leave inter-task communication up to users?

These are my personal preferences as I'd rather not try to compete with existing one-size-fits-all topology frameworks like Storm. -- @schmichael

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions