Documentation ¶
Index ¶
Constants ¶
const ( // Name is the name of the component. Name = "activator" // K8sServiceName is the name of the activator Kubernetes service. K8sServiceName = "activator-service" // RevisionHeaderName is the header key for revision name. RevisionHeaderName string = "knative-serving-revision" // RevisionHeaderNamespace is the header key for revision's namespace. RevisionHeaderNamespace string = "knative-serving-namespace" )
Variables ¶
var ErrActivatorOverload = errors.New("activator overload")
ErrActivatorOverload indicates that throttler has no free slots to buffer the request.
Functions ¶
This section is empty.
Types ¶
type Reporter ¶ added in v0.2.0
type Reporter struct {
// contains filtered or unexported fields
}
Reporter holds cached metric objects to report autoscaler metrics
func NewStatsReporter ¶ added in v0.2.0
NewStatsReporter creates a reporter that collects and reports activator metrics
type RevisionID ¶ added in v0.4.0
RevisionID is the combination of namespace and revision name
func (RevisionID) String ¶ added in v0.5.0
func (rev RevisionID) String() string
String returns the namespaced name of the RevisionID.
type StatsReporter ¶ added in v0.2.0
type StatsReporter interface { ReportRequestCount(ns, service, config, rev string, responseCode, numTries int, v int64) error ReportResponseTime(ns, service, config, rev string, responseCode int, d time.Duration) error }
StatsReporter defines the interface for sending activator metrics
type Throttler ¶ added in v0.4.0
type Throttler struct {
// contains filtered or unexported fields
}
Throttler keeps the mapping of Revisions to Breakers and allows updating max concurrency dynamically of respective Breakers. Max concurrency is essentially the number of semaphore tokens the Breaker has in rotation. The manipulation of the parameter is done via `UpdateCapacity()` method. It enables the use case to start with max concurrency set to 0 (no requests are sent because no endpoints are available) and gradually increase its value depending on the external condition (e.g. new endpoints become available)
func NewThrottler ¶ added in v0.4.0
func NewThrottler( params queue.BreakerParams, endpointsInformer corev1informers.EndpointsInformer, sksLister netlisters.ServerlessServiceLister, revisionLister servinglisters.RevisionLister, logger *zap.SugaredLogger) *Throttler
NewThrottler creates a new Throttler.
func (*Throttler) Remove ¶ added in v0.4.0
func (t *Throttler) Remove(rev RevisionID)
Remove deletes the breaker from the bookkeeping.
func (*Throttler) Try ¶ added in v0.4.0
func (t *Throttler) Try(rev RevisionID, function func()) error
Try potentially registers a new breaker in our bookkeeping and executes the `function` on the Breaker. It returns an error if either breaker doesn't have enough capacity, or breaker's registration didn't succeed, e.g. getting endpoints or update capacity failed.
func (*Throttler) UpdateCapacity ¶ added in v0.4.0
func (t *Throttler) UpdateCapacity(rev RevisionID, size int) error
UpdateCapacity updates the max concurrency of the Breaker corresponding to a revision.