Konstrukcija ir docs/architecture/23-ops.md 6. sadaļa. Workers darbina
samazinātu tīmekļa slāni. Funkciju līdzvērtība Workers ir ārpus šī uzdevuma
tvēruma (skat. PRD 12. sadaļu): ko šis mērķis nevar darīt, tas tiek noraidīts
startējot, nosaucot pēc nosaukuma.
Statuss šajā versijā
Konfigurācija ir vietā (apps/web/wrangler.jsonc, cloudflare-module Nitro
profils, Hyperdrive tilti un palaišanas pārbaudes). Worker vajadzīga
saderīga ar S3 glabātuve R2 (QUIRE_STORAGE_DRIVER=s3), reāllaika draivers
starp pieprasījumiem (QUIRE_REALTIME_DRIVER=durable_objects vai
centrifugo), koplietots kešs (QUIRE_CACHE_DRIVER=postgres vai valkey) un
HTTP e-pasta pakalpojuma sniedzējs. Bez tiem Workers atsakās startēt, un tā
žurnālā tiek nosaukts katrs iestatījums. Durable Objects draivers ir reāllaika
Workers klients mapē apps/realtime-worker (viens Durable Object katram kanālam
izplatīšanai, klātbūtsei un vēsturei, viens katrai personai atvienošanām); to
izvietojiet blakus, kā zemāk, vai izmantojiet Centrifugo.
Komponentes
Komponente
Cloudflare
web
Workers ar nodejs_compat
Postgres
Ārējs, sasniedzams caur Hyperdrive: HYPERDRIVE lietojumprogrammas lomai, REPORT_HYPERDRIVE atskaišu lomai tai pašai fiziskajai datubāzei. Tīmekļa slānis startējot nokopē katru savienojuma virkni iekš DATABASE_URL un QUIRE_REPORT_DATABASE_URL
Faili
R2, caur tā S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); saite FILES pievieno spaini
Fona darbi
pg-boss pār Hyperdrive, kad darbs jāliek rindā ar ierakstīšanu. Ar QUIRE_QUEUE_DRIVER=cloudflare uz pavadošā darbinīka vieglie darbi (nekārtotie paziņojumu un tīmekļa āķu piegādes) tā vietā iet caur Cloudflare Queues, lai Postgres tiem nebūtu jāvaicā. Pavadošais darbinīks dara abus
Reāllaiks
Reāllaika Workers, apps/realtime-worker, ar Durable Objects
Pavadošais konteineru serveris. Workers tos nevar palaist
Izsekošana
Workers observability, ieslēgts wrangler.jsonc
REPORT_HYPERDRIVE nodrošina atskaišu lomu fiziskajai datubāzei, ko nosaka
HYPERDRIVE. Šis mērķis neapkalpo nomniekus, kas piesaistīti papildu fiziskām
datubāzēm, kā aprakstīts tālāk.
Ko šis mērķis nevar darīt
Noraidīts startējot, uzreiz uzskaitot katru problēmu:
Nav SMTP.QUIRE_EMAIL_PROVIDER_CONFIG izmantojiet HTTP pakalpojuma
sniedzēju.
Nav vietējā diska.QUIRE_STORAGE_DRIVER ir jānosaka objektu glabātuvi.
Nav procesa iekšēja reāllaika vai keša. Workers nepakļauj atmiņu starp
pieprasījumiem, tāpēc QUIRE_REALTIME_DRIVER=inprocess un
QUIRE_CACHE_DRIVER=memory tiek noraidīti.
Worker nav ClamAV, Gotenberg vai ffmpeg. Uz Worker iestatītie
CLAMAV_URL, GOTENBERG_URL un FFMPEG_PATH tiek noraidīti; iestatiet tos
pavadošajā darbinīkā.
Nav atsevišķas datubāzes organizāciju. Worker Hyperdrive saites ir
fiksētas izvietošanas brīdī, tāpēc organizācija ar savu datubāzi saņem
skaidru lapu “unavailable here”. Kalpojiet to no Compose vai Vercel.
Un viena lieta, kas netiek noraidīta, bet ir jāzina: priekšizskatīšana un
pakāpeniska statiskā pārģenerēšana Workers nedarbojas, neatkarīgi no tā, ko
saka framework dokumentācija. Katrs maršruts tiek renderēts katram pieprasījumam.
Šajā mērķī turiet darījumus īsus un nekad neturiet tos pār tīkla izsaukumu:
Hyperdrive atjauno sesijas stāvokli, kad savienojums atgriežas baseinā, tāpēc
nomnieka konteksts tiek iestatīts katram darījumam.
Izvietošana
Izveidojiet resursus:
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
Ielieciet abus Hyperdrive ID mapē apps/web/wrangler.jsonc.
Iestatiet noslēpumus, pa vienam ar bun run --bun wrangler secret put <NAME> no
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. Parastie
iestatījumi (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN,
QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET,
QUIRE_COLLAB_URL) nonāk iekš vars.
Uzbūvējiet un izvietojiet no apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Izvietojiet reāllaika Worker ar tīmekļa slāņa
QUIRE_REALTIME_WORKER_SECRET un tā žetona noslēpumu kā
QUIRE_REALTIME_TOKEN_SECRET (tīmekļa slānis paraksta reāllaika žetonus ar
savu QUIRE_REALTIME_TOKEN_SECRET vai, ja tas nav iestatīts, ar
QUIRE_SECRET_KEY, tāpēc izmantojiet to, ko tas izmanto), un iestatiet uz
tīmekļa slāņa QUIRE_REALTIME_WORKER_URL uz tā adresi:
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
Vieglo darbu gadījumā vietnē Cloudflare Queues izveidojiet pa vienai rindai
katram vieglajam darbam un iestatiet tos pavadošajā darbinīkā (API žetons
ar Queues lasīšanas un rakstīšanas tiesībām):
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 un QUIRE_QUEUE_PREFIX, ja tas nav quire-.
Palaidiet pavadošo serveri tā, kā Vercel ceļvedī, 3. solī.
Migrācijas tur tiek palaistas pirms katra Workers izvietojuma.
Noraidīta konfigurācija bun run --bun wrangler tail parādās kā “The web tier did not
start on cloudflare”, kam seko katrs iestatījums, kas jāmaina.