
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
drr-fair-queue
Advanced tools
With this module, you can queue work from multiple incoming sources and pull work for the queue in a fair order. One source cannot cause starvation of the other sources. This module is an implemenation of the work in Efficient Fair Queuing Using Deficit Round-Robin
A fair queue could be used to schedule incoming requests from users, to make sure that no user reduces the performance of other users on the same server. Or, the queue could be used to balance outgoing requests to a downstream server, making sure that one user does not consume all of the connections in a pool.
When inserting elements into the queue, three pieces of information are needed.
In this example, source 1 will queue two items of work before source 2 can queue anything. But, when the items are popped, the work from source 2 will be popped first so that source 1 does not starve source 2.
var FairQueue = require('drr-fair-queue');
var queue = new FairQueue();
queue.push('source1', 'item1', 1);
queue.push('source1', 'item2', 1);
queue.push('source2', 'item3', 1);
queue.pop(); // Will pop item 1 from source 1
queue.pop(); // Will pop item 3 from source 2
queue.pop(); // Will pop item 2 from source 1
To know when work is ready to be processed, you can register a hook as an option to the constructor. Here is an example program that watches for work and processes when it's available:
var FairQueue = require('drr-fair-queue');
var freeWorkers = 1;
function processWork() {
if (freeWorkers === 0) {
// Skipping work because all workers are busy
return;
}
freeWorkers--;
var work = queue.pop();
if (!work) {
freeWorkers++;
return;
} else {
// Do something with the work
setImmediate(function () {
console.log('Processing work', work);
freeWorkers++;
processWork();
});
}
}
var queue = new FairQueue({onUnidle: processWork});
queue.push('source1', 'item1', 1);
queue.push('source1', 'item2', 1);
queue.push('source2', 'item3', 1);
FAQs
An fair queue based using Deficit Round-Robin
The npm package drr-fair-queue receives a total of 1 weekly downloads. As such, drr-fair-queue popularity was classified as not popular.
We found that drr-fair-queue demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.