https://github.com/mcloud136/v2node
大幅度提升安全性和性能
https://github.com/mcloud136/v2node
golang high-performance hysteria2 networking proxy shadowsocks trojan tuic v2board v2ray v2x vless vmess xray
Last synced: 16 days ago
JSON representation
大幅度提升安全性和性能
- Host: GitHub
- URL: https://github.com/mcloud136/v2node
- Owner: Mcloud136
- License: gpl-3.0
- Created: 2026-05-05T11:58:56.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-25T04:04:39.000Z (28 days ago)
- Last Synced: 2026-05-25T06:47:13.578Z (28 days ago)
- Topics: golang, high-performance, hysteria2, networking, proxy, shadowsocks, trojan, tuic, v2board, v2ray, v2x, vless, vmess, xray
- Language: Go
- Homepage:
- Size: 337 KB
- Stars: 9
- Watchers: 0
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# v2node
A high-performance v2board backend based on modified xray-core.基于改进的xray-core的高性能v2board后端。
[](https://github.com/Mcloud136/v2node/actions/workflows/release.yml)
[](https://github.com/Mcloud136/v2node/releases/)
[](https://github.com/Mcloud136/v2node/releases/)
[](https://github.com/Mcloud136/v2node/)
## 项目简介
本项目基于[https://github.com/wyx2685/v2node](https://github.com/wyx2685/v2node)制作,大幅度提升性能并加入一些新的特性。
**注意**:本项目和[https://github.com/wyx2685/v2node](https://github.com/wyx2685/v2node)一样,需要搭配[修改版 V2board](https://github.com/Mcloud136/v2board) 使用。
## 原版特性
- 支持多种协议
- 高性能并发设计,支持高负载场景
- 完善的流量限制和设备管理
- 自动证书管理和更新
- 配置热更新,无需重启服务
- 优雅的错误处理和日志管理
## 项目概述
- **原始项目**: [wyx2685/v2node](https://github.com/wyx2685/v2node)
- **优化项目**: [Mcloud136/v2node](https://github.com/Mcloud136/v2node)
- **当前版本**: 1.0.2
---
## 性能优化对比
### 1. 并发性能优化
| 优化项目 | 原始实现 | 优化实现 | 效果 |
|---------|---------|---------|------|
| **Limiter Map** | 普通 `map` 加锁 | `sync.Map` | 消除性能瓶颈,高并发下读写更高效 |
| **原子操作** | 普通指针 | `atomic.Pointer` | 无锁读取,提升并发性能 |
| **复合 Key** | 分散结构 | 复合 key 设计 | 简化数据结构,减少内存开销 |
### 2. 字符串处理优化
| 文件 | 优化内容 | 原始方式 | 优化方式 |
|------|---------|---------|---------|
| common/format/user.go | UserTag 函数 | `fmt.Sprintf` | `strings.Builder` + 预分配容量 |
| api/v2board/panel.go | User-Agent 构造 | 字符串拼接 | `strings.Builder` + 预分配容量 |
| limiter/limiter.go | IP Key 构造 | 字符串拼接 | `strings.Builder` + 预分配容量 |
**效果**: 减少内存分配和 GC 压力
### 3. 容量预分配优化
| 文件 | 优化位置 | 优化内容 |
|------|---------|---------|
| node/user.go | `compareUserList` | 预分配 `oldMap`、`added`、`modified`、`deleted` 容量 |
| node/user.go | `reportUserTrafficTask` | 预分配 `result`、`nocountUID`、`data` 容量 |
| limiter/limiter.go | `GetOnlineDevices` | 预分配 `result`、`toDelete` 容量 |
**效果**: 减少切片扩容次数,提升性能
### 4. 算法优化
| 优化项 | 原始实现 | 优化实现 |
|-------|---------|---------|
| `determineSpeedLimit` | 复杂判断逻辑 | 简洁的较小值返回 | 代码减少约 60% |
| `DeviceTracker.DeleteUser` | 遍历整个 Map | 反向索引快速删除 | 大幅提升删除效率 |
---
## 类型安全与兼容性改进
| 改进项 | 说明 |
|-------|------|
| 类型断言替代反射 | 提升代码安全性和执行效率 |
| 新增 `int64` 类型支持 | 增强数据兼容性 |
---
## 配置管理改进
| 功能 | 说明 |
|-----|------|
| 配置验证机制 | 启动前校验参数有效性 |
| 端口可用性检查 | 避免启动失败 |
| 配置热更新回滚 | 失败时保持原配置运行,确保服务连续性 |
| 增量配置更新 | 支持更灵活的配置管理 |
---
## 资源管理改进
| 功能 | 说明 |
|-----|------|
| 统一资源生命周期管理 | 避免资源泄漏 |
| pprof 服务优雅关闭 | 更好的调试支持 |
| 日志文件句柄统一管理 | 确保资源正确释放 |
---
## 新增功能
| 版本 | 新增功能 |
|-----|---------|
| 1.0.0 | cloudflared 服务联动重启 |
| 1.0.1 | Go 版本更新至 1.26.2,修复构建兼容性 |
| 1.0.2 | 大幅度提升性能 |
---
---
## 系统要求
### 支持的操作系统
| 系统 | 最低版本 | 说明 |
|------|----------|------|
| CentOS | 7 | CentOS 7 无法使用 hysteria1/2 协议 |
| Ubuntu | 16 | 推荐 18.04+ |
| Debian | 8 | 推荐 10+ |
| Alpine | 3.10+ | 轻量级发行版 |
### 硬件要求
| 配置 | CPU | 内存 | 带宽 |
|------|-----|------|------|
| 最小配置 | 1核 | 512MB | 100Mbps |
| 推荐配置 | 2核 | 1GB | 1Gbps |
### 架构支持
- x86_64 (amd64) - 推荐(其余版本请自行构建)
- ARM64 (aarch64)
- s390x
---
## 安装方法
### 方法一:一键安装
```bash
wget -N https://raw.githubusercontent.com/Mcloud136/v2node/master/script/install.sh && bash install.sh
```
**带参数安装**(跳过交互):
```bash
wget -N https://raw.githubusercontent.com/Mcloud136/v2node/master/script/install.sh && \
bash install.sh --api-host https://your-panel.com/ --node-id 1 --api-key your-secret-key
```
### 方法二:手动安装
#### 1. 创建目录结构
```bash
mkdir -p /usr/local/v2node
mkdir -p /etc/v2node
```
#### 2. 下载并解压二进制文件
```bash
cd /usr/local/v2node
curl -sL "https://github.com/Mcloud136/v2node/releases/latest/download/v2node-linux-amd64.zip" | unzip -
chmod +x v2node
```
#### 3. 创建 systemd 服务
```bash
cat > /etc/systemd/system/v2node.service <