थेट मजकुराकडे जा

Cloudflare Workers वरील वेब थिअर

Cloudflare Workers वर मर्यादित Quire वेब थिअर चालवा.

Markdown मध्ये पहा

रचना ही docs/architecture/23-ops.md विभाग 6 आहे. Workers मर्यादित वेब थिअर चालवतात. Workers वर वैशिष्ट्य समानता याच्या परिधीत बाहेर आहे (PRD विभाग 12): हे लक्ष्य काय करू शकत नाही ते सुरू होतानाच, नावासह, नाकारले जाते.

या आवृत्तीतील स्थिती

कॉन्फिगरेशन जागी आहे (apps/web/wrangler.jsonc, cloudflare-module Nitro प्रिसेट, Hyperdrive ब्रिज आणि सुरुवातीची तपासण्या). Worker ला R2 साठी S3-अनुकूल स्टोरेज (QUIRE_STORAGE_DRIVER=s3), विनंत्यांमध्ये अंतर्गत रियलटाइम ड्रायव्हर (QUIRE_REALTIME_DRIVER=durable_objects किंवा centrifugo), साझे कॅश (QUIRE_CACHE_DRIVER=postgres किंवा valkey) आणि HTTP ईमेल प्रदाता लागतो. त्यांच्याशिवाय Worker सुरू होण्यास नाकारतो आणि त्याच्या लॉगमध्ये प्रत्येक सेटिंग नावासह येते. Durable Objects ड्रायव्हर हा apps/realtime-worker मधील रियलटाइम Worker चा क्लायंट आहे (फॅन-आउट, उपस्थिती आणि इतिहासासाठी प्रत्येक चॅनेलसाठी एक Durable Object, डिस्कनेक्टसाठी प्रत्येक व्यक्तीसाठी एक); खाली दिल्याप्रमाणे ते बाजूलाच डिप्लॉय करा, किंवा Centrifugo वापरा.

घटक

घटक Cloudflare वर
web nodejs_compat असलेला Worker
Postgres बाह्य, Hyperdrive द्वारे पोहोचलेला: अनुप्रयोग भूमिकेसाठी HYPERDRIVE, त्याच भौतिक डेटाबेसवर अहवाल भूमिकेसाठी REPORT_HYPERDRIVE. वेब थिअर सुरू होताना प्रत्येक कनेक्शन स्ट्रिंग DATABASE_URL आणि QUIRE_REPORT_DATABASE_URL मध्ये कॉपी करतो
फाइली तिच्या S3 API द्वारे R2 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES बाइंडिंग बकेट जोडते
बॅकग्राउंड जॉब जॉब लेखनासह क्यूमध्ये घातले जाणे आवश्यक असल्यास Hyperdrive वर pg-boss. सहाय्यक वर्करवर QUIRE_QUEUE_DRIVER=cloudflare असल्यास हलकी जॉब (क्रमहीन सूचना आणि webhook डिलिव्हरी) ऐवजी Cloudflare Queues द्वारे जातात, त्यामुळे Postgres पोल केला जात नाही. सहाय्यक वर्कर दोन्ही चालवतो
रियलटाइम apps/realtime-worker असलेला रियलटाइम Worker, Durable Objects सह
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg सहाय्यक कंटेनर होस्ट. Worker ते चालवू शकत नाही
ट्रेसिंग wrangler.jsonc मध्ये सक्रिय केलेली Workers observability

REPORT_HYPERDRIVE हे HYPERDRIVE ने नेमलेल्या भौतिक डेटाबेससाठी अहवाल भूमिका पुरवते. अतिरिक्त भौतिक डेटाबेसशी बांधलेले टेनंट हे लक्ष्य सेवा देत नाही, जसे खाली वर्णन केले आहे.

हे लक्ष्य काय करू शकत नाही

सुरुवातीलाच नाकारले जाते, प्रत्येक समस्या एकाच वेळी दाखवून:

  • SMTP नाही. QUIRE_EMAIL_PROVIDER_CONFIG मध्ये HTTP प्रदाता वापरा.
  • स्थानिक डिस्क नाही. QUIRE_STORAGE_DRIVER ने ऑब्जेक्ट स्टोरेजचे नाव असायला हवे.
  • इन-प्रोसेस रियलटाइम किंवा कॅश नाही. 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 वर काम करत नाही, फ्रेमवर्क दस्तावेजात काहीही लिहिलेले असले तरी. प्रत्येक रूट प्रत्येक विनंतीसाठी रेंडर होते.

या लक्ष्यावर ट्रान्झॅक्शने छोटी ठेवा आणि कोणतेही ट्रान्झॅक्शन नेटवर्क कॉलभर धरून ठेवू नका: कनेक्शन पूलाकडे परतल्यावर Hyperdrive सत्र स्थिती रीसेट करते, त्यामुळे टेनंट संदर्भ प्रत्येक ट्रान्झॅक्शनसाठी सेट केला जातो.

डिप्लॉय

  1. संसाधने तयार करा:
    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
    दोन्ही Hyperdrive id apps/web/wrangler.jsonc मध्ये टाका.
  2. एकेकावेळी 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 मध्ये जातात.
  3. apps/web मधून बिल्ड आणि डिप्लॉय करा:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. वेब थिअरच्या QUIRE_REALTIME_WORKER_SECRET आणि त्याचे टोकन गोपनीय मूल्य QUIRE_REALTIME_TOKEN_SECRET म्हणून घेऊन रियलटाइम Worker डिप्लॉय करा (वेब थिअर रियलटाइम टोकन स्वतःच्या 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
  5. 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-dead
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, आणि जर QUIRE_QUEUE_PREFIX quire- नसेल तर ते द्या.
  6. Vercel मार्गदर्शिका मधील पायरी 3 प्रमाणे सहाय्यक होस्ट चालवा. मायग्रेशन तिथे, प्रत्येक Worker डिप्लॉयपूर्वी चालतात.

नाकारलेले कॉन्फिगरेशन bun run --bun wrangler tail मध्ये “The web tier did not start on cloudflare” म्हणून दिसते, त्यानंतर बदलायची प्रत्येक सेटिंग.

नेव्हिगेशन

शोधण्यासाठी लिहा…

↑↓ नेव्हिगेट करा↵ निवडाEsc बंद करा