Zum Inhalt springen

LösungenBackends pro Nutzer

Eine Instanz für jeden Nutzer

Ein Schlüssel in der Anfrage leitet jeden Nutzer, Mandanten oder Agenten an eine eigene Instanz, die ihren Arbeitsspeicher und ihre Festplatte behält und zwischen Anfragen schläft.

Mehr über Instanzen pro Schlüssel

Python
from glac import Glac

glac = Glac()
app = glac.cube.deploy(
    "ghcr.io/acme/notes:2", name="notes", port=8080,
    keys={"from": {"header": "X-User"},          # the key
          "delete_after_idle_ms": 30 * 86_400_000},
    scale={"suspend_after_ms": 1000})  # sparse traffic: asleep a second after
# a request with X-User: ada reaches ada's own instance
ada = app.instance("ada")         # or make or wake it from code

Zustand pro Nutzer, Stunde für Stunde bezahlt

Ein Prozess pro Nutzer ist der einfachste Aufbau, doch läuft er durch, bezahlst du ihn auch, während der Nutzer gar nicht da ist. Hier schläft die Instanz jedes Schlüssels zwischen den Anfragen und kostet nur das, was sie behält.

im Monat allein für den Arbeitsspeicher von 10 000 durchlaufenden Instanzen mit 256 MiB, zu Listenpreisen1
$14,600.00
für dieselben Instanzen im Schlaf, wobei jede 100 MB behält1
$20.00

Wie das Routing per Schlüssel funktioniert

Setze keys.from auf einen Header oder ein Segment des Pfads. Die erste Anfrage eines neuen Schlüssels erstellt seine Instanz; jede spätere erreicht dieselbe Instanz, mit ihrem Arbeitsspeicher und ihrer Festplatte. Anfragen ohne Schlüssel teilen sich die Instanzen der App.

Eine App und ihre Instanzen: Mit Schlüsseln gehört jede Instanz einem Schlüssel; sie wacht für dessen Anfragen auf und schläft danach wieder ein.

Was die Instanz jedes Nutzers bekommt

  • Wähle den Aufbau: geteilte Instanzen oder eine eigene für den Schlüssel jedes Nutzers.

  • Ein Schlüssel aus der Anfrage, in einem Header oder im Pfad; die erste Anfrage erstellt seine Instanz.

  • Zustand pro Nutzer: Arbeitsspeicher, der den Schlaf übersteht, eine eigene Festplatte und ein Volume.

  • Was es kostet: im Schlaf keine CPU-Zeit, nur das, was sie behält.

  • Eine Lebensdauer nach deiner Wahl: Nach so langem Schlaf wird sie gelöscht, und ihr Schlüssel erstellt sie neu.

  • Nutzung pro Schlüssel, aus dem Schlüssel, den jede Instanz als Label trägt.

Zur Doku

Beispielhafte Vorschauen

Gemessen, nicht versprochen

Mediane auf Bare Metal, ohne dass sonst etwas läuft: der Idealfall, und das sagen wir auch dazu. Die Instanz eines Schlüssels ist dieselbe Art von Maschine wie eine Sandbox, an der diese Werte gemessen wurden. Wie wir messen

zum Aufwecken einer schlafenden Instanz2
3.5 ms
für den Aufruf, der sie geweckt hat, vom Senden bis zur Antwort2
6.7 ms
um sie samt Arbeitsspeicher und Prozessen schlafen zu legen2
2.3 ms

Prüf es mit deinen eigenen Schlüsseln, sobald der Dienst verfügbar ist: Die Log-Zeile einer Anfrage, die eine Instanz geweckt hat, nennt die Dauer des Aufwachens.

Shell
glac cube logs notes -f
# one line a request; one that woke an instance says how long it took

Die genutzten Produkte

Ein Monat, durchgerechnet

Zehntausend Nutzer, jeder mit einer eigenen Instanz, zu Listenpreisen. Eigenen Monat schätzen

Die Nutzung

  • 10 000 Nutzer, jeder mit einer eigenen Instanz, 256 MiB belegt.
  • Jeder Nutzer stellt 30 Tage lang 300 Anfragen am Tag, jede mit 20 ms CPU-Zeit und 5 KB Antwort, zu zufälligen Zeiten.
  • Die App ist so eingestellt, dass eine Instanz eine Sekunde nach dem Anhalten richtig einschläft (scale.suspend_after_ms 1000), die passende Einstellung für so spärlichen Traffic: Die Anfragen eines Nutzers kommen im Abstand von Minuten, und eine Instanz, die dazwischen im Arbeitsspeicher pausiert bleibt, wird die ganze Zeit für diesen Arbeitsspeicher abgerechnet. Jede ist also wach, während sie antwortet, und 1 s danach, dann weitere 1 s pausiert und schläft schließlich mit gesichertem Arbeitsspeicher, wobei sie etwa 100 MB behält.
  • Was das kostet: Eine Anfrage, die ihre Instanz schlafend antrifft, wird in 6.7 ms beantwortet, bei einer pausierten Instanz in 0.43 bis 1.72 ms; und jedes Einschlafen und Aufwachen kostet 25.6 ms CPU-Zeit, die in die CPU-Zeit des Monats eingeht.

Ein Monat zu Listenpreisen

$192.40

  • CPU4.3 Milliarden CPU-ms × $0.01 / Mio.$42.95
  • Arbeitsspeicher12 581 GiB-h × $0.008$100.65
  • Anfragen90 Millionen × $0.30 / Mio.$27.00
  • Ausgehender Traffic450 GB × $0.004$1.80
  • Gespeicherter Zustand1 000 GB-Monate × $0.02$20.00

Im Bezahltarif kostet dieser Monat $189.60: die Gebühr von $5 und $184.60 für alles, was über die Inklusivmengen hinausgeht, aus deinem Guthaben zu denselben Preisen.

Gib jedem Nutzer seine eigene Instanz

Ein Schlüssel, dann eine App mit keys.from, mit einem Aufruf deployt.

WürfelDas Python-SDK