Skip to content

A library that dynamically adjusts concurrency of a worker pool based on observed latency. Thereby constantly trying to achieve optimal throughput without incurring latency costs.

License

Notifications You must be signed in to change notification settings

JensRantil/conc

Repository files navigation

conc

GoDoc

Status: Alpha. Please file issues for all things high and low (including of naming of types and functions).

A library that dynamically adjusts concurrency of a worker pool based on observed latency changes. Thereby constantly trying to achieve optimal throughput without incurring latency costs.

conc is a concurrency library inspired by Netflix's concurrency-limits library. Please read Performance Under Load to understand more details.

Compared to Netflix's library, which is thread pool-oriented, this library is worker pool-oriented. The benefit is that it more easily can be used both for

  • thread pool scenarios (by submitting work/functions to a shared channel); and
  • worker pool scenarios such as processing things from a worker queue.

There's a simulator that allows you to test out the library. To play around with it:

$ git clone github.com/JensRantil/conc
$ cd conc/simulator
$ go run . -help

About

A library that dynamically adjusts concurrency of a worker pool based on observed latency. Thereby constantly trying to achieve optimal throughput without incurring latency costs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages