All Projects → JackyChiu → pool

JackyChiu / pool

Licence: MIT License
Simple worker pool example 🏊‍♂️

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to pool

Slb
Simple Load Balancer
Stars: ✭ 118 (+372%)
Mutual labels:  concurrency, load-balancer
System design
Preparation links and resources for system design questions
Stars: ✭ 7,170 (+28580%)
Mutual labels:  concurrency, system-design
swoole-futures
⏳ Futures, Streams & Async/Await for PHP's Swoole asynchronous run-time.
Stars: ✭ 100 (+300%)
Mutual labels:  concurrency
torrent client
A Bit Torrent downloader written in Crystal.
Stars: ✭ 23 (-8%)
Mutual labels:  concurrency
vercors
The VerCors verification toolset for verifying parallel and concurrent software
Stars: ✭ 30 (+20%)
Mutual labels:  concurrency
f5-openstack-lbaasv2-driver
F5 LBaaSv2 service provider driver for OpenStack Liberty and beyond
Stars: ✭ 20 (-20%)
Mutual labels:  load-balancer
esm
Lightweight communicating state machine framework for embedded systems
Stars: ✭ 21 (-16%)
Mutual labels:  concurrency
chicken-gochan
Go-like Channels for Chicken Scheme
Stars: ✭ 18 (-28%)
Mutual labels:  concurrency
gotp
(Experimental) Actors and an OTP clone, implemented in Go
Stars: ✭ 21 (-16%)
Mutual labels:  concurrency
orc
Orc programming language implementation
Stars: ✭ 34 (+36%)
Mutual labels:  concurrency
networking-icons
Repo containing various networking icons including routers, switches, servers, firewalls, load balancers and more. Icons are provided in png and svg formats.
Stars: ✭ 61 (+144%)
Mutual labels:  load-balancer
jrinetd
Jrinetd is a network TCP port redirector/forward proxy (like rinetd) with extra features like connection Failover, LoadBalancing and Clustering. In pure Java (NIO)
Stars: ✭ 20 (-20%)
Mutual labels:  load-balancer
syncs
Concurrency and synchronization primitives
Stars: ✭ 81 (+224%)
Mutual labels:  concurrency
async-oneshot
A fast, small, full-featured, no-std compatible oneshot channel
Stars: ✭ 55 (+120%)
Mutual labels:  concurrency
AtomicKit
Concurrency made simple in Swift.
Stars: ✭ 88 (+252%)
Mutual labels:  concurrency
anabranch
A simple HTTP load balancer and reverse proxy written in Go.
Stars: ✭ 25 (+0%)
Mutual labels:  load-balancer
context-propagation
Propagate snapshots of ThreadLocal values to another thread
Stars: ✭ 15 (-40%)
Mutual labels:  concurrency
concurrency-kit
🚄 Concurrency abstractions framework for Apple Platforms [Task, Atomic, Lock, Operation, etc.].
Stars: ✭ 17 (-32%)
Mutual labels:  concurrency
trading sim
📈📆 Backtest trading strategies concurrently using historical chart data from various financial exchanges.
Stars: ✭ 21 (-16%)
Mutual labels:  concurrency
nuscr
A toolkit to manipulate Scribble-style multiparty protocols, based on classical multiparty session type theory.
Stars: ✭ 16 (-36%)
Mutual labels:  concurrency

Worker Pool

The worker pool distributes work across the workers to the least loaded worker.

Demo

The pool was tested by a load generator that produces tasks at a inconsistent interval, faster than the time it takes to complete the tasks itself. The tasks also take an inconsistent amount of time to finish. In this example the tasks were just sleeps.

The gif below shows values for:

  • Workers: Pending requests for worker
  • Avg Load: Average pending requests for worker pool
  • Std Dev: Standard deviation of pending requests

gif

Design

diagram

The design was based off the talk concurrency is not parallelism by Rob Pike, the diagram is also from there

  1. Requests are made by a requester
  2. The Balancer dispatch's requests to a select worker in the worker pool
  3. The Worker will execute the task specified by the request
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].