Streamlit适配GaussDB验证任务心得
1. 背景介绍
开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/) 通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
2. 任务分析与验证
对任务书的内容阅读,初步理解适配思路如下:
- 需要去streamlit的官网了解其架构,找出与GaussDB的连接方式及相关代码;
- 基于streamlit的功能开发Demo应用进行GaussDB的增删改查,验证兼容性;
- 根据兼容性情况决定是否修改streamlit源码和如何修改;(可选)
- 如果修改代码重复第二步的验证。(可选)
2.1 分析Streamlit
官网地址: Streamlit • A faster way to build and share data apps
代码仓地址:https://github.com/streamlit/streamlit
Streamlit 是一个用于创建数据应用和机器学习模型界面的开源 Python 库。它简单易用,允许开发者快速构建交互式 Web 应用,而无需深入了解前端开发技术。
关键特点
- 简单易用:
只需几行代码即可创建基本的应用。
不需要编写 HTML、CSS 或 JavaScript。
- 快速迭代:
支持热重载,修改代码后自动刷新应用。
适合快速原型设计和实验。
- 丰富的组件:
提供多种内置组件,如按钮、滑块、输入框等。
支持图表和图像的显示,包括 Matplotlib、Plotly、Altair 等。
- 数据处理:
轻松集成 Pandas 和 NumPy,方便数据处理和分析。
支持缓存机制,提高应用性能。
- 部署简单:
可以轻松地将应用部署到 Heroku、AWS、GCP 等云平台。
提供 Streamlit Cloud 服务,一键部署应用。
竞品分析:
gradio 是功能与streamlit相似,也是科学计算使用比较多的开源软件。
2.2 streamlit 连接GaussDB
streamlit支持多种数据源,采用通用的python库或数据源的官方驱动对数据源的连接方式进行连接。
对PostgrepSQL的连接是通过psycopg2来实现,数据库配置信息保存在.streamlit/secrets.toml中。
[postgres]
dbname = "streamlitDB"
user = ""
password = ""
host = ""
port = "8000"
支持的数据源
2.2.1 采用开源的psycopg2连接GaussDB数据库
pip install psycopg2-binary==2.9.10
2.2.2 采用GaussDB的商业驱动psycopg2连接数据库
从官网下载驱动,注意版本要与开发环境严格一致, HCE与Eluer是两个系统版本。
https://support.huaweicloud.com/qs-gaussdb/gaussdb_01_623.html#section4
参考下面步骤进行安装:
2.3 准备环境
2.3.1 购买GaussDB服务
- 服务规格:
- 购买并且绑定EIP
为了保证数据库服务能够被streamlit访问,主节点需要绑定EIP。
- 创建Demo连接的数据库streamlitDB
- 在数据库streamlitDB创建schema为rxl
注意:
如果采用GaussDB的商业驱动(psycopg2)进行数据库连接,则跳过下面的数据库修改。
如果要基于开源的psycopg2进行数据库连接,服务购买后需要参考下面连接进行配置修改,基于已有经验。
https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/issues/15
2.3.2 购买Euler OS的ECS来运行Demo
- 服务规格:
- 购买并且绑定EIP
为了保证Demo服务能够被浏览器访问,需要绑定EIP,并且在安全组中开启streamlit的服务端口8501。
2.3.3 购买Windows的ECS用来访问Demo
- 服务规格:
2.4 开发Demo应用进行
2.4.1 安装streamlit
- 确定兼容性:
查看 Euler OS的ECS 的python版本为 3.9.9;去streamlit的GitHub仓查看最新版本1.40.1,此版本支持python3.9.9。
- 配置python的华为镜像源
~/.pip/pip.conf配置如下内容:
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120
- 安装streamlit
pip install streamlit==1.40.1
- 安装psycopg2
采用开源驱动参考2.2.1;
采用GaussDB驱动参考2.2.2;
2.4.2 运行Demo应用
在 Euler OS的ECS 的 参考 https://gitcode.com/SeanRR705/opensource-demo-streamlit-241113/blob/main/streamlitdemo/ReadMe 进行部署。
2.5 验证Demo功能
2.5.1 通过浏览器访问Demo
2.5.2 验证创建删除表格
2.5.3 验证数据的增删改查功能
2.5.4 通过GaussDB的客户端工具查看结果
也许你对结果有怀疑,没有问题,请找个客户端工具Navicat/DBeaver同步查看每步操作后数据库的变化。
2.5.5 下一步计划
结论:
- 经过前面的验证,发现基于streamlit最新版1.40.1和 psycopg2最新版2.9.10,对GaussDB是兼容的。
- 暂时不需要对streamlit进行代码修改。
3 验证CCE集群中兼容性
思路:
- 基于ECS的验证环境,制作Docker镜像
- 将镜像上传到SWR
- 购买CCE环境,部署镜像
- 进行功能验证,验证过程类似 2.5 章
3.1 制作Docker镜像
ECS规格为鲲鹏的HCE系统,需要找到Docker对应的安装方式。
Docker安装步骤如下:
1. 设置yum源安装docker
https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0118948562.html
2. 安装docker
https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html#swr_01_0006__li1756716406122
3. 设置docker的镜像源加速器
https://support.huaweicloud.com/usermanual-swr/swr_01_0045.html
4. 编写Dockerfile
OpenSourceForHuaweiDemoPython:开源软件Streamlit适配GaussDB的Demo - GitCode
5. 编译运行镜像进行功能验证,注意开放端口否则访问不通
docker build -t streamlitdemo:v1 .
docker run -p 8501:8501 streamlitdemo:v1
- 制作基于开源psycopg2的镜像参考
OpenSourceForHuaweiDemoPython:开源软件Streamlit适配GaussDB的Demo - GitCode
- 制作基于GaussDB驱动的镜像参考
OpenSourceForHuaweiDemoPython:开源软件Streamlit适配GaussDB的Demo - GitCode
3.2 购买SWR服务,上传制作好的镜像
参照指导在ECS上直接上传,速度要比网页上传快N倍。
在ECS服务器上执行命令行如下:
docker login -u cn-north-4@4ZRGF -p 4a8db1b swr.cn-north-4.myhuaweicloud.com
docker tag streamlitdemo:v1 swr.cn-north-4.myhuaweicloud.com/sean0918/streamlitdemo:v1
docker push swr.cn-north-4.myhuaweicloud.com/sean0918/streamlitdemo:v1
上传后可以在SWR中看到上传的镜像
3.3 购买CCE进行验证
3.3.1 购买CCE集群
3.3.2 购买节点
- 制作镜像是鲲鹏HCE的ECS服务器,购买节点必须选择同样规格,保证CPU和系统的一致,否则莫名错误。
- 同步绑定EIP,这样保证集群里面的服务能够被客户端访问。
- 安全组开放streamlit服务需要的8501端口。
3.3.3 部署CCE工作负载
选择无状态负载就可以满足要求,镜像选择个人上传的镜像。
部署成功如下,失败了请自行查看日志进行定位分析。
3.3.4 部署CCE服务
创建Nodeport类型的服务,同步配置容器、服务、节点的端口影视,关联已经部署的工作负载。
节点端口可以选择自动分配,减少失败几率。
部署成功如下,失败则自行查看日志分析解决。
通过下图中的公网IP加上节点端口就可以访问Streamlit的服务。
3.4 启动浏览器验证功能
新建删除表格,数据的增删改查验证OK,不再赘述。
4 总结
验证环境:
- ECS + 鲲鹏 + HCE
- CCE + 鲲鹏 + 镜像
streamlit连接GaussDB进行新建删除表格,数据增删改查正常。
结论: streamlit适配GaussDB无需修改开源软件代码。
- 点赞
- 收藏
- 关注作者
评论(0)