0Pricing
Edge Computing with Cloudflare Workers & Deno · Leçon

Objets durables et coordination avec état

Utilisez les Durable Objects pour ajouter un état fortement cohérent, associé à une instance unique, ainsi que de la coordination à des architectures de périphérie autrement sans état.

Objets durables et coordination avec état est une leçon Edge Computing with Cloudflare Workers & Deno gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Edge Computing with Cloudflare Workers & Deno, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

The Stateless Problem

Workers are stateless by design, each request may hit a different instance anywhere on Earth.

That is great for scale, but hard when you need:

  • A single source of truth
  • Coordination between many clients
  • Strong consistency, not eventual

Durable Objects solve exactly this.

What Is a Durable Object?

A Durable Object (DO) is a single, globally-addressable instance with its own private storage.

For a given object ID, all requests route to the same instance, giving you a consistent place to hold state.

Defining a Durable Object Class

A DO is a class with a fetch() method and access to persistent state.storage.

export class Counter {
  constructor(state, env) {
    this.state = state;
  }
  async fetch(request) {
    let count = (await this.state.storage.get('count')) || 0;
    count++;
    await this.state.storage.put('count', count);
    return new Response(String(count));
  }
}

Binding the Object

Declare the DO class as a binding in wrangler.toml and add a migration so Cloudflare knows about it.

[[durable_objects.bindings]]
name = "COUNTER"
class_name = "Counter"

[[migrations]]
tag = "v1"
new_classes = ["Counter"]

Getting an Object Stub

From a Worker, derive an ID then get a stub to talk to that specific instance.

const id = env.COUNTER.idFromName('global-counter');
const stub = env.COUNTER.get(id);
const res = await stub.fetch('https://do/increment');

idFromName vs newUniqueId

Two ways to get an ID:

  • idFromName('room-42') deterministic, same name always maps to the same object, ideal for named resources like chat rooms
  • newUniqueId() a brand-new unique object, ideal for per-session state

Strong Consistency Guarantee

Because every request for an ID hits the same instance and runs single-threaded, DO operations are strongly consistent, no race conditions on its own storage.

This makes DOs perfect for counters, locks, and leaderboards.

Coordinating Many Clients

A DO is a natural hub. Combined with WebSockets it can broadcast to all connected clients, the basis for collaborative apps and multiplayer rooms.

// Inside the DO: track sockets and fan out
this.sessions.forEach((ws) => ws.send(message));

Storage API Basics

state.storage is a transactional key-value store local to the object.

await this.state.storage.put('user:1', { name: 'Ada' });
const user = await this.state.storage.get('user:1');
await this.state.storage.delete('user:1');

Alarms for Scheduled Logic

Durable Objects support alarms, schedule the object to wake itself up later for cleanup or timeouts.

await this.state.storage.setAlarm(Date.now() + 60000);
// later, the runtime calls:
async alarm() {
  await this.cleanup();
}

When to Use Durable Objects

Reach for DOs when you need:

  • Coordination across requests or clients
  • Strong consistency on a single entity
  • Real-time rooms, locks, rate counters, or queues

For simple cached reads, KV is cheaper. Choose the right tool.

Quick Check

Which method gives you a deterministic Durable Object ID for a named resource like a chat room?

Recap

Durable Objects bring stateful coordination to the edge:

  • One globally-addressable instance per ID
  • Private transactional storage and alarms
  • Strong consistency and single-threaded execution
  • Use idFromName for named resources, newUniqueId for sessions

They are the missing piece for real-time, consistent, edge-native systems.

Questions Fréquemment Posées

La leçon « Objets durables et coordination avec état » est-elle gratuite ?

Oui — le texte complet de « Objets durables et coordination avec état » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Edge Computing with Cloudflare Workers & Deno, passe à CoddyKit PRO. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Objets durables et coordination avec état » ?

Utilisez les Durable Objects pour ajouter un état fortement cohérent, associé à une instance unique, ainsi que de la coordination à des architectures de périphérie autrement sans état. Tu pratiques Edge Computing with Cloudflare Workers & Deno avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Edge Computing with Cloudflare Workers & Deno ?

Aucune expérience préalable n'est requise. Edge Computing with Cloudflare Workers & Deno sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Objets durables et coordination avec état » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Edge Computing with Cloudflare Workers & Deno ?

Oui. Chaque leçon Edge Computing with Cloudflare Workers & Deno inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Microservices en périphérie
  2. Architectures pilotées par les événements
  3. Géolocalisation et localisation
  4. Objets durables et coordination avec état
← Retour à Edge Computing with Cloudflare Workers & Deno