Pāriet uz saturu

Tīmekļa slānis vietnē Cloudflare Workers

Palaidiet samazinātu Quire tīmekļa slāni vietnē Cloudflare Workers.

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
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg 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

  1. 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-files
    bun run --bun wrangler queues create quire-jobs
    Ielieciet abus Hyperdrive ID mapē apps/web/wrangler.jsonc.
  2. 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.
  3. Uzbūvējiet un izvietojiet no apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. 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-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. 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-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
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN un QUIRE_QUEUE_PREFIX, ja tas nav quire-.
  6. 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.

Navigācija

Ierakstiet, lai meklētu…

↑↓ pārvietoties↵ izvēlētiesEsc aizvērt