Pereiti prie turinio

Tinklo sluoksnis Cloudflare Workers

Vykdykite sutrumpintą Quire tinklo sluoksnį Cloudflare Workers.

Rodyti kaip Markdown

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

  1. 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-files
    bun run --bun wrangler queues create quire-jobs
    Įdėkite tuos du Hyperdrive ID į apps/web/wrangler.jsonc.
  2. 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.
  3. Pastatykite ir paleiskite diegimą iš apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. 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-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. 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-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 ir QUIRE_QUEUE_PREFIX, jei tai ne quire-.
  6. 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.

Navigacija

Įveskite norėdami ieškoti…

↑↓ naršyti↵ pasirinktiEsc uždaryti