Жоба docs/architecture/23-ops.md құжатының 6-тармағында. Worker-лер
жеңілдетілген веб-деңгейді жүргізеді. Worker-лерде толық функционал
теңдігі қарастырылмаған (PRD 12-тармақ): бұл мақсат не істей алмайтыны
іске қосылғанда атауымен көрсетіліп, қабылданбайды.
Осы шығарылымдағы күйі
Баптау орнында тұрады (apps/web/wrangler.jsonc, cloudflare-module
Nitro пресеті, Hyperdrive көпірі және іске қосу тексерістері). Worker-ге
R2 үшін S3-үйлесімді қойма (QUIRE_STORAGE_DRIVER=s3), сұраныстар
бойынша жұмыс істейтін realtime драйвері
(QUIRE_REALTIME_DRIVER=durable_objects немесе centrifugo), ортақ
кэш (QUIRE_CACHE_DRIVER=postgres немесе valkey) және HTTP пошта
провайдері қажет. Олар болмаса, Worker іске қосылудан бас тартады және
оның журналы әр параметрді атайды. Durable Objects драйвері
apps/realtime-worker файлындағы realtime Worker-дің клиенті болып
табылады (fan-out, қатысу және тарих үшін арнаға бір 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. Жанама worker-де QUIRE_QUEUE_DRIVER=cloudflare орнатылса, жеңіл жұмыстар (реттелмеген хабарламалар мен webhook жеткізілімдері) орнына Cloudflare Queues арқылы өтеді, сондықтан Postgres солар үшін сұраныс жасамайды. Жанама worker екеуін де жүргізеді
Жанама контейнер хосты. Worker оларды жүргізе алмайды
Ізқуару
Workers observability, wrangler.jsonc ішінде қосылған
REPORT_HYPERDRIVEHYPERDRIVE атап тұрған физикалық дерекқор үшін
есеп рөлін қамтамасыз етеді. Бұл мақсат төменде сипатталғандай,
қосымша физикалық дерекқорларға бекітілген tenant-терге қызмет
етпейді.
Бұл мақсат не істей алмайды
Іске қосылғанда бас тартады, барлық мәселе бірден тізіледі:
SMTP жоқ.QUIRE_EMAIL_PROVIDER_CONFIG ішінде HTTP провайдер
пайдаланыңыз.
Жергілікті диск жоқ.QUIRE_STORAGE_DRIVER объектілік қойманы
атауы керек.
Процесс ішіндегі realtime немесе кэш жоқ. Worker-лер сұраныстар
арасында жад бөліспейді, сондықтан QUIRE_REALTIME_DRIVER=inprocess
және QUIRE_CACHE_DRIVER=memory қабылданбайды.
Worker-де ClamAV, Gotenberg немесе ffmpeg жоқ. Worker-ге
орнатылған
CLAMAV_URL, GOTENBERG_URL және FFMPEG_PATH қабылданбайды;
олардың орнына жанама worker-ге орнатыңыз.
Жеке дерекқоры бар ұйымдар жоқ. Worker-дің Hyperdrive
байланыстырулары орналастыру сәтінде бекітіледі, сондықтан өз
дерекқоры бар ұйым анық «мұнда қолжетімсіз» бетін алады. Оны Compose
немесе Vercel-ден қызмет етіңіз.
Ал бас тартпайтын, бірақ білу керек бір нәрсе бар: алдын ала құрастыру
және үздіксіз статикалық қайта жаңарту Worker-лерде жұмыс істемейді,
қай framework құжаты айтпасын. әр маршрут сұраныс үшін бөлек
құрастырылады.
Бұл мақсатта транзакцияларды қысқа ұстаңыз және оларды ешқашан
желілік шақырудың үстінде ұстамаңыз: байланыс pool-ге қайтқанда
Hyperdrive сессия күйін қалпына келтіреді, сондықтан tenant контексті
әр транзакция үшін орнатылады.
Орналастыру
Ресурстарды жасаңыз:
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
Realtime Worker-ді веб-деңгейдің QUIRE_REALTIME_WORKER_SECRET
параметрімен және оның токен құпиясын QUIRE_REALTIME_TOKEN_SECRET
ретінде (веб-деңгей realtime токендеріне өзінің
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-тегі жеңіл жұмыстар үшін жеңіл кезекке бір-бір
кезек жасап, мына параметрлерді жанама worker-ге орнатыңыз (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” түрінде көрінеді, одан кейін өзгерту керек әр
параметр тізіледі.