dify多租户实现

1,759 阅读2分钟

也不是实现吧,dify本来就支持的,自己调研实践了一下,突破了官方的限制吧,自己玩玩,没有商用,姑且记录一下

问题:

dify目前是只部署了单例,现在的情况是只能注册一个管理员,也就是组织账号

首次部署成功会进入注册管理员的页面,之后登录后再退出再点击管理员注册就会被重定向到登录页面,所以官方是只允许注册一次的。

参考:github.com/langgenius/…


而官方部署的版本是每个人进入都是注册页面,注册成功就是管理员,也就是Saas,查看源码得知Dify 采用的是共享数据库,Schema 隔离的多租户模式,所有租户共用同一个数据库,通过 tenant_id 字段进行数据隔离:

结论:

显然dify在部署上面没有对租户的资源进行细分,也就是分配单独的计算资源或者数据库等,dify是在数据库逻辑层面进行的数据隔离,而开源版本仅仅是通过字段等来限制dify的多租户系统,这一点完全可以通过修改源码来实现:

修改思路:前端去除状态的判断,后端同步去除,后端的注册服务也需要修改

首先前端重定向这里去除:

然后后端的初始化的校验去除:

然后初始化这里的修改逻辑:保证初始化只保存初次的初始化数据,当然也可以保存最新的一次,但是没有意义,因为我们前门已经去除了对初始化的检查,这里异常回滚要保证不删除之前的租户数据

测试:

参考资料:

dify创业故事:www.infoq.cn/article/5em…

saas平台的三种方案:www.bilibili.com/video/BV1Ve… 做Sass的风险预知:www.bilibili.com/video/BV1dz…