Gafee gaa n'ọdịnaya

Ọkwa weebụ na Cloudflare Workers

Gbaa ọkwa weebụ Quire dị nta na Cloudflare Workers.

Nhazi ahụ dị na docs/architecture/23-ops.md ngalaba 6. Workers na-agba ọkwa weebụ dị nta. Ịha nhata na Workers adịghị n’ọrụ a (PRD ngalaba 12): ihe ebumnobi a enweghị ike ime ka a na-ajụ mgbe ọ malitere, na-akpọ aha.

Ọnọdụ na mwepụta a

Nhazi ahụ adịlarị (apps/web/wrangler.jsonc, nhazi Nitro cloudflare-module, njikọ Hyperdrive na nlele mmalite). Worker chọrọ usoro nchekwa maka R2 dabara na S3 (QUIRE_STORAGE_DRIVER=s3), usoro ozi ozugbo gafee arịrịọ (QUIRE_REALTIME_DRIVER=durable_objects ma ọ bụ centrifugo), nchekwa ọnụ (QUIRE_CACHE_DRIVER=postgres ma ọ bụ valkey) na onye na-enye email site na HTTP. Na-enweghị ha Worker jụrụ ịmalite, ndekọ ya akpọkwa ntọala ọ bụla. Usoro Durable Objects bụ onye ahịa nke Worker ozi ozugbo dị na apps/realtime-worker (otu Durable Object kwa channel maka mgbasa, ọnụnọ na akụkọ, otu kwa mmadụ maka nkwụsị); bunye ya n’akụkụ, dị ka n’okpuru, ma ọ bụ jiri Centrifugo.

Akụkụ dị iche iche

Akụkụ Na Cloudflare
web Worker na nodejs_compat
Postgres N’èzí, a na-eru ya site na Hyperdrive: HYPERDRIVE maka ọrụ ngwa, REPORT_HYPERDRIVE maka ọrụ akụkọ na otu nchekwa data anụ ahụ ahụ. Ọkwa weebụ na-edegharị eriri njikọ ọ bụla na DATABASE_URL na QUIRE_REPORT_DATABASE_URL mgbe ọ malitere
Faịlụ R2, site na API S3 ya (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); njikọ FILES na-ejikọta bucket
Ọrụ ndabere pg-boss site na Hyperdrive mgbe a ga-etinye ọrụ n’ahịrị na ederede. Na QUIRE_QUEUE_DRIVER=cloudflare na worker ibe, ọrụ dị mfe (nnyefe ngosi na webhook na-enweghị usoro) na-aga site na Cloudflare Queues kama, ka a ghara ịjụ Postgres ajụjụ maka ha. Worker ibe na-agba ha abụọ
Ozi ozugbo Worker ozi ozugbo, apps/realtime-worker, na Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Họst akpa ibe. Worker enweghị ike ịgba ha
Nsochi Nlekọta Workers, agbanyere na wrangler.jsonc

REPORT_HYPERDRIVE na-enye ọrụ akụkọ maka nchekwa data anụ ahụ HYPERDRIVE kpọrọ. Ebumnobi a anaghị enye tenants a tụkwasịrị na nchekwa data anụ ahụ ọzọ, dị ka akọwara n’okpuru.

Ihe ebumnobi a enweghị ike ime

A jụrụ na mmalite, na-edepụta nsogbu ọ bụla n’otu oge:

  • Enweghị SMTP. Jiri onye na-enye ọrụ site na HTTP na QUIRE_EMAIL_PROVIDER_CONFIG.
  • Enweghị disk mpaghara. QUIRE_STORAGE_DRIVER ga-akpọ nchekwa ihe.
  • Enweghị ozi ozugbo ma ọ bụ nchekwa n’ime usoro. Workers anaghị kekọrịta ncheta n’etiti arịrịọ, ya mere a jụrụ QUIRE_REALTIME_DRIVER=inprocess na QUIRE_CACHE_DRIVER=memory.
  • Enweghị ClamAV, Gotenberg ma ọ bụ ffmpeg na Worker. A jụrụ CLAMAV_URL, GOTENBERG_URL na FFMPEG_PATH atọrọ na Worker; tọọ ha na worker ibe kama.
  • Enweghị otu nwere nchekwa data nke ha. Njikọ Hyperdrive nke Worker na-adịgide na oge mbunye, ya mere otu nwere nchekwa data nke ya na-enweta peeji doro anya “unavailable here”. Nye ya site na Compose ma ọ bụ Vercel.

Na otu ihe a na-ajụghị mana a ga-amarịrị: prerendering na incremental static regeneration anaghị arụ ọrụ na Workers, n’agbanyeghị ihe akwụkwọ framework kwuru. Ụzọ ọ bụla na-apụta n’arịrịọ ọ bụla.

Na ebumnobi a mee ka transaction dị mkpụmkpụ, ejidekwala otu gafee oku netwọk: Hyperdrive na-emegharị ọnọdụ session mgbe njikọ laghachiri na ọdọ mmiri, ya mere a na-atọ ọnọdụ tenant n’otu transaction.

Mbunye

  1. Mepụta akụ:
    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
    Tinye id Hyperdrive abụọ na apps/web/wrangler.jsonc.
  2. Tọọ nzuzo, otu n’otu oge na bun run --bun wrangler secret put <NAME> site na 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. Ntọala nkịtị (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) na-aga na vars.
  3. Wuo ma bunye site na apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Bunye Worker ozi ozugbo, na QUIRE_REALTIME_WORKER_SECRET nke ọkwa weebụ na nzuzo token ya dịka QUIRE_REALTIME_TOKEN_SECRET (ọkwa weebụ na-ebinye aka na token ozi ozugbo na QUIRE_REALTIME_TOKEN_SECRET nke ya, ma ọ bụ na QUIRE_SECRET_KEY mgbe nke ahụ adịghị, ya mere jiri nke ọ na-eji), tọọkwa QUIRE_REALTIME_WORKER_URL na ọkwa weebụ na adreesị ya:
    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. Maka ọrụ dị mfe na Cloudflare Queues, mepụta otu queue kwa queue dị mfe tọọkwa ihe ndị a na worker ibe (token API na ọgụgụ na ide Queues):
    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, na QUIRE_QUEUE_PREFIX ma ọ bụghị quire-.
  6. Gbaa họst ibe dị ka na ntuziaka Vercel, nzọụkwụ 3. Mbugharị na-agba ebe ahụ, tupu mbunye Worker ọ bụla.

Nhazi a jụrụ na-egosi na bun run --bun wrangler tail dịka “The web tier did not start on cloudflare”, na-esote ntọala ọ bụla ịgbanwe.

Igodo ụzọ

Pịnye ihe ị ga-achọ…

↑↓ gaa n'ihe dị iche iche↵ họrọEsc mechie