node-throttler

A connect component to throttle traffic based on either RPS or response time

npm install node-throttler
1 downloads in the last day
1 downloads in the last week
5 downloads in the last month

node-throttler

node-throttler is a HTTP traffic throttler.

Installation

npm install node-throttler

Overview

node-throttler is built on top of node-http-proxy. It provides following features.

  • throttles traffic by setting a maximum request rate threshold
  • throttles traffic by setting a maximum response time threshold
  • applies different throttle rates to different URL patterns

Usage

  • Starts node-throttler
    proxy --config <config_file> --log <log_level>
    

where config is a JSON configuration file and log defines the logging level.

  • Runs tests

    make test
    
  • Generates JS documents

    make docs
    

Configuration

The configuration file is itself a JSON object consists of following fields.

  • local_port
    the port on which the throttler will listen

  • remote_host
    the host of the remote service to be throttled

  • remote_port
    the port of the remote service to be throttled

  • throttle_type
    either rps or averesp

  • throttle_key_config
    defines how the throttle rate key is calculated from the request object. If absent, a constant value is used which means the same threshold value will be applied to all requests

  • throttle_threshold_config
    defines how the threshold value is calculated for a request. If it is a constant number, then the value will be applied to all requests

  • max_throttle_time
    defines the maximum throttle time allowed.

Following fields only apply to rps style

  • max_queue_len
    maximum number of requests can be queued before further requests are rejected

Following fields only apply to averesp style

  • max_sample_age
    the oldest sample that can be used to compute average response time

  • min_sample_size
    the minimum sampel size required to compute average response time

  • max_sample_size
    the maximum sampel size required to compute average response time

License

MIT License

npm loves you