Durable Objects selitettynä
Ymmärrä Durable Objects -objektien käyttö tilallisissa palvelimettomissa sovelluksissa, joissa tila säilyy yhdenmukaisena maailmanlaajuisesti
Durable Objects selitettynä on ilmainen Reunalaskenta Cloudflare Workersilla ja Denolla-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Reunalaskenta Cloudflare Workersilla ja Denolla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Reunalaskenta Cloudflare Workersilla ja Denolla-kurssilla on yhteensä 4 oppituntia.
Tilanhallinnan haaste edgessä
Palvelimettomat funktiot, kuten Cloudflare Workers, ovat yleensä tilattomia. Tämä tarkoittaa, että jokainen pyyntö käsitellään itsenäisesti aiempia vuorovaikutuksia muistamatta.
Tilattomuus sopii erinomaisesti skaalautuvuuteen ja kustannustehokkuuteen, mutta entä jos teidän täytyy säilyttää sama tieto useiden pyyntöjen tai maailmanlaajuisten käyttäjien välillä? Ajatelkaa reaaliaikaista keskusteluhuonetta, peliaulaa tai jaettua laskuria.
Durable Objects -objektien esittely
Cloudflaren Durable Objects ratkaisevat tämän perustavanlaatuisen haasteen. Ne ovat tehokas rakennuspalikka tilallisten palvelimettomien sovellusten rakentamiseen suoraan edgessä.
- Ne tarjoavat yhden, maailmanlaajuisesti yhdenmukaisen instanssin.
- Jokaisella Durable Object -instanssilla on yksilöllinen tunnus ja oma yksityinen tallennustilansa.
- Ne toimivat kuin pienet, pysyvät palvelimet, jotka sijaitsevat edgessä.
Yksilölliset tunnukset ja maailmanlaajuinen yhdenmukaisuus
Durable Objects -objektien keskeinen käsite on niiden yksilöllinen identiteetti. Kun luotte tai haette Durable Object -objektin tietyn tunnuksen avulla, Cloudflare varmistaa, että kyseisestä objektista on maailmanlaajuisesti olemassa ja käynnissä vain yksi instanssi.
Riippumatta siitä, mistä pyyntö tulee (esimerkiksi Tokiosta, New Yorkista tai Lontoosta), jos se kohdistuu samaan Durable Object -tunnukseen, se reititetään tuohon yhteen, yhdenmukaiseen instanssiin. Näin vältetään monimutkaisen hajautetun synkronoinnin tarve.
Durable Object -objektin rakenne
Durable Object määritellään tavallisena JavaScript-luokkana. Sillä täytyy olla:
constructor(state, env)-metodi, jossastatetarjoaa pääsyn objektin tallennustilaan jaenvsisältää ympäristömuuttujat.async fetch(request)-metodi, joka käsittelee saapuvat HTTP-pyynnöt tavallisen Workerin tapaan.
Se on käytännössä itsenäinen, tilallinen mini-Worker.
Pysyvä tallennustila komennolla state.storage
Jokaisella Durable Object -instanssilla on oma yksityinen ja pysyvä avain–arvo-tallennustilansa, johon pääsee käsiksi komennolla this.state.storage. Näin objekti voi säilyttää tiedot kutsujen välillä ja jopa uudelleenkäynnistysten yli.
await this.state.storage.put('key', value): Tallentaa tietoja.await this.state.storage.get('key'): Hakee tietoja.await this.state.storage.delete('key'): Poistaa tietoja.
Arvo voi olla mikä tahansa JSON-sarjoitettava tyyppi, joten ratkaisu sopii monenlaisiin tietotarpeisiin.
Koodi: Counter-Worker ja DO
Tämä esimerkki näyttää, miten Cloudflare Worker toimii vuorovaikutuksessa yksinkertaisen Counter-Durable Object -objektin kanssa. DO ylläpitää laskuria, joka säilyy pyyntöjen välillä ja on maailmanlaajuisesti yhdenmukainen.
Jotta voitte suorittaa tämän, määritelkää Counter-Durable Object -sidonta wrangler.toml-tiedostossa.
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);
}
};Miten Counter-koodi toimii
1. Counter-luokka määrittää Durable Objectin toiminnan: se käsittelee reitit /increment, /decrement ja /get sekä säilyttää sen value-arvon.
2. Worker-pääohjelman fetch-käsittelijä:
- Se käyttää komentoa
env.COUNTER.idFromName("global-counter")saadakseen laskurille deterministisen tunnisteen. env.COUNTER.get(id)palauttaa stub-olion, joka on verkkovälityspalvelin Durable Objectiin.stub.fetch(request)välittää alkuperäisen pyynnön Durable Object -instanssille, jolloin se voi käsitellä pyynnön ja päivittää tilaansa.
Globaali yhdenmukaisuus käytännössä
Kuvitellaan, että käyttäjät eri sijainneista (esimerkiksi Euroopasta, Aasiasta ja Amerikasta) käyttävät kaikki Workerin /increment-päätepistettä. Koska kaikki kohdistavat pyyntönsä tunnisteeseen "global-counter", Cloudflare takaa, että ne kaikki käyttävät täsmälleen samaa Counter-Durable Object -instanssia.
Näin laskurin arvo pysyy aina yhdenmukaisena käyttäjän sijainnista riippumatta. Tämä yksinkertaistaa monimutkaisen hajautetun tilan hallintaa, joka olisi muuten erittäin haastavaa.
DO:iden yleiset käyttötapaukset
Durable Objects sopii erinomaisesti tilanteisiin, joissa reunalla tarvitaan vahvaa yhdenmukaisuutta ja jaettua, muokattavaa tilaa:
- Reaaliaikainen yhteistyö: Jaetut luonnoslehtiöt ja asiakirjojen muokkaus.
- Pelaaminen: Peliaulat, pelaajien tila ja vastustajien yhdistäminen.
- Live-chat: Keskusteluhuoneet ja reaaliaikaisen viestinnän viestijonot.
- Tilalliset API:t: Käyttäjäistuntojen, ostoskorien tai yksilöllisten resurssilukkojen hallinta.
Ne tuovat perinteiset tilalliset toimintamallit palvelimettomaan reunaan ja helpottavat näin monimutkaisten sovellusten rakentamista.
Pikatarkistus: Durable Objects
Mikä seuraavista kuvaa parhaiten Cloudflare Durable Objectsin tärkeintä hyötyä?
Kertaus: Durable Objects selitettynä
Tässä oppitunnissa tutustuimme Cloudflaren Durable Objects -ominaisuuteen, joka on tehokas työkalu tilallisille palvelimettomille sovelluksille.
- Ne tarjoavat reunalla globaalisti yhdenmukaisen, yksittäisen instanssin tilan.
- Jokaisella DO:lla on yksilöllinen tunniste ja yksityinen, pysyvä tallennustila (
state.storage). - Workerit käyttävät DO:ita hakemalla stub-oliot ja välittämällä niille pyyntöjä.
- Ne sopivat erinomaisesti reaaliaikaisiin, yhteistyöhön perustuviin ja tilallisiin sovelluksiin, jotka edellyttävät vahvaa yhdenmukaisuutta.
Durable Objects yhdistää tilattoman palvelimettoman arkkitehtuurin ja perinteiset tilalliset palvelut, mikä helpottaa monimutkaisten hajautettujen järjestelmien rakentamista.
Opi Reunalaskenta Cloudflare Workersilla ja Denolla tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 47
Usein kysytyt kysymykset
Onko oppitunti ”Durable Objects selitettynä” ilmainen?
Kyllä – oppitunnin ”Durable Objects selitettynä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Reunalaskenta Cloudflare Workersilla ja Denolla-kurssin, päivitä CoddyKit PROhon. Reunalaskenta Cloudflare Workersilla ja Denolla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Durable Objects selitettynä”?
Ymmärrä Durable Objects -objektien käyttö tilallisissa palvelimettomissa sovelluksissa, joissa tila säilyy yhdenmukaisena maailmanlaajuisesti Harjoittelet Reunalaskenta Cloudflare Workersilla ja Denolla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Reunalaskenta Cloudflare Workersilla ja Denolla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Reunalaskenta Cloudflare Workersilla ja Denolla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Durable Objects selitettynä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Reunalaskenta Cloudflare Workersilla ja Denolla-oppitunnilla?
Kyllä. Jokainen Reunalaskenta Cloudflare Workersilla ja Denolla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Cloudflare KV -tietovarasto
- Durable Objects selitettynä
- Denon integrointi reunatallennukseen
- Kyselyt D1 SQL:llä edgessä