ດີຊາຍນແມ່ນ docs/architecture/23-ops.md ບົດທີ 6. Workers ແລ່ນຊັ້ນ
ເວັບທີ່ຫຼຸດລົງ. ຄວາມເທົ່າທຽມຂອງລັກສະນະຢູ່ Workers ຢູ່ນອກ
ເຂດແດນ (PRD ບົດທີ 12): ສິ່ງທີ່ເປົ້າໝາຍນີ້ບໍ່ສາມາດເຮັດໄດ້
ຈະຖືກປະຕິເສດເມື່ອມັນເລີ່ມ, ດ້ວຍຊື່.
ສະຖານະໃນສະບັບນີ້
ການຕັ້ງຄ່າຢູ່ໃນລະບົບແລ້ວ (apps/web/wrangler.jsonc, preset
cloudflare-module ຂອງ Nitro, ຂົ້ນ Hyperdrive ແລະການກວດສອບ
ການເລີ່ມ). Worker ຕ້ອງການການເກັບທີ່ເຂົ້າກັບ S3 ສຳລັບ R2
(QUIRE_STORAGE_DRIVER=s3), ແຂກຮັບຊົງ realtime ຂ້າມຄຳຮ້ອງຂໍ
(QUIRE_REALTIME_DRIVER=durable_objects ຫຼື centrifugo), cache
ທີ່ແບ່ງປັນ (QUIRE_CACHE_DRIVER=postgres ຫຼື valkey) ແລະ
ຜູ້ໃຫ້ບໍລິການອີເມວ HTTP. ໂດຍບໍ່ມີພວກມັນ Worker ປະຕິເສດການ
ເລີ່ມ ແລະບັນທຶກຂອງມັນລະບຸການຕັ້ງຄ່າແຕ່ລະອັນ. ແຂກຮັບຊົງ
Durable Objects ແມ່ນ client ຂອງ Worker realtime ໃນ
apps/realtime-worker (Durable Object ໜຶ່ງຕໍ່ channel ສຳລັບການ
ແຈກຢາຍ, ການມີຕົວຢູ່ ແລະປະຫວັດ, ໜຶ່ງຕໍ່ຄົນສຳລັບການຕັດ
ການເຊື່ອມຕໍ່); ສົ່ງມັນຄຽງຄູ່, ດັງທີ່ຂ້າງລຸ່ມ, ຫຼື ໃຊ້ Centrifugo.
ອັນລວມຕ່າງໆ
| ອັນລວມ | ຢູ່ Cloudflare |
|---|---|
web |
Worker ກັບ nodejs_compat |
| Postgres | ພາຍນອກ, ເຂົ້າເຖິງຜ່ານ Hyperdrive: HYPERDRIVE ສຳລັບບົດບາດແອັບພັກ, REPORT_HYPERDRIVE ສຳລັບບົດບາດລາຍງານຢູ່ຖານຂໍ້ມູນທາງກາຍະພາບດຽວກັນ. ຊັ້ນເວັບຄັດລອກ connection string ແຕ່ລະອັນເຂົ້າ DATABASE_URL ແລະ QUIRE_REPORT_DATABASE_URL ເມື່ອມັນເລີ່ມ |
| ໄຟລ໌ | R2, ຜ່ານ S3 API ຂອງມັນ (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); binding FILES ຕິດ bucket |
| ງານພື້ນຫຼັງ | pg-boss ເທິງ Hyperdrive ເມື່ອງານຕ້ອງຖືກບັນທຶກເຂົ້າ queue ພ້ອມການຂຽນ. ດ້ວຍ QUIRE_QUEUE_DRIVER=cloudflare ໃນ worker ເພື່ອການ ງານເບົາໆ (ການແຈ້ງເຕືອນ ແລະການສົ່ງ webhook ທີ່ບໍ່ມີລຳດັບ) ໄປຜ່ານ Cloudflare Queues ແທນ ດັ່ງນັ້ນ Postgres ບໍ່ຖືກເອີ້ນສຳລັບພວກມັນ. Worker ເພື່ອການແລ່ນທັງສອງ |
| Realtime | Worker realtime, apps/realtime-worker, ກັບ Durable Objects |
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg |
ເຊີບເວີ container ເພື່ອການ. Worker ແລ່ນພວກມັນບໍ່ໄດ້ |
| ການຕິດຕາມ | ການສັງເກດເບິ່ງຂອງ Workers, ເປີດໃນ wrangler.jsonc |
REPORT_HYPERDRIVE ສະໜອງບົດບາດລາຍງານສຳລັບຖານຂໍ້ມູນທາງ
ກາຍະພາບທີ່ HYPERDRIVE ລະບຸ. ເປົ້າໝາຍນີ້ບໍ່ບໍລິການ tenants
ທີ່ຖືກຜູກກັບຖານຂໍ້ມູນທາງກາຍະພາບເພີ່ມເຕີມ, ດັງທີ່ອະທິບາຍ
ຂ້າງລຸ່ມ.
ສິ່ງທີ່ເປົ້າໝາຍນີ້ບໍ່ສາມາດເຮັດໄດ້
ຖືກປະຕິເສດໃນຂະນະເລີ່ມ, ພ້ອມບັນຫາທຸກໆອັນລາຍຊື່ພ້ອມກັນ:
- ບໍ່ມີ SMTP. ໃຊ້ຜູ້ໃຫ້ບໍລິການ HTTP ໃນ
QUIRE_EMAIL_PROVIDER_CONFIG. - ບໍ່ມີດິດທ້ອງຖິ່ນ.
QUIRE_STORAGE_DRIVERຕ້ອງຊື່ການເກັບ object. - ບໍ່ມີ realtime ຫຼື cache ໃນຂະບວນການ. Workers ບໍ່ແບ່ງຄວາມ
ຈື່ຈຳລະຫວ່າງຄຳຮ້ອງຂໍ ດັ່ງນັ້ນ
QUIRE_REALTIME_DRIVER=inprocessແລະQUIRE_CACHE_DRIVER=memoryຖືກປະຕິເສດ. - ບໍ່ມີ ClamAV, Gotenberg ຫຼື ffmpeg ໃນ Worker.
CLAMAV_URL,GOTENBERG_URLແລະFFMPEG_PATHທີ່ຕັ້ງໃນ Worker ຖືກປະຕິເສດ; ຕັ້ງພວກມັນໃນ worker ເພື່ອການແທນ. - ບໍ່ມີອົງການທີ່ມີຖານຂໍ້ມູນສະເພາະ. Binding Hyperdrive ຂອງ Worker ຖືກກຳນົດໄວ້ໃນເວລາສົ່ງ ດັ່ງນັ້ນອົງການທີ່ມີຖານຂໍ້ມູນ ຂອງຕົນເອງຈະໄດ້ໜ້າ “unavailable here” ທີ່ຊັດເຈນ. ບໍລິການມັນ ຈາກ Compose ຫຼື Vercel.
ແລະ ສິ່ງໜຶ່ງທີ່ບໍ່ຖືກປະຕິເສດແຕ່ຕ້ອງຮູ້: ການສ້າງໜ້າລ່ວງໜ້າ ແລະການປັບແປງ static ເພີ່ມທະວີບໍ່ເຮັດວຽກຢູ່ Workers ເຖິງແມ່ນ ເອກະສານຂອງ framework ບອກແນວໃດ. ເສັ້ນທາງທຸກໆອັນ render ຕາມ ຄຳຮ້ອງຂໍ.
ໃນເປົ້າໝາຍນີ້ຮັກສາ transactions ສັ້ນໆ ແລະບໍ່ເຄີຍຖືກອັນໜຶ່ງ ຂ້າມການເອີ້ນເຄືອຂ່າຍ: Hyperdrive ຕັ້ງຄ່າສະຖານະເຊັນຊັນຄືນ ເມື່ອການເຊື່ອມຕໍ່ກັບມາຫາ pool ດັ່ງນັ້ນ context ຂອງ tenantຖືກ ຕັ້ງຕາມແຕ່ລະ transaction.
ການນຳສົ່ງ
- ສ້າງຊັບພະຍາກອນ:
ວາງ Hyperdrive ids ທັງສອງເຂົ້າ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-jobsapps/web/wrangler.jsonc. - ຕັ້ງຄວາມລັບ, ທີ່ລະຄັ້ງດ້ວຍ
bun run --bun wrangler secret put <NAME>ຈາກ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. ການຕັ້ງຄ່າທີ່ເລຍ (QUIRE_APP_ORIGIN,QUIRE_CONTENT_ORIGIN,QUIRE_PLATFORM_DOMAINS,QUIRE_DATABASE_ID,S3_ENDPOINT,S3_BUCKET,QUIRE_COLLAB_URL) ໄປໃສ່vars. - ສ້າງ ແລະສົ່ງຈາກ
apps/web:NITRO_PRESET=cloudflare-module bun run build bun run --bun wrangler deploy - ສົ່ງ Worker realtime, ພ້ອມ
QUIRE_REALTIME_WORKER_SECRETຂອງຊັ້ນ ເວັບ ແລະຄວາມລັບຂອງ token ຂອງມັນເປັນQUIRE_REALTIME_TOKEN_SECRET(ຊັ້ນເວັບລາຍລານື້ realtime tokens ດ້ວຍQUIRE_REALTIME_TOKEN_SECRETຂອງຕົນເອງ, ຫຼືດ້ວຍQUIRE_SECRET_KEYເມື່ອມັນບໍ່ໄດ້ຕັ້ງ ດັ່ງນັ້ນໃຊ້ອັນໃດກໍ່ທີ່ ມັນໃຊ້) ແລະຕັ້ງQUIRE_REALTIME_WORKER_URLໃນຊັ້ນເວັບເປັນ ທີ່ຢູ່ຂອງມັນ: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 - ສຳລັບງານເບົາໆໃນ Cloudflare Queues ສ້າງ queue ໜຶ່ງຕໍ່ light queue
ແລະຕັ້ງສິ່ງເຫຼົ່ານີ້ໃນ worker ເພື່ອການ (API token ກັບສິດ
ອ່ານ ແລະຂຽນ 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-deadQUIRE_QUEUE_DRIVER=cloudflare,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_QUEUES_TOKEN, ແລະQUIRE_QUEUE_PREFIXຖ້າບໍ່ແມ່ນquire-. - ແລ່ນເຊີບເວີເພື່ອການດັງທີ່ຄູ່ມານຳ Vercel, ຂັ້ນຕອນ 3. ການຍ້າຍຂໍ້ມູນແລ່ນຢູ່ທີ່ນັ້ນ, ກ່ອນການສົ່ງ Worker ແຕ່ລະຄັ້ງ.
ການຕັ້ງຄ່າທີ່ຖືກປະຕິເສດສະແດງຢູ່ bun run --bun wrangler tail ເປັນ
“The web tier did not start on cloudflare”, ຕິດຕາມດ້ວຍການຕັ້ງຄ່າ
ແຕ່ລະອັນທີ່ຈະປ່ຽນ.