Reunalaskenta Cloudflare Workersilla ja Denolla · Oppitunti

Durable Objects selitettynä

Ymmärrä Durable Objects -objektien käyttö tilallisissa palvelimettomissa sovelluksissa, joissa tila säilyy yhdenmukaisena maailmanlaajuisesti

Oppitunti 2/411 vaihetta

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, jossa state tarjoaa pääsyn objektin tallennustilaan ja env sisä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.

Aloita maksutta

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

  1. Cloudflare KV -tietovarasto
  2. Durable Objects selitettynä
  3. Denon integrointi reunatallennukseen
  4. Kyselyt D1 SQL:llä edgessä
← Takaisin: Reunalaskenta Cloudflare Workersilla ja Denolla