Durable Objects dan Koordinasi Berkeadaan
Gunakan Durable Objects untuk menambahkan keadaan dan koordinasi yang sangat konsisten pada satu instans ke arsitektur edge yang semula tanpa keadaan.
Durable Objects dan Koordinasi Berkeadaan adalah pelajaran Edge Computing with Cloudflare Workers & Deno gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Edge Computing with Cloudflare Workers & Deno, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Edge Computing with Cloudflare Workers & Deno mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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 roomsnewUniqueId()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
idFromNamefor named resources,newUniqueIdfor sessions
They are the missing piece for real-time, consistent, edge-native systems.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Durable Objects dan Koordinasi Berkeadaan” gratis?
Ya — teks lengkap “Durable Objects dan Koordinasi Berkeadaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Edge Computing with Cloudflare Workers & Deno, upgrade ke CoddyKit PRO. Kursus Edge Computing with Cloudflare Workers & Deno mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Durable Objects dan Koordinasi Berkeadaan”?
Gunakan Durable Objects untuk menambahkan keadaan dan koordinasi yang sangat konsisten pada satu instans ke arsitektur edge yang semula tanpa keadaan. Kamu berlatih Edge Computing with Cloudflare Workers & Deno dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Edge Computing with Cloudflare Workers & Deno?
Tidak diperlukan pengalaman sebelumnya. Edge Computing with Cloudflare Workers & Deno di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Durable Objects dan Koordinasi Berkeadaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Edge Computing with Cloudflare Workers & Deno ini?
Ya. Setiap pelajaran Edge Computing with Cloudflare Workers & Deno menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Layanan Mikro di Tepi Jaringan
- Arsitektur Berbasis Peristiwa
- Geolokasi & Pelokalan
- Durable Objects dan Koordinasi Berkeadaan