Kontingent

Die Kontingentkonfiguration kann bei Fairness und Budgetierung der Dienstauslastung behilflich sein.

Die Kontingentkonfiguration funktioniert folgendermaßen: - Die Dienstkonfiguration definiert eine Reihe von Messwerten. - Bei API-Aufrufen ordnet quota.metric_rules Messwerten Methoden zu. Dabei fallen entsprechende Kosten an. - Die quota.limits definiert Grenzwerte für die Messwerte, die während der Laufzeit zur Quotenkontrolle verwendet werden.

Eine beispielhafte Kontingentkonfiguration im YAML-Format:

Kontingent:

 - name: apiWriteQpsPerProject
   metric: library.googleapis.com/write_calls
   unit: "1/min/{project}"  # rate limit for consumer projects
   values:
     STANDARD: 10000

 # The metric rules bind all methods to the read_calls metric,
 # except for the UpdateBook and DeleteBook methods. These two methods
 # are mapped to the write_calls metric, with the UpdateBook method
 # consuming at twice rate as the DeleteBook method.
 metricRules:
 - selector: "*"
   metricCosts:
     library.googleapis.com/read_calls: 1
 - selector: google.example.library.v1.LibraryService.UpdateBook
   metricCosts:
     library.googleapis.com/write_calls: 2
 - selector: google.example.library.v1.LibraryService.DeleteBook
   metricCosts:
     library.googleapis.com/write_calls: 1

Entsprechende metrische Definition:

 metrics:
 - name: library.googleapis.com/read_calls
   displayName: Read requests
   metricKind: DELTA
   valueType: INT64

 - name: library.googleapis.com/write_calls
   displayName: Write requests
   metricKind: DELTA
   valueType: INT64
JSON-Darstellung

{
  "limits": [
    {
      object(QuotaLimit)
    }
  ],
  "metricRules": [
    {
      object(MetricRule)
    }
  ]
}
Felder
limits[]

object(QuotaLimit)

Liste der QuotaLimit-Definitionen für den Dienst.

metricRules[]

object(MetricRule)

Liste der Definitionen MetricRule, die jeweils eine ausgewählte Methode einem oder mehreren Messwerten zuordnen.

QuotaLimit (Kontingentlimit)

QuotaLimit definiert ein spezifisches Limit. Für die Art des Limits gilt dieses nur für eine bestimmte Dauer. Innerhalb einer QuotaGroup gibt es für die Dauer und die Art des Limits höchstens ein Limit.

JSON-Darstellung

{
  "name": string,
  "description": string,
  "defaultLimit": string,
  "maxLimit": string,
  "freeTier": string,
  "duration": string,
  "metric": string,
  "unit": string,
  "values": {
    string: string,
    ...
  },
  "displayName": string
}
Felder
name

string

Name des Kontingentlimits

Der Name muss angegeben werden. Innerhalb des Dienstes muss er außerdem eindeutig sein. Der Name darf nur alphanumerische Zeichen sowie "-" enthalten.

Der Name des Limits darf höchstens 64 Zeichen lang sein.

description

string

Optional. Für Nutzer sichtbare, ausführliche Beschreibung dieses Kontingentlimits. Sollte nur verwendet werden, wenn zum Verständnis des Limits mehr Kontext erforderlich ist, als aus dem Anzeigenamen des Limits hervorgeht (siehe: displayName).

defaultLimit

string (int64 format)

Standardanzahl von Tokens, die während der angegebenen Dauer benutzt werden können. Dies ist die Anzahl der Tokens, die zugewiesen werden, wenn ein Entwickler von Clientanwendungen den Dienst für sein Projekt aktiviert.

Bei einem Wert von 0 werden alle Anfragen blockiert. Dies kann verwendet werden, wenn Sie bestimmten Nutzern Kontingente zuweisen und andere blockieren möchten. Entsprechend gibt ein Wert von -1 ein unbegrenztes Kontingent an. Keine anderen negativen Werte sind zulässig.

Wird nur von gruppenbasierten Kontingenten verwendet.

maxLimit

string (int64 format)

Maximale Anzahl an Tokens, die während der angegebenen Dauer verbraucht werden können. Entwickler von Clientanwendungen können das Standardlimit bis zu diesem Maximum überschreiben. Wird dieser Wert angegeben, kann er nicht unterhalb des Standardlimits festgelegt werden. Falls er nicht angegeben wird, wird das Standardlimit festgelegt.

Damit Clients ohne Obergrenze überschrieben werden können, muss der Wert auf -1 gesetzt werden. Dieser Wert zeigt unbegrenzte maximale Kontingente an.

Wird nur von gruppenbasierten Kontingenten verwendet.

freeTier

string (int64 format)

Kostenloser Stufenwert, der in der Developers Console für dieses Limit angezeigt wird. Der kostenlose Stufenwert ist die Anzahl der Tokens, die bei aktivierter Abrechnung vom berechneten Betrag abgezogen werden. Dieses Feld kann in einer abrechenbaren Gruppe nur auf ein Limit mit der Dauer "1d" gesetzt werden. Andere Limits sind unzulässig. Wird dieses Feld nicht festgelegt, wird standardmäßig 0 verwendet, um anzuzeigen, dass für diesen Dienst keine kostenlose Stufe vorhanden ist.

Wird nur von gruppenbasierten Kontingenten verwendet.

duration

string

Dauer dieses Limits in Textform. Beispiel: "100s", "24h", "1d". Für eine Dauer von mehr als einem Tag wird nur ein Vielfaches von Tagen unterstützt Momentan werden nur "100s" und "1d" unterstützt. Zusätzlicher Support wird demnächst hinzugefügt. "0" zeigt eine unbestimmte Dauer an.

Wird nur von gruppenbasierten Kontingenten verwendet.

metric

string

Der Name des Messwerts, für den das Limit gilt. Während der Laufzeit werden Kontingentlimits mit derselben Messwert gemeinsam überprüft. Der Messwert muss innerhalb der Dienstonfiguration definiert werden.

unit

string

Geben Sie die Einheit des Kontingentlimits an. Sie verwendet dieselbe Syntax wie [Metric.unit] []. Unterstützte Einheiten werden vom Quota-Back-End-System bestimmt.

Hier einige Beispiele: * "1/min/{project}" für das Kontingent pro Minute pro Projekt.

Hinweis: Die Reihenfolge der Einheitskomponenten ist unbedeutend. Die "1" am Anfang muss der metrischen Einheitssyntax folgen.

values

map (key: string, value: string (int64 format))

Mehrstufige Grenzwerte. Sie müssen diese als ein Schlüssel/Wert-Paar angeben, das die maximale Anzahl an Anfragen darstellt, die für die angegebene Einheit zulässig sind Derzeit wird nur STANDARD unterstützt.

Ein Objekt mit einer Liste der Paare "key": value. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }

displayName

string

Für Nutzer sichtbarer Anzeigename für dieses Limit. Optional. Wenn nicht festgelegt, wird die Benutzeroberfläche einen standardmäßigen Anzeigenamen basierend auf der Kontingentkonfiguration bereitstellen. Dieses Feld kann verwendet werden, um den standardmäßigen Anzeigenamen zu überschreiben, der basierend auf der Konfiguration generiert wurde.