Projekto aprašas yra docs/architecture/23-ops.md 6 skyrius. Workers vykdo
sutrumpintą tinklo sluoksnį. Funkcijų lygiavertiškumas Workers nepatenka į
apimtį (PRD 12 skyrius): ko šis tikslas negali daryti, atmetama jam
paleidžiant, pavadinimu.
Šios versijos būsena
Konfigūracija yra vietoje (apps/web/wrangler.jsonc, cloudflare-module
Nitro nustatymas, Hyperdrive tiltas ir paleidimo patikros). Worker reikia su
S3 suderintos saugyklos R2 (QUIRE_STORAGE_DRIVER=s3), realiojo laiko
variklio tarp užklausų (QUIRE_REALTIME_DRIVER=durable_objects arba
centrifugo), bendrinamo podėlio (QUIRE_CACHE_DRIVER=postgres arba
valkey) ir HTTP el. pašto teikėjo. Be jų Worker atsisako paleisti, o jo
žurnale išvardijamas kiekvienas nustatymas. Durable Objects variklis yra
realiojo laiko Worker klientas apps/realtime-worker kataloge (vienas
Durable Object kanalui skirstymui, buvimui ir istorijai, vienas žmogui
atsijungimams); jį paleiskite šalia, kaip aprašyta toliau, arba naudokite
Centrifugo.
Dalys
Dalis
Cloudflare
web
Worker su nodejs_compat
Postgres
Išorinis, pasiekiamas per Hyperdrive: HYPERDRIVE programų vaidmeniui, REPORT_HYPERDRIVE ataskaitų vaidmeniui toje pačioje fizinėje duomenų bazėje. Tinklo sluoksnis paleisdamas nukopuoja kiekvieną ryšio eilutę į DATABASE_URL ir QUIRE_REPORT_DATABASE_URL
Failai
R2 per jo S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES susiejimas pritvirtina kibirą
Fono užduotys
pg-boss per Hyperdrive, kai užduotį reikia į eilę dėti rašymu. Kai lydinčiam darbininkui nustatytas QUIRE_QUEUE_DRIVER=cloudflare, lengvos užduotys (netvarkingos pranešimų ir „webhook“ pristatymai) vietoj to eina per Cloudflare Queues, todėl joms nereikia nuolat tikrinti Postgres. Lydimasis darbininkas vykdo abu
Realusis laikas
Realiojo laiko Worker apps/realtime-worker su Durable Objects
Lydimoji konteinerių sistema. Worker jų paleisti negali
Pėdsakų sekimas
Workers observability, įjungta wrangler.jsonc
REPORT_HYPERDRIVE tiekia ataskaitų vaidmenį fizinei duomenų bazei, kurią
nurodo HYPERDRIVE. Šis tikslas netarnauja nuomininkams, pririštiems prie
papildomų fizinių duomenų bazių, kaip aprašyta toliau.
Ko šis tikslas negali daryti
Atmetama paleidžiant, su kiekviena problema išvardinta iš karto:
Nėra SMTP. Naudokite HTTP teikėją QUIRE_EMAIL_PROVIDER_CONFIG.
Nėra vietinio disko.QUIRE_STORAGE_DRIVER turi nurodyti objektų
saugyklą.
Nėra proceso vidinio realiojo laiko arba podėlio. Workers tarp užklausų
nedalijasi atmintimi, todėl QUIRE_REALTIME_DRIVER=inprocess ir
QUIRE_CACHE_DRIVER=memory atmetami.
Nėra ClamAV, Gotenberg arba ffmpeg Worker viduje.CLAMAV_URL,
GOTENBERG_URL ir FFMPEG_PATH, nustatyti Worker, atmetami; nustatykite
juos lydinčiam darbininkui.
Nėra atskirų duomenų bazių turinčių organizacijų. Worker Hyperdrive
susiejimai fiksuojami diegimo metu, todėl organizacija su savo duomenų
baze gauna aiškų puslapį “unavailable here”. Tarnaukite jai iš Compose
arba Vercel.
Ir dar vienas dalykas, kuris neatmetamas, bet turi būti žinomas:
išankstinis generavimas ir laipsniškas statinis atnaujinimas Workers
neveikia, kad ir ką sakytų framework dokumentacija. Kiekvienas maršrutas
generuojamas kiekvienai užklausai.
Šiame tiksle laikykite transakcijas trumpas ir niekada nelaikykite jų per
tinklo užklausą: Hyperdrive iš naujo nustato seanso būseną, kai ryšys
grįžta į baseiną, todėl nuomininko kontekstas nustatomas kiekvienai
transakcijai.
Diegimas
Sukurkite išteklius:
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
Įdėkite tuos du Hyperdrive ID į apps/web/wrangler.jsonc.
Nustatykite paslaptis, po vieną su bun run --bun wrangler secret put <NAME> iš
apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY,
QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY,
QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET. Paprasti
nustatymai (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN,
QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET,
QUIRE_COLLAB_URL) rašomi į vars.
Pastatykite ir paleiskite diegimą iš apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Paleiskite realiojo laiko Worker su tinklo sluoksnio
QUIRE_REALTIME_WORKER_SECRET ir jo žetono paslaptimi kaip
QUIRE_REALTIME_TOKEN_SECRET (tinklo sluoksnis pasirašo realiojo laiko
žetonus savo QUIRE_REALTIME_TOKEN_SECRET arba QUIRE_SECRET_KEY, kai
to nėra nustatyta, todėl naudokite tą, kurį jis naudoja), ir nustatykite
tinklo sluoksnyje QUIRE_REALTIME_WORKER_URL į jo adresą:
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
Lengvoms užduotims per Cloudflare Queues sukurkite po vieną eilę kiekvienai
lengvai eilei ir nustatykite tai lydinčiam darbininkui (API žetonas su
Queues skaitymo ir rašymo teisėmis):
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
QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN ir QUIRE_QUEUE_PREFIX, jei tai ne quire-.
Paleiskite lydinčią sistemą pagal Vercel vadovą, 3 žingsnį.
Migracijos ten vykdomos prieš kiekvieną Worker diegimą.
Atmetta konfigūracija bun run --bun wrangler tail rodoma kaip “The web tier did not
start on cloudflare”, po to sekant kiekvienu nustatymu, kurį reikia pakeisti.