രൂപകൽപ്പന 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-ലേക്കും പകർത്തും
ഫയലുകൾ
R2, അതിന്റെ S3 API വഴി (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES ബൈന്റിംഗ് ബക്കറ്റ് ചേർക്കുന്നു
പശ്ചാത്തല ജോലികൾ
എഴുത്തോടെ ക്യൂവിലാക്കേണ്ട ജോലിയാണെങ്കിൽ Hyperdrive-ലൂടെ pg-boss. കമ്പാനിയൻ വർക്കറിൽ QUIRE_QUEUE_DRIVER=cloudflare ഉണ്ടെങ്കിൽ, ലഘു ജോലികൾ (ക്രമരഹിത അറിയിപ്പും വെബ്ഹുക്ക് ഡെലിവറികളും) പകരം Cloudflare Queues വഴി പോകും, അതിനാൽ Postgres അവയ്ക്കായി പോള് ചെയ്യപ്പെടില്ല. കമ്പാനിയൻ വർക്കർ രണ്ടും പ്രവർത്തിപ്പിക്കും
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_PREFIX, അത് quire- അല്ലെങ്കിൽ.
Vercel ഗൈഡ്-ലെ 3-ാം ഘട്ടത്തിലെപ്പോലെ കമ്പാനിയൻ ഹോസ്റ്റ് പ്രവർത്തിപ്പിക്കൂ. ഓരോ Worker ഡിപ്ലോയ്മെന്റിനും മുമ്പ് മൈഗ്രേഷനുകൾ അവിടെ പ്രവർത്തിക്കും.
നിരസിക്കപ്പെട്ട ക്രമീകരണം bun run --bun wrangler tail-ൽ “The web tier did not start on cloudflare” എന്നായി കാണപ്പെടും, തുടർന്ന് മാറ്റേണ്ട ഓരോ ക്രമീകരണവും.