دیزاینەکە لە docs/architecture/23-ops.md بەشی 6ە. Workers توڕی وێبێکی کەمکراوە کارپێدەکەن. یەکسانیی تایبەتمەندی لە Workers ئامانج نییە (PRD بەشی 12): ئەوەی ئەم ئامانجە ناتوانێت بیکات کاتی دەستپێکردن بە ناوی ڕەت دەکرێتەوە.
دۆخ لەم بڵاوکراوەدا
ڕێکخستنەکان ئامادەن (apps/web/wrangler.jsonc، پێشڕێکی Nitroی cloudflare-module، پەیوەندیدەری Hyperdrive و پشکنینەکانی دەستپێکردن). Worker پێویستی بە هەڵگرتنی سازگار لەگەڵ S3 بۆ R2 هەیە (QUIRE_STORAGE_DRIVER=s3)، ڕێگای کاتیی ڕاستەوخۆ لە نێوان داواکارییەکان (QUIRE_REALTIME_DRIVER=durable_objects یان centrifugo)، خەزێنەی هاوبەش (QUIRE_CACHE_DRIVER=postgres یان valkey) و دابینکەری ئیمەیڵی HTTP. بەبێ ئەمانە Worker دەستپێکردن ڕەت دەکاتەوە و تۆمارەکەی هەر ڕێکخستنێک ناو دەبات. دابینکەری Durable Objects کڕیارێکی Workerی ڕاستەوخۆ لە apps/realtime-workerە (یەک Durable Object بۆ هەر کەناڵێک بۆ دابەشکردن، بوونی بەکارهێنەر و مێژوو؛ یەکێک بۆ هەر کەس بۆ پچڕان)؛ وەک خوارەوە لە تەنیشتیدا بڵاوی بکەرەوە یان Centrifugo بەکاربهێنە.
پارچەکان
| پارچە | لەسەر Cloudflare |
|---|---|
web |
Worker لەگەڵ nodejs_compat |
| Postgres | دەرەکی و لە ڕێگەی Hyperdriveوە دەستپێی دەگات: HYPERDRIVE بۆ ڕۆڵی بەرنامە، REPORT_HYPERDRIVE بۆ ڕۆڵی ڕاپۆرت لەسەر هەمان بنکەدراوەی جەستەیی. توڕی وێب هەر ڕشتەی پەیوەندییەک بۆ DATABASE_URL و QUIRE_REPORT_DATABASE_URL کۆپی دەکاتەوە کاتی دەستپێکردن |
| فایلەکان | R2 لە ڕێگەی APIی S3وە (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com)؛ bindingی FILES حەوزەکە دەبەستێتەوە |
| کارەکانی پاشبنەما | pg-boss لەسەر Hyperdrive کاتێک پێویستە لەگەڵ نووسینێک کار زیاد بکرێت. لەگەڵ QUIRE_QUEUE_DRIVER=cloudflare لە workerی هاوڕێ، کارە سووکەکان (ئاگادارکردنەوە و گەیاندنی webhook بەبێ ڕیزبەندی) لە ڕێگەی Cloudflare Queues دەڕۆن بۆیە Postgres بۆیان ناپشکنرێت. workerی هاوڕێ هەردووکیان جێبەجێ دەکات |
| ڕاستەوخۆ | Workerی ڕاستەوخۆ، apps/realtime-worker، لەگەڵ Durable Objects |
worker، scheduler، collab، content، ClamAV، Gotenberg، ffmpeg |
میوانداریی حەوزەی هاوڕێ. Worker ناتوانێت ئەمانە جێبەجێ بکات |
| چاودێری | چاودێریی Workers، لە wrangler.jsonc چالاککراوە |
REPORT_HYPERDRIVE ڕۆڵی ڕاپۆرت بۆ هەمان بنکەدراوەی جەستەیی دابین دەکات کە HYPERDRIVE ناوی دەبات. ئەم ئامانجە tenantەکان خزمەت ناکات کە داتابەیسی جەستەیی زیادەیان تێدا جێگیرکراوە، وەک لە خوارەوە ڕوونکراوەتەوە.
ئەم ئامانجە ناتوانێت چی بکات
لە دەستپێکردندا ڕەت دەکرێتەوە و هەموو کێشەکان یەکجار لیست دەکرێن:
- SMTP نییە. دابینکەرێکی HTTP لە
QUIRE_EMAIL_PROVIDER_CONFIGبەکاربهێنە. - دیسکی ناوخۆیی نییە.
QUIRE_STORAGE_DRIVERدەبێت هەڵگرتنی شتی تۆمارکراو دیاری بکات. - ڕاستەوخۆ یان خەزینەی ناوپرۆسێس نییە. Workers لە نێوان داواکارییەکاندا بیرگە هاوبەش ناکەن، بۆیە
QUIRE_REALTIME_DRIVER=inprocessوQUIRE_CACHE_DRIVER=memoryڕەت دەکرێنەوە. - ClamAV، Gotenberg یان ffmpeg لە Workerدا نییە. دانانی
CLAMAV_URL،GOTENBERG_URLوFFMPEG_PATHلەسەر Worker ڕەت دەکرێتەوە؛ لە جیاتی ئەوە لە workerی هاوڕێ دایانبنێ. - دامەزراوەی بنکەدراوی تایبەت نییە. bindingەکانی Hyperdriveی Worker کاتی بڵاوکردنەوە جێگیرن، بۆیە دامەزراوەیەک کە بنکەدراوی تایبەتی هەیە پەڕەیەکی ڕوونی “لێرە بەردەست نییە” دەبینێت. لە Compose یان Vercel خزمەتی پێ بکە.
هەروەها یەک شت ڕەت ناکرێتەوە بەڵام پێویستە بزانرێت: پێشتر وێنەکردن و نوێکردنەوەی وردەوردەی دۆخی ساکن لەسەر Workers کار ناکەن، سەربەخۆ لەوەی بەڵگەنامەی چوارچێوەکە چی دەڵێت. هەر ڕێڕەوێک بەپێی داواکاری وێنە دەکرێت.
لەسەر ئەم ئامانجە transactionەکان کورت بهێڵەوە و هەرگیز لە ماوەی پەیوەندیی تۆڕدا بەردەوامیان مەکە: Hyperdrive دۆخی دانیشتن دوای گەڕاندنەوەی پەیوەندییەک بۆ pool ڕێکدەخاتەوە، بۆیە سیاقی tenant بۆ هەر transactionێک دادەنرێت.
بڵاوکردنەوە
- سەرچاوەکان دروست بکە:
دوو ناسێنەری Hyperdrive لە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ی ڕاستەوخۆ بڵاو بکەرەوە، بە
QUIRE_REALTIME_WORKER_SECRETی توڕی وێب و tokenی نهێنییەکەی وەکQUIRE_REALTIME_TOKEN_SECRET(توڕی وێب tokenی ڕاستەوخۆ بە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ێک دروست بکە و لە workerی هاوڕێ دایانبنێ (tokenی API کە خوێندنەوە و نووسینی 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” دەردەکەوێت و هەر ڕێکخستنێکی پێویست بە گۆڕین لیست دەکات.