Мазмұнға өту

Cloudflare Workers-тегі веб-деңгей

Quire веб-деңгейінің жеңілдетілген нұсқасын Cloudflare Workers-те жүргізіңіз.

Markdown ретінде қарау

Жоба 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 екеуін де жүргізеді
Realtime apps/realtime-worker realtime Worker-і, Durable Objects-пен
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Жанама контейнер хосты. Worker оларды жүргізе алмайды
Ізқуару Workers observability, wrangler.jsonc ішінде қосылған

REPORT_HYPERDRIVE HYPERDRIVE атап тұрған физикалық дерекқор үшін есеп рөлін қамтамасыз етеді. Бұл мақсат төменде сипатталғандай, қосымша физикалық дерекқорларға бекітілген 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 контексті әр транзакция үшін орнатылады.

Орналастыру

  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. 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-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-тегі жеңіл жұмыстар үшін жеңіл кезекке бір-бір кезек жасап, мына параметрлерді жанама worker-ге орнатыңыз (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 жабу