Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Latest commit

 

History

History
52 lines (38 loc) · 2.26 KB

README.md

File metadata and controls

52 lines (38 loc) · 2.26 KB

Archived Warning

This repository is archived and the code has moved as a submodule in the main repo — Netflix/mantis

mantis-rxcontrol

Build Status Version OSS Lifecycle License

Design

PID

Clutch

Clutch is an autoscaling domain specific implementation for scaling stateless systems. Initially Clutch was designed to autoscale Mantis Kafka source jobs

Metric

Metric is an enum contained within the Clutch class allowing various systems to map their resource measurements into something Clutch understands.

Event

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.

ClutchConfigurator

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

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.