Siirry sisältöön

Verkon palvelutaso Cloudflare Workersissa

Suorita rajattu Quiren verkkopalvelutaso Cloudflare Workersissa.

Rakenne kuvataan tiedoston docs/architecture/23-ops.md kohdassa 6. Workers suorittaa rajattua verkkopalvelutasoa. Toimintojen yhdenvertaisuus Workersiä käyttäen ei kuulu tavoitteeseen (PRD:n kohta 12): kohde kieltäytyy käynnistyessään ominaisuuksista, joita se ei tue, ja nimeää ne.

Tämän julkaisun tila

Asetukset ovat valmiina (apps/web/wrangler.jsonc, Nitro-esiasetus cloudflare-module, Hyperdrive-silta ja käynnistystarkistukset). Worker tarvitsee R2:n kanssa yhteensopivaa S3-tallennusta (QUIRE_STORAGE_DRIVER=s3), pyyntöjen välillä toimivan reaaliaikaisuusajurin (QUIRE_REALTIME_DRIVER=durable_objects tai centrifugo), jaetun välimuistin (QUIRE_CACHE_DRIVER=postgres tai valkey) ja HTTP-sähköpostipalveluntarjoajan. Jos jokin puuttuu, Worker ei käynnisty ja lokissa nimetään puuttuva asetus. Durable Objects -ajuri käyttää apps/realtime-worker-hakemiston reaaliaikaisuus-Workeriä (yksi Durable Object kanavaa kohden tapahtumien välitykseen, läsnäoloon ja historiaan; yksi käyttäjää kohden yhteyden katkeamiseen). Ota se käyttöön rinnalla alla kuvatulla tavalla tai käytä Centrifugoa.

Osat

Osa Cloudflaressa
web Worker ja nodejs_compat
Postgres Ulkoinen, Hyperdriven kautta: HYPERDRIVE sovellusroolille ja REPORT_HYPERDRIVE raporttiroolille samassa fyysisessä tietokannassa. Verkkopalvelutaso kopioi yhteysmerkkijonot käynnistyessään arvoiksi DATABASE_URL ja QUIRE_REPORT_DATABASE_URL.
Tiedostot R2 sen S3-rajapinnan kautta (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES-sidonta liittää säilön
Taustatyöt pg-boss Hyperdriven kautta, kun työ on lisättävä kirjoituksen kanssa. Kun rinnakkaistyöntekijän QUIRE_QUEUE_DRIVER=cloudflare, kevyet työt (järjestämättömät ilmoitukset ja webhook-toimitukset) kulkevat Cloudflare Queuesin kautta, eikä Postgres-tietokantaa haeta niiden vuoksi. Rinnakkaistyöntekijä suorittaa molemmat.
Reaaliaikaisuus Reaaliaikaisuus-Worker apps/realtime-worker-hakemistossa ja Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Rinnakkainen säiliöpalvelin. Worker ei voi suorittaa niitä.
Jäljitys Workersin havainnointi, otettu käyttöön tiedostossa wrangler.jsonc

REPORT_HYPERDRIVE antaa raporttiroolin yhteyden fyysiseen tietokantaan, johon HYPERDRIVE osoittaa. Tämä kohde ei palvele muita fyysisiä tietokantoja käyttäviä vuokraajia, kuten alla kuvataan.

Mitä tässä kohteessa ei voi tehdä

Käynnistys estetään ja kaikki ongelmat luetellaan kerralla:

  • SMTP ei ole käytettävissä. Käytä QUIRE_EMAIL_PROVIDER_CONFIG-asetuksessa HTTP-palveluntarjoajaa.
  • Paikallinen levy ei ole käytettävissä. QUIRE_STORAGE_DRIVER-muuttujan on määritettävä objekti- tai pilvitallennus.
  • Prosessinsisäinen reaaliaikaisuus tai välimuisti ei ole käytettävissä. Workerin pyynnöt eivät jaa muistia, joten arvot QUIRE_REALTIME_DRIVER=inprocess ja QUIRE_CACHE_DRIVER=memory hylätään.
  • ClamAV, Gotenberg tai ffmpeg ei ole käytettävissä Workerissa. Workerille asetetut CLAMAV_URL, GOTENBERG_URL ja FFMPEG_PATH hylätään. Aseta ne sen sijaan rinnakkaistyöntekijälle.
  • Omistetun tietokannan organisaatiot eivät ole käytettävissä. Workerin Hyperdrive-sidonnat määritetään käyttöönoton yhteydessä, joten oman tietokannan omaavan organisaation sivulla näytetään selkeä ilmoitus, että palvelu ei ole täällä käytettävissä. Palvele organisaatioita Composesta tai Vercelistä.

Yksi muu rajoite ei estä käynnistymistä, mutta se on tärkeä tietää: esirenderöinti ja vaiheittainen staattinen uudelleenluonti eivät toimi Workersissa, vaikka kehyksen dokumentaatio väittäisi muuta. Jokainen reitti renderöidään pyynnöstä.

Pidä tässä kohteessa tapahtumat lyhyinä äläkä säilytä tapahtumaa verkkokutsun ajan. Hyperdrive nollaa istunnon tilan, kun yhteys palautuu pooliin, joten vuokraajakonteksti asetetaan jokaisessa tapahtumassa.

Käyttöönotto

  1. Luo tarvittavat resurssit:
    bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"
    bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"
    bun run --bun wrangler r2 bucket create quire-files
    bun run --bun wrangler queues create quire-jobs
    Lisää molemmat Hyperdrive-tunnisteet tiedostoon apps/web/wrangler.jsonc.
  2. Aseta salaisuudet yksi kerrallaan komennolla bun run --bun wrangler secret put <NAME> hakemistossa apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY ja QUIRE_REALTIME_WORKER_SECRET. Tavalliset asetukset (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) lisätään vars-kohtaan.
  3. Muodosta ja ota käyttöön hakemistossa apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Ota reaaliaikaisuus-Worker käyttöön. Aseta sille verkkopalvelutason QUIRE_REALTIME_WORKER_SECRET ja tokenin salaisuudeksi QUIRE_REALTIME_TOKEN_SECRET. Verkkopalvelutaso allekirjoittaa reaaliaikaistokenit omalla QUIRE_REALTIME_TOKEN_SECRET-arvollaan tai sen puuttuessa QUIRE_SECRET_KEY-arvolla, joten käytä samaa arvoa kuin palvelutaso. Aseta sen jälkeen verkkopalvelutason QUIRE_REALTIME_WORKER_URL osoittamaan Workerin osoitteeseen:
    cd apps/realtime-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. Luo Cloudflare Queues -jonot kevyille töille. Luo oma jono kutakin kevyttä jonoa kohti ja aseta nämä rinnakkaistyöntekijälle (API-tunnisteella, jolla on jonojen luku- ja kirjoitusoikeudet):
    bun run --bun wrangler queues create quire-events-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun run --bun wrangler queues create quire-events-webhooks-dead
    Aseta QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN ja tarvittaessa etuliitteeksi QUIRE_QUEUE_PREFIX (oletus quire-).
  6. Suorita rinnakkaispalvelin Vercel-oppaan vaiheen 3 mukaisesti. Migraatiot suoritetaan siellä ennen jokaista Worker-julkaisua.

Jos asetukset hylätään, bun run --bun wrangler tail näyttää ensin tekstin “The web tier did not start on cloudflare” ja luettelee sitten muutettavat asetukset.

Navigaatio

Kirjoita hakeaksesi…

↑↓ siirry↵ valitseEsc sulje