Mae’r dyluniad yn adran 6 o docs/architecture/23-ops.md. Mae Workers yn rhedeg
haen we lai o ran nodweddion. Nid yw cydraddoldeb nodweddion ar Workers o fewn y cwmpas (adran 12 y PRD): mae’r hyn
na all y targed hwn ei wneud yn cael ei wrthod wrth gychwyn, yn ôl enw.
Statws yn y datganiad hwn
Mae’r ffurfweddiad ar waith (apps/web/wrangler.jsonc, rhagosodiad Nitro
cloudflare-module, pont Hyperdrive a gwiriadau cychwyn). Mae angen storfa sy’n gydnaws â S3 ar Worker ar gyfer R2
(QUIRE_STORAGE_DRIVER=s3), gyrrwr amser real ar draws ceisiadau
(QUIRE_REALTIME_DRIVER=durable_objects neu centrifugo), storfa dros dro a rennir
(QUIRE_CACHE_DRIVER=postgres neu valkey) a darparwr e-bost HTTP.
Hebddynt mae’r Worker yn gwrthod cychwyn ac mae ei log yn enwi pob gosodiad.
Mae gyrrwr Durable Objects yn gleient i’r Worker amser real yn
apps/realtime-worker (un Durable Object fesul sianel ar gyfer dosbarthu, presenoldeb
a hanes, un fesul person ar gyfer datgysylltiadau); defnyddiwch ef ochr yn ochr, fel isod,
eu Centrifugo.
Y cydrannau
Cydran
Ar Cloudflare
web
Worker gyda nodejs_compat
Postgres
Allanol, drwy Hyperdrive: HYPERDRIVE ar gyfer rôl y rhaglen, REPORT_HYPERDRIVE ar gyfer rôl yr adroddiad ar yr un gronfa ddata ffisegol. Mae’r haen we’n copïo pob llinyn cysylltiad i DATABASE_URL a QUIRE_REPORT_DATABASE_URL wrth gychwyn
Ffeiliau
R2, drwy ei API S3 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); mae’r rhwymiad FILES yn atodi’r bwced
Gwaith cefndir
pg-boss dros Hyperdrive pan fydd rhaid ciwio’r gwaith gyda gweithred ysgrifennu. Gyda QUIRE_QUEUE_DRIVER=cloudflare ar y worker cydymaith, mae’r gwaith ysgafn (hysbysiadau heb drefn a dosbarthiadau webhook) yn mynd drwy Cloudflare Queues yn lle hynny, felly ni pholir Postgres ar eu cyfer. Mae worker y cydymaith yn rhedeg y ddau
Amser real
Y Worker amser real, apps/realtime-worker, gyda Durable Objects
Host cynwysyddion cydymaith. Ni all Worker eu rhedeg
Olrhain
Arsylwadwyedd Workers, wedi’i alluogi yn wrangler.jsonc
Mae REPORT_HYPERDRIVE yn darparu rôl adrodd ar gyfer y gronfa ddata ffisegol a enwir
gan HYPERDRIVE. Nid yw’r targed hwn yn gwasanaethu tenantiaid sydd wedi’u pinio i gronfeydd data ffisegol ychwanegol,
fel y disgrifir isod.
Beth na all y targed hwn ei wneud
Gwrthodir wrth gychwyn, gyda phob problem wedi’i rhestru ar unwaith:
Dim SMTP. Defnyddiwch ddarparwr HTTP yn QUIRE_EMAIL_PROVIDER_CONFIG.
Dim disg lleol. Rhaid i QUIRE_STORAGE_DRIVER enwi storfa gwrthrychau.
Dim amser real na storfa dros dro yn y broses. Nid yw Workers yn rhannu cof rhwng
ceisiadau, felly gwrthodir QUIRE_REALTIME_DRIVER=inprocess a
QUIRE_CACHE_DRIVER=memory.
Dim ClamAV, Gotenberg na ffmpeg yn y Worker. Gwrthodir CLAMAV_URL,
GOTENBERG_URL a FFMPEG_PATH a osodwyd ar y Worker; gosodwch nhw ar
worker y cydymaith yn lle hynny.
Dim sefydliadau â chronfa ddata benodol. Mae rhwymiadau Hyperdrive Worker yn
sefydlog adeg defnyddio, felly mae sefydliad â’i gronfa ddata ei hun yn cael tudalen glir
“ddim ar gael yma”. Gwasanaethwch ef o Compose neu Vercel.
Ac un peth nad yw’n cael ei wrthod ond y mae’n rhaid ei wybod: nid yw cyn-rendro ac
ail-gynhyrchu statig cynyddrannol yn gweithio ar Workers, beth bynnag a ddywed
dogfennaeth y fframwaith. Mae pob llwybr yn cael ei rendro fesul cais.
Ar y targed hwn, cadwch drafodion yn fyr a pheidiwch byth â chadw un ar draws galwad rhwydwaith:
mae Hyperdrive yn ailosod cyflwr sesiwn pan fydd cysylltiad yn dychwelyd i’r pwll,
felly gosodir cyd-destun tenant fesul trafodiad.
Defnyddio
Crëwch yr adnoddau:
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
Rhowch y ddau ID Hyperdrive yn apps/web/wrangler.jsonc.
Gosodwch y cyfrinachau, un ar y tro gyda bun run --bun wrangler secret put <NAME> o
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. Mae gosodiadau testun plaen
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) yn perthyn yn
vars.
Adeiladwch a defnyddiwch o apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Defnyddiwch y Worker amser real, gyda QUIRE_REALTIME_WORKER_SECRET yr haen we
a’i gyfrinach tocyn fel QUIRE_REALTIME_TOKEN_SECRET (mae’r haen we’n llofnodi
tocynnau amser real gyda’i QUIRE_REALTIME_TOKEN_SECRET ei hun, neu gyda
QUIRE_SECRET_KEY pan nad yw hynny wedi’i osod; defnyddiwch felly pa un bynnag y mae’n ei ddefnyddio), a gosodwch
QUIRE_REALTIME_WORKER_URL ar yr haen we i’w gyfeiriad:
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
Ar gyfer gwaith ysgafn yn Cloudflare Queues, crëwch un ciw fesul ciw ysgafn a
gosodwch y rhain ar y worker cydymaith (tocyn API gyda chaniatâd darllen ac
ysgrifennu ar gyfer Queues):
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, a QUIRE_QUEUE_PREFIX os nad quire- ydyw.
Rhedeg host y cydymaith fel yng nghanllaw Vercel, cam 3.
Mae mudo’n rhedeg yno cyn pob defnydd Worker.
Mae ffurfweddiad a wrthodir yn ymddangos yn bun run --bun wrangler tail fel “The web tier did
not start on cloudflare”, ac yna pob gosodiad i’w newid.