Dify智能体平台源码二次开发笔记(1) - 分布式服务部署优化版
本文详细介绍了Dify智能体平台的源码二次开发与分布式服务部署方案,重点阐述了核心架构配置与关键优化点。主要内容包括主服务模块(API/Worker/Web)和辅助服务(Sandbox/Plugin Daemon)的部署方式,以及Redis、PostgreSQL、Milvus和MinIO等关键中间件的配置方法。特别强调了将默认的Weaviate向量数据库替换为支持十亿级数据的Milvus,文件存储
目录
前期准备
对Dify进行源码二次开发需要本地调试源码前,需完成以下准备工作:
核心服务组件
-
主服务:api、work、web
-
辅助服务:sandbox、plugin_daemon(采用镜像部署)
依赖中间件
-
缓存服务:Redis
-
数据库:PostgreSQL
-
代理服务器:Squid
-
向量数据库:Weaviate/Milvus
-
文件存储:本地存储/MinIO
插件服务和代码服务配置
由于仅需二次开发api源码,plugin_daemon和sandbox仍使用镜像部署,需开放以下端口供本地调试访问:
-
plugin_daemon:5002、5003
-

-
sandbox:8194
-

缓存服务器配置
本地调试必须开放Redis的6379端口

向量数据库配置
Dify默认使用Weaviate,但为支持海量数据处理和分布式水平扩展(十亿级向量),选用Milvus:
env
复制
VECTOR_STORE=milvus MILVUS_URI=http://[你的IP]:19530 MILVUS_TOKEN= MILVUS_USER=root MILVUS_PASSWORD=Milvus MILVUS_ENABLE_HYBRID_SEARCH=False
需开放端口:
-
Milvus:19530
-

-
etcd相关端口
-

-
MinIO相关端口
-

文件存储配置
Dify默认使用本地存储,不适合分布式部署,改用MinIO分布式存储:
env
复制
STORAGE_TYPE=s3 S3_ENDPOINT=http://[你的IP]:9001 S3_REGION=us-east-1 S3_BUCKET_NAME=difyai S3_ACCESS_KEY=[你的ACCESS_KEY] S3_SECRET_KEY=[你的SECRET_KEY]
Nginx反向代理配置
修改nginx/conf.d/default.conf.template:
nginx
复制
location /console/api {
proxy_pass http://[你的IP]:5001;
include proxy.conf;
}
location /api {
proxy_pass http://[你的IP]:5001;
include proxy.conf;
}
location /v1 {
proxy_pass http://[你的IP]:5001;
include proxy.conf;
}
location /files {
proxy_pass http://[你的IP]:5001;
include proxy.conf;
}
部署验证
完成上述配置后,启动你本地的api代码,访问http://[你的IP]
在控制台能够看到访问日志,证明可以开启dify二次开发之旅了……

更多推荐


所有评论(0)