A parallel, capacity-limited worker pool library for Erlang that provides scalable process bounding and overload protection.
Sidejob is an Erlang library that creates parallel, capacity-limited worker pools to manage and bound concurrent processes. It solves the problem of system overload by enforcing fixed capacity limits on resources, such as process mailboxes or spawned children, and provides a scalable alternative to single OTP supervisors for high-concurrency scenarios.
Erlang developers building distributed systems or high-concurrency applications that require robust overload protection and scalable process management, such as those working on databases like Riak or real-time messaging platforms.
Developers choose Sidejob for its scalable design that minimizes lock contention, its ability to enforce strict capacity limits to prevent system degradation, and its flexibility in supporting custom usage strategies beyond simple mailbox bounding.
Parallel worker and capacity limiting library for Erlang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Erlang scheduler IDs to dispatch requests, minimizing ETS lock contention and enabling high concurrency, as detailed in the README's explanation of worker selection.
Enforces fixed capacity per resource, failing requests with {error, overload} to prevent system overload, proven in Riak for bounding get/put FSMs.
Supports custom usage strategies like sidejob_supervisor for managing dynamic children, allowing adaptation beyond simple mailbox bounding.
Provides a mechanism to reject client requests during extreme load, ensuring system stability without degradation, as highlighted in the philosophy.
The README is marked as 'TODO' and copied from a pull request, making it hard for new users to understand implementation or best practices.
Optimized for niche use cases like Riak, requiring deep Erlang knowledge of schedulers and ETS for custom setups, which can be overkill for simpler projects.
As a library from Basho with a specific focus, it lacks broad community adoption, active development visibility, or plugins compared to more general solutions.