Clutch is an autoscaling domain specific implementation for scaling stateless systems. Initially Clutch was designed to autoscale Mantis Kafka source jobs
Metric is an enum contained within the Clutch class allowing various
systems to map their resource measurements into something Clutch understands.
A pair of Metric and Double representing a measurement taken from the
target system. For example new Event(Metric.CPU, 78.2) represents a measurement
of 78.2% CPU usage. The Clutch systems will operate on an Observable<Event>
stream.
The ClutchConfigurator class within the com.netflix.control.clutch namespace is
responsible for consuming an Observable<Event> and producing an appropriate
ClutchConfiguration instance for the taget system. Currently the configurator
performs the following tasks;
- Determines the appropriate metric for autoscaling from the set CPU, Memory, Network.
- Determines the actual range of resource usage and autoscales using those as min/max.
In the near future this class will also be responsible for;
- Adjusting configuration based on lag/drops.
- Adjusting configuration based on oscillation.
Clutch contained within the com.netflix.control.Clutch namespace is a wrapper
around a PID controller containing domain specific knowledge / implementations
for the task of autoscaling stateless systems. This class is currently responsible
for;
- Instantiating a ClutchConfigurator.
- Attaching a ControlLoop which executes the autoscaling.