feat: 更新端口配置并添加监控支持

fix: 修复测试配置和依赖检查

perf: 优化雪花算法性能

refactor: 清理冗余代码和未使用的导入

style: 统一代码格式和注释

test: 添加单元测试和集成测试

ci: 更新CI配置和构建脚本

chore: 更新依赖和配置文件
This commit is contained in:
张翔
2026-03-13 08:50:19 +08:00
parent fe2e4110dd
commit 9f8bf041c3
169 changed files with 3565 additions and 132 deletions
@@ -0,0 +1,75 @@
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 10 },
{ duration: '1m', target: 50 },
{ duration: '30s', target: 0 },
],
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};
const BASE_URL = __ENV.BASE_URL || 'http://localhost:8080';
export default function () {
const responses = http.batch([
['GET', `${BASE_URL}/api/users/page?page=0&size=10`, null, { tags: { name: 'UsersList' } }],
['GET', `${BASE_URL}/api/roles/page?page=0&size=10`, null, { tags: { name: 'RolesList' } }],
]);
check(responses[0], {
'users status is 200': (r) => r.status === 200,
'users response time < 500ms': (r) => r.timings.duration < 500,
});
check(responses[1], {
'roles status is 200': (r) => r.status === 200,
'roles response time < 500ms': (r) => r.timings.duration < 500,
});
const singleUserRes = http.get(`${BASE_URL}/api/users/1`);
check(singleUserRes, {
'single user status is 200 or 404': (r) => r.status === 200 || r.status === 404,
'single user response time < 300ms': (r) => r.timings.duration < 300,
});
const healthRes = http.get(`${BASE_URL}/actuator/health`);
check(healthRes, {
'health check status is 200': (r) => r.status === 200,
'health check response time < 100ms': (r) => r.timings.duration < 100,
});
sleep(1);
}
export function handleSummary(data) {
return {
'stdout': textSummary(data, { indent: ' ', enableColors: true }),
'performance-report.json': JSON.stringify(data, null, 2),
};
}
function textSummary(data, options) {
const indent = options?.indent || '';
const colors = options?.enableColors || false;
let summary = `\n${indent}📊 Performance Test Summary\n`;
summary += `${indent}============================\n\n`;
summary += `${indent}⏱️ HTTP Metrics:\n`;
summary += `${indent} - Total Requests: ${data.metrics.http_reqs?.values?.count || 0}\n`;
summary += `${indent} - Request Duration (p95): ${data.metrics.http_req_duration?.values?.['p(95)']?.toFixed(2) || 0}ms\n`;
summary += `${indent} - Request Failed Rate: ${(data.metrics.http_req_failed?.values?.rate * 100)?.toFixed(2) || 0}%\n`;
summary += `\n${indent}📈 Iterations:\n`;
summary += `${indent} - Total: ${data.metrics.iterations?.values?.count || 0}\n`;
summary += `${indent} - Rate: ${data.metrics.iterations?.values?.rate?.toFixed(2) || 0}/s\n`;
summary += `\n${indent}⏰ Test Duration: ${data.state?.testRunDurationMs ? (data.state.testRunDurationMs / 1000).toFixed(2) : 0}s\n`;
return summary;
}