Way 是一个首创使用 .way 文件来管理服务器的创新型框架。通过 .ini 配置文件和自研的 Routerjs 组件,实现多服务和目录的聚合管理。每个 JavaScript 服务器功能独立,借助首创的 SqlWay.js 进行服务器管理与进程守护。同时,结合 bun 运行时和静态文件内存缓存机制,实测性能可达约 7000 次请求每秒。
.way文件管理:首创的.way文件格式,将服务器配置与业务逻辑深度整合,提升配置管理效率。- 多服务聚合:通过
.ini文件和Routerjs实现服务动态加载与路由,支持灵活扩展。
bun运行时:利用bun的高性能特性,显著提升代码执行速度。- 内存缓存:静态文件内存缓存机制,减少磁盘 I/O,加速资源访问。
- 进程守护:
SqlWay.js提供自动重启和故障恢复功能,保障服务稳定性。 - 集群控制:支持对子集群进行统一管理和指令操作。
- 运行时:
bun>= 1.0.0、Node.js >= 16.0.0 - 配置文件:
.ini、.way - 核心组件:
Routerjs、SqlWay.js - 数据库:MySQL(支持扩展)
确保系统已安装以下软件:
# 检查 bun 版本
bun --version
# 检查 Node.js 版本
node -v若未安装 bun,可通过以下命令安装:
curl -fsSL https://bun.sh/install | bash- 克隆项目仓库:
# 替换为实际仓库地址
git clone https://your-repo-url.git
cd your-project-folder- 安装依赖:
bun install项目配置文件位于 Conf 目录下,各文件作用如下:
[数据库配置]
host = localhost
port = 3306
user = root
password = your_password
database = LNK该文件用于配置数据库连接信息,子服务器启动时会读取此配置并入路由。
[服务列表]
服务1 = ./path/to/service1.js
服务2 = ./path/to/service2.js配置需要启动的 JavaScript 服务路径。
[核心服务]
核心服务1 = ./path/to/core-service1.js
核心服务2 = ./path/to/core-service2.js配置特别重要的核心服务,系统启动时优先加载。
在 ExePlugs 目录下:
Exes目录:可放置minio.exe等可执行文件。Tooljs/Conf目录:配置可执行文件的启动参数。示例ExeStartList.ini:
[minio]
path = ./ExePlugs/Exes/minio.exe
args = server ./data以下是可用的服务器指令,可通过命令行对子集群进行控制:
# 显示帮助信息
help
# 显示所有服务状态
list
# 启动指定服务
start 服务名
# 停止所有服务
stop all
# 重启服务并查看日志
restart 服务名 && logs 服务名项目使用 k6 进行性能测试,测试脚本示例:
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
vus: 200,
duration: '30s',
};
export default function () {
let res = http.get('http://localhost:8080/api/test');
check(res, { 'status 200': (r) => r.status === 200 });
sleep(1);
};运行测试:
k6 run script.js项目提供了以下错误页面:
Error/404.html:资源未找到错误Error/500.html:服务器内部错误Error/503.html:服务不可用错误
- Fork 项目仓库
- 创建新分支:
git checkout -b feature/new-feature - 提交代码:
git commit -m "Add new feature" - 推送分支:
git push origin feature/new-feature - 创建 Pull Request
本项目采用 MIT 协议 进行许可。
作者:枕知意 版本:V1.0
如有问题或建议,欢迎通过以下方式联系:
