✅摒弃Spring,我开发了一个AI绘画的网站,并用K6做压力测试

自研AI绘画网站

不要问我为什么不使用Spring Boot进行开发,我只是说在公司工作使用了好多年的Spring Boot,现在开发自己的东西,那么果断得用点新的东西啦(求上进中......)。

这里说一下基本的技术,供大家参考哈。

前端

由于比较长时间没接触前端新技术了,还是用的Vue那一套前端框架,变化不大,在使用中发现其实不怎么方便。

服务端

使用的Quarkus作为框架,涉及到Quarkue ReactiveORM层是Panache,底层是Vert .x,DEV环境启动后有面板可以看到具体使用的技术。

实际业务代码大致是这个样子的:

会看到大量的链式编程,这是之前写同步代码所没有的。不过写了几次也就习惯了,还挺方便。不过,Quarkus是作为云原生技术而出名的,我将其用作单体服务有点屈才。

数据库

有句话:"PostgreSQL: The world's most advanced open source database."

开发过程

我印象中的工作流程大致是下面这个样子的。

  • 产品经理进行产品设计;
  • UI设计师出具UI设计稿;
  • 领导对UI设计稿和产品设计审批通过;
  • 领导进行排期、拆解工作包、计划等等;
  • 服务端工程师开始参与开发;
  • 前端工程师进行开发;
  • 测试工程师进行功能测试;
  • 测试工程师进行压力测试;

但是,如果只有一个人呢?那么就变成了,我来设计、我来开发、我来测试。哈哈哈,节约了N多成本。于是经历了N天的开发之后,我的第一版出现了:(DEMO网站:jmai.art/home)

所以,其实开发一个人就能把所有事情都干了!!!哦吼......

压力测试

作为一名纯纯的服务端Java开发人员,也不太想用公司的那套Jmeter的东西做压测。而平时最常用的是wrk又不太适合做这种业务性质的压测。

掘金翻了挺多关于压测的帖子,找到了一个比较符合心意的工具。

Grafana k6: Load testing for engineering teams

主要原因有两个

  1. 使用JS写压测脚本,对我来说没啥问题;
  2. 竟然支持Postman直接导出压测脚本,爱了(平时都是使用Postman进行自动化测试,所以这块吸引我);

Postman

在日常开发中,已经都对API做了一轮测试了,大致20个接口左右;

Postman 导出

选中目录后,选择Export,然后选择Json格式导出文件;导出的文件重命名为AI-Run.json

然后导出当前的环境信息,文件命名为AI-Env.json

转换为K6脚本

官网给了两种方式进行脚本转换,我们选择其中一种。

于是我打开了我亲爱的命令行工具,敲击键盘:

于是我们得到了我们的压测脚本:ai-k6-script.js

先来一轮冒烟测试

执行命令k6 run ai-k6-script.js,然后可以得到冒烟测试的结果。

http_req_failed的结果,一共25个接口,全都成功。

压力测试

通过设置虚拟用户的数量,可以进行压力测试,大致脚本的样子如下

bash 复制代码
k6 run --vus 10 --duration 30s ai-k6-script.js

结果大致如下

当然,K6提供了很多结果展示的形式,可以参考K6的官方文档进行搭建。

我们就选择Html的展示方式,毕竟这个是最简单的(github.com/benc-uk/k6-...

执行命令还是k6 run --vus 10 --duration 30s ai-k6-script.js,输出结果大致如下,可以通过切换Tab查看不同纬度的指标。

总结

其实有些羡慕大厂的螺丝钉们,能在一门技术上钻研好久。而作为耗材的我,经常身兼多职,所以啥都了解一些,甚至会有些实践的经验。如今市场的情况不好,也希望自己能在工作之外,多多提升自己的技术视野技术能力。之前用Python开源了一个AI绘画的插件(github.com/SoftMeng/st... 这也让我萌生了自己编写一个AI绘画的Prompt网站的念头。

从产品角度,其实AI绘画的Prompt的网站并不少,而且技术难度也不高。但是从个人技术角度,使用Quarkus Reactive做了一个完整的项目,还是对我有所提高的。也非常感谢公司提供了一些支持,帮我省去了微信公众号认证的300块钱。

我的个人观念还是没变,实践增长的知识会比单纯的阅读有用的多。

相关推荐
土狗TuGou4 分钟前
SQL内功笔记 · 第5篇:SQL逻辑执行顺序
数据库·笔记·后端·sql·mysql
1candobetter9 分钟前
单接口性能测试实践总结:压测方案设计、成功判定与 JVM 监控分析
java·jvm·压力测试·测试
陆业聪11 分钟前
WebView与原生JS交互:JSBridge设计模式与安全实践
人工智能·aigc
为思念酝酿的痛9 小时前
POSIX信号量
linux·运维·服务器·后端
小羊在睡觉9 小时前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
swipe10 小时前
Neo4j + Graph RAG 医疗知识图谱工程实践:患者教育问答真正需要的是“关系可追溯”
后端·langchain·llm
源码宝10 小时前
MES系统源码:Java8 + SpringBoot2.7 + MySQL8 + Redis,后端源码清爽易扩展
java·后端·源码·springboot·mes系统·源码二开·mes源码
金銀銅鐵11 小时前
[Java] 如何理解 class 文件中方法的 descriptor?
java·后端
村口张大爷11 小时前
05 — 分层架构与依赖倒置
后端·架构·系统架构
武雄(小星Ai)11 小时前
2026年AI Agent框架选型指南:LangGraph vs CrewAI vs Claude SDK vs OpenAI SDK
人工智能·aigc·agent