Dizajn je opisan u odjeljku 6 dokumenta docs/architecture/23-ops.md.
Workers pokreće ograničeni web-sloj. Potpuna funkcionalna usklađenost na
Workersu nije cilj (odjeljak 12 dokumenta PRD): pri pokretanju odbijaju se
mogućnosti koje ovo odredište ne podržava, uz navođenje po imenu.
Stanje u ovom izdanju
Konfiguracija je spremna (apps/web/wrangler.jsonc, unaprijed postavljena
vrijednost Nitro cloudflare-module, most Hyperdrive i provjere pri
pokretanju). Worker treba pohranu kompatibilnu sa S3 za R2
(QUIRE_STORAGE_DRIVER=s3), upravljački program za stvarno vrijeme koji
opslužuje zahtjeve (QUIRE_REALTIME_DRIVER=durable_objects ili centrifugo),
zajedničku predmemoriju (QUIRE_CACHE_DRIVER=postgres ili valkey) i HTTP
pružatelja e-pošte. Bez njih Worker odbija pokretanje, a zapis navodi svaku
postavku. Upravljački program Durable Objects klijent je Worker procesa za
stvarno vrijeme u apps/realtime-worker (jedan objekt Durable Object po
kanalu za distribuciju, prisutnost i povijest te jedan po osobi za prekide
veze); uvedite ga zajedno s web-slojem prema uputama u nastavku ili koristite
Centrifugo.
Sastavni dijelovi
Dio
Na Cloudflareu
web
Worker s nodejs_compat
Postgres
Vanjska baza kojoj se pristupa preko Hyperdrive: HYPERDRIVE za ulogu aplikacije, REPORT_HYPERDRIVE za ulogu izvješća u istoj fizičkoj bazi. Web-sloj pri pokretanju kopira svaki niz veze u DATABASE_URL i QUIRE_REPORT_DATABASE_URL
Datoteke
R2 preko njegova S3 API-ja (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); vezanje FILES priključuje spremnik
Pozadinski poslovi
pg-boss preko Hyperdrivea kad posao treba staviti u red zajedno sa zapisom. Kad se na pratećem radniku postavi QUIRE_QUEUE_DRIVER=cloudflare, jednostavni poslovi (neporedana isporuka obavijesti i web-dojavnika) prolaze kroz Cloudflare Queues pa se Postgres ne provjerava radi njih. Prateći radnik pokreće oboje
Događaji u stvarnom vremenu
Worker za stvarno vrijeme apps/realtime-worker s objektima Durable Objects
Prateći poslužitelj spremnika. Worker ih ne može pokretati
Praćenje
Mogućnosti nadzora Workersa, uključene u wrangler.jsonc
REPORT_HYPERDRIVE daje ulogu za izvješća za fizičku bazu navedenu u
HYPERDRIVE. Ovo odredište ne poslužuje klijente prikvačene na dodatne
fizičke baze, kao što je objašnjeno u nastavku.
Što ovo odredište ne može
Pri pokretanju se odjednom odbijaju sve mogućnosti koje nisu podržane:
Nema SMTP-a. Koristite HTTP pružatelja u QUIRE_EMAIL_PROVIDER_CONFIG.
Nema lokalnog diska.QUIRE_STORAGE_DRIVER mora navesti pohranu objekata.
Nema stvarnog vremena ni predmemorije u istom procesu. Workers ne
dijeli memoriju među zahtjevima, pa se odbijaju
QUIRE_REALTIME_DRIVER=inprocess i QUIRE_CACHE_DRIVER=memory.
Nema ClamAV-a, Gotenberga ni ffmpega unutar Workera. Postavke
CLAMAV_URL, GOTENBERG_URL i FFMPEG_PATH na Workeru odbijaju se;
postavite ih na pratećem radniku.
Nema organizacija s namjenskim bazama podataka. Vezanja Hyperdrivea za
Worker utvrđuju se pri uvođenju, pa se za organizaciju s vlastitom bazom
prikazuje jasna stranica „ovdje nije dostupno”. Poslužujte je s Composa ili
Vercela.
Postoji još jedna stvar koja se ne odbija, ali je morate znati:
predizrada i inkrementalna ponovna generacija statičkih stranica ne rade na
Workersu, bez obzira na dokumentaciju okvira. Svaka se ruta renderira pri
svakom zahtjevu.
Na ovom odredištu transakcije moraju biti kratke i ne smiju obuhvaćati mrežni
poziv: Hyperdrive pri vraćanju veze u skup poništava stanje sesije, pa se
kontekst klijenta postavlja za svaku transakciju.
Uvođenje
Izradite resurse:
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
Unesite dva ID-ja Hyperdrivea u apps/web/wrangler.jsonc.
Postavite tajne, jednu po jednu naredbom bun run --bun wrangler secret put <NAME>
iz direktorija apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY,
QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY,
QUIRE_COLLAB_SIGNING_KEY i QUIRE_REALTIME_WORKER_SECRET. Obične
postavke (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN,
QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET,
QUIRE_COLLAB_URL) dodajte u vars.
Izradite paket i uvedite aplikaciju iz direktorija apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Uvedite Worker za stvarno vrijeme s vrijednošću
QUIRE_REALTIME_WORKER_SECRET iz web-sloja i njegovom tajnom tokena kao
QUIRE_REALTIME_TOKEN_SECRET. Web-sloj potpisuje tokene za stvarno vrijeme
vlastitom postavkom QUIRE_REALTIME_TOKEN_SECRET, odnosno ključem
QUIRE_SECRET_KEY ako ona nije postavljena, stoga upotrijebite onu koju
koristi. Postavite QUIRE_REALTIME_WORKER_URL web-sloja na njegovu adresu:
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
Za jednostavne poslove na Cloudflare Queuesu izradite jedan red po vrsti
jednostavnog posla i postavite navedeno na pratećem radniku (API token s
ovlastima čitanja i zapisivanja u redove):
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
Postavite QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN i QUIRE_QUEUE_PREFIX ako prefiks nije quire-.
Pokrenite prateći poslužitelj kao u vodiču za Vercel, korak 3.
Migracije se ondje izvršavaju prije svakog uvođenja Workera.
Odbijena konfiguracija prikazuje se u izlazu naredbe bun run --bun wrangler tail kao
„The web tier did not start on cloudflare”, a zatim slijedi popis svake
postavke koju treba promijeniti.