Dify 采用微服务架构,后端 Python Flask + Celery,前端 Svelte,依赖 PostgreSQL、Redis 和向量数据库。生产部署需要合理配置各组件的高可用和扩展策略。本文从 Docker Compose 单机到 Kubernetes 集群,覆盖完整的生产部署流程。
Dify 各组件关系:Web 服务(Flask + Gunicorn)处理 API 请求 → Celery Worker 处理 LLM 调用等异步任务 → PostgreSQL 存储结构化数据 → Redis 消息队列和缓存 → 向量数据库(Qdrant/Weaviate)。各组件独立部署,通过环境变量配置连接。
官方提供 docker/docker-compose.yaml,包含 api、worker、web、db、redis、vector-store 六个服务。生产环境需调整:加大 api 容器数(replicas: 3)、配置持久化存储(volumes 映射到宿主机)、开启日志轮转(logging 配置)。
K8s 部署建议:命名空间隔离(namespace: dify)、HPA 弹性伸缩(api 和 worker 基于 CPU 和内存)、Ingress + TLS(使用 cert-manager 自动签发 SSL)、PV/PVC 持久化(PostgreSQL 和向量数据库使用云盘)。
关键环境变量:SECRET_KEY(JWT 加密)、DB_PASSWORD(PostgreSQL)、REDIS_PASSWORD、STORAGE_TYPE(s3/local)、LOG_LEVEL(WARN)。性能优化:Gunicorn worker 数 = 2×CPU 核数,Celery concurrency = CPU 核数,PostgreSQL max_connections = 100。
PostgreSQL 优化:开启 pg_trgm 扩展加速模糊搜索,配置 work_mem=64MB、shared_buffers=4GB、定期 VACUUM 和 ANALYZE。Redis 配置:maxmemory=4GB、maxmemory-policy=allkeys-lru、appendonly=yes。
推荐监控栈:Prometheus + Grafana 采集 API 延迟(p50/p95/p99)、Worker 队列深度、数据库连接数。ELK/Loki 集中日志。Alertmanager 告警规则:API 错误率 > 5%、Worker 队列积压 > 1000、PG 连接数 > 80。健康检查端点:/health 返回所有服务状态。