ವಿನ್ಯಾಸವು docs/architecture/23-ops.md ವಿಭಾಗ 6. Workers ಕಡಿಮೆಗೊಳಿಸಲಾದ ವೆಬ್
ಹಂತವನ್ನು ನಡೆಸುತ್ತವೆ. Workers ನಲ್ಲಿ ವೈಶಿಷ್ಟ್ಯ ಸಮಾನತೆಯು ವ್ಯಾಪ್ತಿಯ ಹೊರಗಿದೆ (PRD ವಿಭಾಗ 12):
ಈ ಗುರಿಯು ಮಾಡಲಾಗದವು ಅದು ಆರಂಭವಾದಾಗ, ಹೆಸರಿನ ಮೂಲಕ, ನಿರಾಕರಿಸಲ್ಪಡುತ್ತದೆ.
ಈ ಆವೃತ್ತಿಯಲ್ಲಿನ ಸ್ಥಿತಿ
ಸಂರಚನೆ ಸ್ಥಳದಲ್ಲಿದೆ (apps/web/wrangler.jsonc, cloudflare-module Nitro preset,
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 ಅವುಗಳನ್ನು ನಡೆಸಲಾಗದು
ಟ್ರೇಸಿಂಗ್
Workers ವೀಕ್ಷಣೀಯತೆ, wrangler.jsonc ನಲ್ಲಿ ಸಕ್ರಿಯ
REPORT_HYPERDRIVEHYPERDRIVE ಹೆಸರಿಸಿದ ಭೌತಿಕ ಡೇಟಾಬೇಸ್ಗಾಗಿ ವರದಿ ಪಾತ್ರವನ್ನು
ಒದಗಿಸುತ್ತದೆ. ಈ ಗುರಿಯು ಕೆಳಗೆ ವಿವರಿಸಿದಂತೆ, ಹೆಚ್ಚುವರಿ ಭೌತಿಕ ಡೇಟಾಬೇಸ್ಗಳಿಗೆ ಬಂಧಿಸಲ್ಪಟ್ಟ
ಟೆನಂಟ್ಗಳಿಗೆ ಸೇವೆ ನೀಡುವುದಿಲ್ಲ.
ಈ ಗುರಿಯು ಮಾಡಲಾಗದವು
ಆರಂಭದಲ್ಲಿ ನಿರಾಕರಿಸಲ್ಪಡುತ್ತದೆ, ಪ್ರತಿ ಸಮಸ್ಯೆಯನ್ನೂ ಒಮ್ಮೆಗೆ ಪಟ್ಟಿ ಮಾಡಿ:
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” ಆಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ, ಬದಲಾಯಿಸಬೇಕಾದ ಪ್ರತಿ ಸೆಟ್ಟಿಂಗ್ನೊಂದಿಗೆ.