keda基于postgresql伸缩dify-api服务

embedded/2025/3/26 4:28:38/

1 概述

dify-api使用postgresql来存储数据,在dify控制台每新建一个聊天机器的聊天框,就会在conversations表里新插入一条记录,并且不断地更新字段updated_at,示例如下:

dify=# select * from conversations limit 1;
-[ RECORD 1 ]-------------+-------------------------------------
id                        | e880b32f-6aae-4191-890b-52f0ddbcb9b7
app_id                    | 7455b19d-85f2-42a0-b3cd-f1b5178ab2da
app_model_config_id       | 5c1c9c78-2cd2-459d-9f77-9be329910fe0
model_provider            | tongyi
override_model_configs    | 
model_id                  | qwen-vl-max-0809
mode                      | chat
name                      | Asking about the definition of k8s
summary                   | 
inputs                    | {}
introduction              | 
system_instruction        | 
system_instruction_tokens | 0
status                    | normal
from_source               | console
from_end_user_id          | 
from_account_id           | 49de836a-9c2d-4f20-82bc-d00efd14893c
read_at                   | 
read_account_id           | 
created_at                | 2025-03-23 05:40:22
updated_at                | 2025-03-23 12:10:44.410997
is_deleted                | f
invoke_from               | explore
dialogue_count            | 0

因此可以依据updated_at字段来过滤最新活跃的聊天,就是一条SQL的事情,而keda具备Postgresql Scaler模块来对接Postgresql,通过SQL查询数据,将获取的数据转变成external metrics供HPA模块使用。
在这里插入图片描述

dify_34">2 部署dify

此处省略,可以参考我的文章:

https://blog.csdn.net/nangonghen/article/details/145917819

keda_43">3 部署keda

此处省略,可以参考我的文章:

https://blog.csdn.net/nangonghen/article/details/145601276

kedakubernetes_50">4 创建keda相关kubernetes资源

将ScaledObject和TriggerAuthentication资源提交到k8s集群可,以下示例仅供参考:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:name: hpa-dify-apinamespace: dify
spec:scaleTargetRef:                           # 扩容目标对象name: dify-apikind: StatefulSetapiVersion: apps/v1minReplicaCount: 1                        # 最小副本数,最小可以是0maxReplicaCount: 6                        # 最大副本数pollingInterval: 10                    # 轮询时间,单位是秒triggers:                                 # 伸缩的触发规则- type: postgresqlauthenticationRef:name: keda-trigger-auth               # pg密码存储在此对象,因此metadata中不必写密码参数passwordmetadata:userName: postgreshost: dify-pg-ha.difyport: "5432"dbName: difysslmode: disablequery: "select count(1) from conversations where updated_at > (NOW() - INTERVAL '1 minutes');"targetQueryValue: "3"
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:name: keda-trigger-authnamespace: dify
spec:secretTargetRef:- parameter: password    # 目标参数名称(根据Scaler类型而定。对于Postgresql Scaler,密码parameter是password)name: pg-secret        # Secret 名称key: PG_PASSWORD       # Secret 中的键名

5 测试

dify控制台新增创建多个活跃聊天窗口:
在这里插入图片描述
从k8s event事件看出,keda operator会将dify-api服务的副本从1提升至2:
在这里插入图片描述

6 小结

本文介绍通过keda的pg scaler模块从数据库获取活跃的聊天窗口的记录数,基于此来伸缩dify api服务,如此一来在chat机器人聊天频繁的情况下,dify api的副本数量不会成为瓶颈。


http://www.ppmy.cn/embedded/176206.html

相关文章

【机器人动力学】——转动惯量

【机器人动力学】——转动惯量 一、质量分布 转动惯量的定义: A I [ I x x − I x y − I x z − I x y I y y − I y z − I x z − I y z I z z ] ^AI \begin{bmatrix} I_{xx} & & -I_{xy} & & -I_{xz} \\ -I_{xy} & & I_{yy} & …

python实战,提取数据汇聚到表格中

起因: 一个临时性的检查工作,上级单位发来数十张表格,每张表格名以一个特定的数字开头,表示其中的一个规则,每张表格有几千到几十万条数据,在每张规则表中,每条数据的序号是唯一的。然后这些表…

品融电商:深耕兴趣电商,多维赋能品牌长效增长

品融电商:深耕兴趣电商,多维赋能品牌长效增长 在流量去中心化与消费需求多元化的新商业时代,品牌如何精准触达年轻用户、快速建立心智认知并实现销量突破?品融电商(PINKROON)凭借其“效品合一&#xff0c…

让 Deepseek 写一个计算器(网页)

完整代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>简单计算器</title><style&…

conda install 和 pip install 的区别

conda install 和 pip install 是两个常用的包安装命令&#xff0c;但它们在很多方面存在差异。 1. 所属管理系统不同 1.1 conda install conda install 是Anaconda和Miniconda发行版自带的包管理工具 conda 的安装命令。conda 是一个跨平台的开源包管理系统和环境管理系统&…

AI 生成 PPT 网站介绍与优缺点分析

随着人工智能技术不断发展&#xff0c;利用 AI 自动生成 PPT 已成为提高演示文稿制作效率的热门方式。本文将介绍几款主流的 AI PPT 工具&#xff0c;重点列出免费使用机会较多的网站&#xff0c;并对各平台的优缺点进行详细分析&#xff0c;帮助用户根据自身需求选择合适的工具…

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…

软考教材重点内容 信息安全工程师 第20章 数据库系统安全

20.1.2 数据库安全威胁 数据库安全威胁如下: (1)授权的误用(Misuses of Authority)。合法用户越权获得他们不应该获得的资源&#xff0c;窃取程序或存储介质&#xff0c;修改或破坏数据。授权用户将自身的访问特权不适当地授予其他用户&#xff0c;导致系统安全策略受到威胁&a…