ဒီဇိုင်းက docs/architecture/23-ops.md အပိုင်း ၆ ဖြစ်သည်။ Workers က
လျှော့ချထားသောဝဘ်အဆင့် လည်ပတ်သည်။ Workers ရှိ လုပ်ဆောင်ချက်တူညီမှုက နယ်ပယ်အပြင်
(PRD အပိုင်း ၁၂)– ဤပစ်မှတ် မလုပ်နိုင်သည့်အရာကို စတင်သည့်အခါ အမည်ပေး၍ ငြင်းပယ်သည်။
ဤထုတ်ဝေမှုရှိ အခြေအနေ
စီစဉ်မှုက နေရာတကျ ရှိသည် (apps/web/wrangler.jsonc၊ cloudflare-module Nitro
ကြိုတင်သတ်မှတ်မှု၊ Hyperdrive တံတားနှင့် စတင်စစ်ဆေးမှုများ)။ Worker တစ်ခုက R2
အတွက် S3 နှင့်ကိုက်ညီသောသိုလှောင်မှု (QUIRE_STORAGE_DRIVER=s3)၊ တောင်းဆိုမှုများ
ဖြတ်ကျော် realtime မောင်းနှင်သူ (QUIRE_REALTIME_DRIVER=durable_objects သို့မဟုတ်
centrifugo)၊ မျှဝေသောသိမ်းဆည်းမှု (QUIRE_CACHE_DRIVER=postgres သို့မဟုတ်
valkey) နှင့် HTTP အီးမေးလ်ဝန်ဆောင်မှုပေးသူ လိုအပ်သည်။ ၎င်းတို့မရှိပါက Worker က
စတင်ရန် ငြင်းပယ်ပြီး ၎င်း၏မှတ်တမ်း ဆက်တင်တစ်ခုစီ အမည်ပေးသည်။ Durable Objects
မောင်းနှင်သူက apps/realtime-worker ရှိ realtime Worker ၏ client ဖြစ်သည်
(ဖြန့်ဝေမှု၊ တည်ရှိမှုနှင့် မှတ်တမ်းအတွက် channel တစ်ခုလျှင် Durable Object တစ်ခု၊
ချိတ်ဆက်ပြတ်မှုအတွက် လူတစ်ဦးလျှင် တစ်ခု)။ အောက်၌ပါသည့်အတိုင်း ၎င်းဘေးတွင်
ဖြန့်ကျက်ပါ၊ သို့မဟုတ် Centrifugo အသုံးပြုပါ။
အစိတ်အပိုင်းများ
| အစိတ်အပိုင်း | Cloudflare တွင် |
|---|---|
web |
nodejs_compat ပါသော Worker တစ်ခု |
| Postgres | Hyperdrive မှတစ်ဆင့် ရောက်သော ပြင်ပ– အက်ပလီကေးရှင်းအခန်းကဏ္ဍအတွက် HYPERDRIVE၊ တူညီသောရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်တွင် အစီရင်ခံအခန်းကဏ္ဍအတွက် REPORT_HYPERDRIVE။ ဝဘ်အဆင့်က စတင်သည့်အခါ ချိတ်ဆက်မှုစာကြောင်းတစ်ခုစီကို DATABASE_URL နှင့် QUIRE_REPORT_DATABASE_URL အဖြစ် ကူးသည် |
| Files | ၎င်း၏ S3 API မှတစ်ဆင့် R2 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com)။ FILES ချိတ်ဆက်မှုက ပုံးကို တွဲသည် |
| Background jobs | စာရေးမှုဖြင့် တန်းစီရမည့်အလုပ်အတွက် Hyperdrive ပေါ်မှ pg-boss။ အဖော်အလုပ်သမားတွင် QUIRE_QUEUE_DRIVER=cloudflare ဖြင့် ပေါ့ပါးသောအလုပ်များ (အစီအစဉ်မချထားသော အသိပေးချက်နှင့် webhook ပို့ဆောင်မှုများ) က Postgres ကို စစ်ဆေးမနေစေရန် အစား Cloudflare Queues မှတစ်ဆင့် သွားသည်။ အဖော်အလုပ်သမားက နှစ်ခုစလုံး လည်ပတ်သည် |
| Realtime | Durable Objects ပါသော realtime Worker၊ apps/realtime-worker |
worker၊ scheduler၊ collab၊ content၊ ClamAV၊ Gotenberg၊ ffmpeg |
အဖော်ကွန်တိန်နာအိမ်ရှင်။ Worker တစ်ခုက ၎င်းတို့ကို လည်ပတ်၍မရပါ |
| Tracing | wrangler.jsonc တွင် ဖွင့်ထားသော Workers စောင့်ကြည့်မှု |
REPORT_HYPERDRIVE က HYPERDRIVE အမည်ပေးသောရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်အတွက်
အစီရင်ခံအခန်းကဏ္ဍ ပေးသည်။ ဤပစ်မှတ်က အောက်၌ဖော်ပြထားသည့်အတိုင်း
ထပ်တိုးရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်များတွင် ချိတ်ထားသော tenant များကို ဝန်ဆောင်မှု မပေးပါ။
ဤပစ်မှတ် မလုပ်နိုင်သည့်အရာ
စတင်စဉ် ငြင်းပယ်သည်၊ ပြဿနာတိုင်း တစ်ပြိုင်နက် စာရင်းပြုစုလျက်–
- SMTP မရှိပါ။
QUIRE_EMAIL_PROVIDER_CONFIGတွင် HTTP ဝန်ဆောင်မှုပေးသူ အသုံးပြုပါ။ - ဒေသခံဒစ်ခ် မရှိပါ။
QUIRE_STORAGE_DRIVERက object သိုလှောင်မှု အမည်ပေးရမည်။ - လုပ်ငန်းစဉ်တွင်း realtime သို့မဟုတ် သိမ်းဆည်းမှု မရှိပါ။ Workers က
တောင်းဆိုမှုများအကြား မှတ်ဉာဏ် မမျှဝေပါ၊ ထို့ကြောင့်
QUIRE_REALTIME_DRIVER=inprocessနှင့်QUIRE_CACHE_DRIVER=memoryကို ငြင်းပယ်သည်။ - Worker တွင် ClamAV၊ Gotenberg သို့မဟုတ် ffmpeg မရှိပါ။ Worker တွင်
သတ်မှတ်ထားသော
CLAMAV_URL၊GOTENBERG_URLနှင့်FFMPEG_PATHကို ငြင်းပယ်သည်။ အစား အဖော်အလုပ်သမားတွင် သတ်မှတ်ပါ။ - သီးသန့်ဒေတာဘေ့စ်အဖွဲ့အစည်းများ မရှိပါ။ Worker ၏ Hyperdrive ချိတ်ဆက်မှုများ ဖြန့်ကျက်ချိန်တွင် ပုံသေဖြစ်သောကြောင့်၊ ကိုယ်ပိုင်ဒေတာဘေ့စ်ပါသောအဖွဲ့အစည်းက ရှင်းလင်းသော “ဤနေရာတွင် မရနိုင်ပါ” စာမျက်နှာ ရသည်။ Compose သို့မဟုတ် Vercel မှ ၎င်းကို ဝန်ဆောင်မှုပေးပါ။
ငြင်းပယ်မထားသော်လည်း သိရမည့်အရာတစ်ခု– ကြိုတင်ဖော်ပြခြင်းနှင့် ထပ်တိုးတည်ငြိမ် ပြန်လည်ထုတ်လုပ်ခြင်း Workers တွင် အလုပ်မလုပ်ပါ၊ framework စာရွက်စာတမ်း ဘာပြောသည်ဖြစ်စေ။ လမ်းကြောင်းတိုင်း တောင်းဆိုမှုတစ်ခုစီအလိုက် ဖော်ပြသည်။
ဤပစ်မှတ်တွင် ငွေလွှဲများ တိုအောင် ထားပြီး ကွန်ရက်ခေါ်ဆိုမှုတစ်ခုဖြတ် တစ်ခုကို ဘယ်တော့မှ မကိုင်ထားပါနှင့်– ချိတ်ဆက်မှုတစ်ခု ပေါင်းကူးသို့ ပြန်ရောက်သည့်အခါ Hyperdrive က session အခြေအနေ ပြန်လည်သတ်မှတ်သောကြောင့်၊ tenant အခြေအနေ ငွေလွှဲတစ်ခုစီအလိုက် သတ်မှတ်သည်။
ဖြန့်ကျက်ခြင်း
- အရင်းအမြစ်များ ဖန်တီးပါ–
Hyperdrive id နှစ်ခုကို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- realtime Worker ကို ဖြန့်ကျက်ပါ၊ ဝဘ်အဆင့်၏
QUIRE_REALTIME_WORKER_SECRETနှင့် ၎င်း၏တိုကင်လျှို့ဝှက်ချက်ကိုQUIRE_REALTIME_TOKEN_SECRETအဖြစ် (ဝဘ်အဆင့်က realtime တိုကင်များကို ၎င်း၏ကိုယ်ပိုင်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 ရှိ ပေါ့ပါးသောအလုပ်များအတွက် အပေါ့စားတန်းစီတစ်ခုလျှင်
တန်းစီတစ်ခုဖန်တီးပြီး အဖော်အလုပ်သမားတွင် ယင်းတို့ကို သတ်မှတ်ပါ (Queues ဖတ်
ရေးခွင့်ပါသော API တိုကင်)–
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 လမ်းညွှန် အတိုင်း၊ အဆင့် ၃၊ အဖော်အိမ်ရှင် လည်ပတ်ပါ။ ရွှေ့ပြောင်းမှုများ ထိုနေရာတွင် လည်ပတ်သည်၊ Worker ဖြန့်ကျက်မှုတစ်ခုစီမပြုမီ။
ငြင်းပယ်သောစီစဉ်မှုက bun run --bun wrangler tail တွင် “The web tier did not start on cloudflare” အဖြစ် ပြပြီး၊ နောက်၌ ပြောင်းရမည့်ဆက်တင်တစ်ခုစီ ပါရှိသည်။