docker-compose.png中的数据流程解析

Dify 架构由多个独立模块协作构成:Nginx 负责入口路由,web 提供前端 UI,api + worker 通讯并处理业务逻辑,plugin_daemon 与 sandbox 实现插件扩展以及计算隔离,最终配合 Postgres、Redis 与 Weaviate 等存储组件支持 LLMOps。

1.请求入口:Nginx反向代理智能调度

Dify 使用 Nginx 作为统一网关,把不同路径的请求转发到对应组件:

  • 静态资源与前端界面 //explore → web:3000

  • API 请求与文件上传 /api/v1/files → api:5001

  • 插件 Webhook /e/{hook_id} → plugin_daemon:5002

这个路由配置写在 Docker 的 nginx/conf.d/default.conf.template 中,可根据部署调整 IP 或端口。

2.前端流程:Web与API协作

web:3000 提供 React 单页应用,界面加载后再发 API 请求获取数据。所有对外请求均被隔离于浏览器之下,后端通过代理进行流量控制与缓存优化。外部 HTTP 请求节点(HTTP Request Node)均通过 Squid 代理 /ssrf_proxy 来防御 SSRF 攻击。缓存命中则通过 Redis 保持超低延迟响应 。

3.核心API+Worker:业务处理核心

api:5001 是 Dify 的业务入口,可采用 Gunicorn + Flask 构建。所有用户请求如聊天、上传文件、调用插件等,都由这里接收处理,然后通过 Celery 推送任务到 worker 执行并异步完成。

  • 数据持久化由 PostgreSQL(db:5432)负责;

  • Redis(redis:6379)保存短期缓存、速率限制和状态;

  • Weaviate(vector database:8080)用于存储嵌入向量和支持 RAG 搜索。

4.插件生态:Plugin Daemon+Sandbox

插件系统由两部分组成:

  • Plugin Daemon (plugin_daemon:5002):监听插件调用生命周期,允许前端或 API 发起工具调用形成 back-invoke;同时接收 webhook 事件至 /e/{hook_id} 路径,自动注入到绑定的工作流。

  • Sandbox (sandbox:8194):用于执行不可信的插件代码,有严格的资源与权限限制。

这种设计既便于插件开发,也确保系统安全隔离。

5.安全体系:SSRF、签名、沙箱保障

Dify 架构重点关注安全:

(1)SSRF 防护:所有外部 URL 请求走 ssrf_proxy,且可配置白名单与流量限制;

(2)身份验证:使用 SECRET_KEY、插件签名机制与 Redis 存储 token 以保证访问和调用安全;

(3)执行隔离:插件代码只在 Sandbox 环境运行,不影响主机及 API 服务安全。

6.弹性扩展:该架构支持横向扩展

Dify 采用模块化架构设计,使系统具备高度的可扩展性与灵活部署能力。通过简单配置,用户即可根据业务需求实现性能扩展与组件替换:

(1)可横向增加 API 实例(即 api 服务容器)以提升请求处理的并发能力和整体吞吐;

(2)可扩展 Worker 实例数量,加速异步任务处理(如向量嵌入、数据集构建、插件执行等);

(3)支持无缝替换向量数据库(如将默认的 Weaviate 替换为 Qdrant、Milvus 等),只需调整相关环境变量即可,无需更改任何业务逻辑或代码。

其中,核心控制参数如下:

  • CELERY_WORKER_AMOUNT:定义异步任务 Worker 的并发数,提升处理能力;

  • SERVER_WORKER_AMOUNT:配置 API 服务的 Gunicorn 进程数量,增强请求吞吐;

  • VECTOR_STORE:用于切换向量数据库类型(如设为 weaviateqdrant 或 milvus);

  • VECTOR_STORE_URLVECTOR_STORE_API_KEY 等:用于对接目标向量数据库的具体连接参数。

上述配置项均支持 即插即用,仅需在 .env 或 docker-compose.yml 中设置,无需修改代码或镜像内容。修改后重启对应服务即可生效,使得 Dify 在私有部署、企业集成或云原生环境中具备极强的适配性与可维护性。

参考文献

[0] docker-compose.png中的数据流程解析:https://z0yrmerhgi8.feishu.cn/wiki/RYIhwj1Nli2h1UkHYG9cl1GCnSg

[1] https://github.com/langgenius/dify/blob/1.5.0/docker/docker-compose.png


知识星球:Dify源码剖析及答疑,Dify扩展系统源码,AI书籍课程|AI报告论文,公众号付费资料。加微信buxingtianxia21进NLP工程化资料群,以及Dify交流群。

(文:NLP工程化)

发表评论