Durable Objects uitgelegd
Krijg inzicht in Durable Objects voor stateful serverloze applicaties, waarmee wereldwijd een consistente status wordt behouden.
Durable Objects uitgelegd is een gratis Edge computing met Cloudflare Workers en Deno-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Edge computing met Cloudflare Workers en Deno. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Het statusprobleem aan de edge
Serverloze functies, zoals Cloudflare Workers, zijn doorgaans stateless. Dat betekent dat elk verzoek onafhankelijk wordt verwerkt, zonder eerdere interacties te onthouden.
Dat is geweldig voor schaalbaarheid en kostenefficiëntie, maar wat als je wereldwijd een bepaald stukje informatie consistent wilt houden over meerdere verzoeken of gebruikers? Denk bijvoorbeeld aan een livechatruimte, een spellobby of een gedeelde teller.
Kennismaking met Durable Objects
Cloudflare Durable Objects lossen deze fundamentele uitdaging op. Ze zijn een krachtige bouwsteen voor het rechtstreeks aan de edge bouwen van stateful serverloze toepassingen.
- Ze bieden één instantie van een object die wereldwijd consistent is.
- Elke instantie van een Durable Object heeft een unieke ID en een eigen privéopslag.
- Ze gedragen zich als kleine, permanente servers die aan de edge draaien.
Unieke ID's en wereldwijde consistentie
Het kernconcept achter Durable Objects is hun unieke identiteit. Wanneer je een Durable Object met een specifieke ID maakt of ophaalt, zorgt Cloudflare ervoor dat er wereldwijd slechts één instantie van dat object bestaat en actief is.
Ongeacht waar een verzoek vandaan komt (bijvoorbeeld Tokio, New York of Londen): als het is gericht aan dezelfde ID van een Durable Object, wordt het naar die enkele, consistente instantie geleid. Hierdoor zijn complexe gedistribueerde synchronisatiemechanismen niet nodig.
Anatomie van een Durable Object
Een Durable Object wordt gedefinieerd als een standaard-JavaScript-klasse. Deze moet het volgende hebben:
- Een methode
constructor(state, env), waarbijstatetoegang biedt tot de opslag enenvomgevingsvariabelen bevat. - Een methode
async fetch(request), die binnenkomende HTTP-verzoeken verwerkt, vergelijkbaar met een gewone Worker.
Het is in feite een zelfstandige, stateful mini-Worker.
Permanente opslag met state.storage
Elke instantie van een Durable Object heeft een eigen privéopslag voor duurzame sleutel-waardeparen, die toegankelijk is via this.state.storage. Hierdoor kan het object gegevens bewaren tussen aanroepen en zelfs na herstarts.
await this.state.storage.put('key', value): slaat gegevens op.await this.state.storage.get('key'): haalt gegevens op.await this.state.storage.delete('key'): verwijdert gegevens.
Waarden kunnen elk type zijn dat naar JSON kan worden omgezet, waardoor deze opslag veelzijdig is voor verschillende gegevensbehoeften.
Code: Counter Worker en DO
Dit voorbeeld laat zien hoe een Cloudflare Worker samenwerkt met een eenvoudig Counter-Durable Object. De DO houdt een teller bij die tussen verzoeken blijft bestaan en wereldwijd consistent is.
Om dit uit te voeren, definieer je de binding van het Counter-Durable Object in je bestand wrangler.toml.
export class Counter {
constructor(state, env) {
this.state = state;
this.env = env;
}
async fetch(request) {
let url = new URL(request.url);
// Retrieve current count from storage, default to 0
let currentCount = (await this.state.storage.get("value")) || 0;
if (url.pathname === "/increment") {
currentCount++;
await this.state.storage.put("value", currentCount);
return new Response(`Count: ${currentCount}`);
} else if (url.pathname === "/decrement") {
currentCount--;
await this.state.storage.put("value", currentCount);
return new Response(`Count: ${currentCount}`);
} else if (url.pathname === "/get") {
return new Response(`Count: ${currentCount}`);
}
return new Response("Not found", { status: 404 });
}
}
export default {
async fetch(request, env) {
// Get a unique Durable Object ID based on a name
// 'COUNTER' is the binding name configured in wrangler.toml
let id = env.COUNTER.idFromName("global-counter");
// Get a 'stub' (a proxy) to interact with the Durable Object
let stub = env.COUNTER.get(id);
// Forward the incoming request to the Durable Object's fetch method
return stub.fetch(request);
}
};Hoe de Counter-code werkt
1. De klasse Counter definieert het gedrag van het Durable Object. De klasse verwerkt de routes /increment, /decrement en /get en bewaart de waarde van value.
2. De fetch-handler van de hoofd-Worker:
- Gebruikt
env.COUNTER.idFromName("global-counter")om een deterministische ID voor onze teller te verkrijgen. env.COUNTER.get(id)retourneert een stub, een netwerkproxy naar het Durable Object.stub.fetch(request)stuurt het oorspronkelijke verzoek door naar de instantie van het Durable Object, zodat die het verzoek kan verwerken en de status kan bijwerken.
Globale consistentie in actie
Stel je voor dat gebruikers uit verschillende regio's (bijvoorbeeld Europa, Azië en Noord- en Zuid-Amerika) allemaal communiceren met het /increment-eindpunt van je Worker. Omdat ze allemaal de ID "global-counter" gebruiken, garandeert Cloudflare dat ze allemaal communiceren met exact dezelfde instantie van het Durable Object Counter.
Hierdoor blijft de telling altijd consistent, ongeacht de locatie van de gebruiker. Dit vereenvoudigt het complexe beheer van gedistribueerde status, dat anders erg lastig zou zijn.
Veelvoorkomende toepassingen van DO's
Durable Objects zijn ideaal voor scenario's die sterke consistentie en gedeelde, wijzigbare status aan de edge vereisen:
- Samenwerking in realtime: gedeelde whiteboards en documenten bewerken.
- Gaming: spellobby's, spelersstatus en matchmaking.
- Livechat: chatruimtes en berichtenwachtrijen voor communicatie in realtime.
- Statusbewuste API's: gebruikerssessies, winkelwagens of unieke resourcevergrendelingen beheren.
Ze brengen traditionele statusbewuste patronen naar de serverloze edge, waardoor complexe toepassingen eenvoudiger te bouwen zijn.
Korte controle: Durable Objects
Welke van de volgende opties beschrijft het belangrijkste voordeel van Cloudflare Durable Objects het best?
Samenvatting: Durable Objects uitgelegd
In deze les hebben we Cloudflare Durable Objects verkend, een krachtig hulpmiddel voor statusbewuste serverloze toepassingen.
- Ze bieden globaal consistente status in één instantie aan de edge.
- Elk DO heeft een unieke ID en privé-opslag die behouden blijft (
state.storage). - Workers communiceren met DO's door stubs te verkrijgen en verzoeken door te sturen.
- Ze zijn ideaal voor toepassingen in realtime, voor samenwerking en voor statusbewuste toepassingen die sterke consistentie vereisen.
Durable Objects overbruggen de kloof tussen stateless serverloze toepassingen en traditionele statusbewuste diensten, waardoor complexe gedistribueerde systemen eenvoudiger worden.
Leer Edge computing met Cloudflare Workers en Deno met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 47
Veelgestelde vragen
Is de les “Durable Objects uitgelegd” gratis?
Ja — de volledige tekst van “Durable Objects uitgelegd” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Edge computing met Cloudflare Workers en Deno wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Wat leer ik in “Durable Objects uitgelegd”?
Krijg inzicht in Durable Objects voor stateful serverloze applicaties, waarmee wereldwijd een consistente status wordt behouden. Je oefent met Edge computing met Cloudflare Workers en Deno door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Edge computing met Cloudflare Workers en Deno te beginnen?
Ervaring vooraf is niet nodig. Edge computing met Cloudflare Workers en Deno op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Durable Objects uitgelegd”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Edge computing met Cloudflare Workers en Deno?
Ja. Elke les over Edge computing met Cloudflare Workers en Deno bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Cloudflare KV-opslag
- Durable Objects uitgelegd
- Deno integreren met edge-opslag
- Query's uitvoeren met D1 SQL aan de edge