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
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
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-filesbun run --bun wrangler queues create quire-jobs
Lisää molemmat Hyperdrive-tunnisteet tiedostoon apps/web/wrangler.jsonc.
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.
Muodosta ja ota käyttöön hakemistossa apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
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-workerbun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRETbun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRETbun run --bun wrangler deploy
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-notificationsbun run --bun wrangler queues create quire-events-notifications-deadbun run --bun wrangler queues create quire-events-webhooksbun 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-).
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.