रचना ही 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 सह
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
सत्र स्थिती रीसेट करते, त्यामुळे टेनंट संदर्भ प्रत्येक
ट्रान्झॅक्शनसाठी सेट केला जातो.
डिप्लॉय
संसाधने तयार करा:
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
दोन्ही Hyperdrive id apps/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 buildbun run --bun wrangler deploy
वेब थिअरच्या QUIRE_REALTIME_WORKER_SECRET आणि त्याचे टोकन
गोपनीय मूल्य QUIRE_REALTIME_TOKEN_SECRET म्हणून घेऊन रियलटाइम
Worker डिप्लॉय करा (वेब थिअर रियलटाइम टोकन स्वतःच्या
QUIRE_REALTIME_TOKEN_SECRET ने सही करतो, किंवा ते सेट नसेल
तर QUIRE_SECRET_KEY ने, त्यामुळे ते जे वापरते तेच वापरा),
आणि वेब थिअरवर त्याच्या पत्त्यासाठी QUIRE_REALTIME_WORKER_URL
सेट करा:
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
Cloudflare Queues वरील हलक्या जॉबसाठी, प्रत्येक हलक्या
क्यूसाठी एक क्यू तयार करा आणि सहाय्यक वर्करवर हे सेट करा
(Queues वाचन व लेखनाचे API टोकन):
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, आणि जर QUIRE_QUEUE_PREFIXquire-
नसेल तर ते द्या.
Vercel मार्गदर्शिका मधील पायरी 3 प्रमाणे सहाय्यक
होस्ट चालवा. मायग्रेशन तिथे, प्रत्येक Worker डिप्लॉयपूर्वी
चालतात.
नाकारलेले कॉन्फिगरेशन bun run --bun wrangler tail मध्ये “The web tier did
not start on cloudflare” म्हणून दिसते, त्यानंतर बदलायची प्रत्येक
सेटिंग.