Skip to content

Commit 7679e22

Browse files
committed
feat(gt): upgrade on the fly
1 parent 5f68275 commit 7679e22

File tree

6 files changed

+260
-208
lines changed

6 files changed

+260
-208
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[workspace.package]
66
authors = ["Zhiyi Weng"]
7-
version = "2.1.6"
7+
version = "2.2.0"
88
edition = "2021"
99
description = "Fast WebSocket(s)/HTTP(s)/TCP relay proxy with WebRTC P2P supports."
1010

README.md

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,29 @@
44

55
GT 是一个高性能的 WebSocket(s)/HTTP(s)/TCP 中转代理。
66

7-
具有以下设计特点:
8-
- 多进程+多线程架构
9-
- reload 过程中,保持转发可以成功。压力测试过程中 reload,测试结果 0 error
10-
- 进程守护,工作进程崩溃自动重启
11-
- 加载配置文件目录,可以同时启动多个服务端,客户端
12-
- 注重性能,在保持跨平台和功能稳定的前提下,会尝试采用性能更高的技术方案
13-
- 减少内存分配来减轻 GC 负担:资源池,LoadOrStore Store 时才创建 Value
14-
- 减少内存复制:Reader 使用 Peek 和 Discard 取代 Read
15-
- 避免系统调用:Virtual Listener、Conn 将请求数据转发到进程内 API 服务
16-
- 根据不同的并发场景,使用适当的并发技术
7+
关键设计特点:
8+
9+
- 注重稳定性
10+
- 高可用,可以在运行时升级版本,无需担心连接丢失、服务中断、停机
11+
- 在 reload 过程中,会保持转发可以成功。压力测试过程中 reload,测试结果 0 error
12+
- 进程守护,工作进程崩溃自动重启
13+
- 注重性能,在保持跨平台的前提下,会尝试采用性能更高的技术方案
14+
- 减少内存分配来减轻 GC 负担:资源池,LoadOrStore Store 时才创建 Value
15+
- 减少内存复制:Reader 使用 Peek 和 Discard 取代 Read
16+
- 避免系统调用:Virtual Listener、Conn 将请求数据转发到进程内 API 服务
17+
- 根据不同的并发场景,使用适当的并发技术
1718
- 注重易用性
18-
- 客户端支持指向多个服务
19-
- 支持 yaml 配置文件和 Web 配置管理
20-
- 服务端支持多用户功能
21-
- 零参数配置启动,进入 Web 配置初始化
22-
- 客户端自动根据网络状况,智能选择与服务端的通信协议
19+
- 支持加载配置文件目录,可以同时启动多个服务端,客户端
20+
- 客户端支持指向多个服务
21+
- 支持 yaml 配置文件和 Web 配置管理
22+
- 服务端支持多用户功能
23+
- 零参数配置启动,进入 Web 配置初始化
24+
- 客户端自动根据网络状况,智能选择与服务端的通信协议
2325
- 注重隐私保护
24-
- 服务端的端口复用功能,是基于协议目标的特征位置来实现的。例如:应用层 HTTP 协议转发,基于 TCP 数据流,只定位获取第一个数据包的 HTTP 协议头的转发目标,然后将后续数据直接转发
25-
- 不打印敏感信息到日志
26-
- 支持 HTTPS SNI 端到端加密转发
26+
- 服务端的端口复用功能,是基于协议目标的特征位置来实现的。例如:应用层 HTTP 协议转发,基于 TCP 数据流,只定位获取第一个数据包的
27+
HTTP 协议头的转发目标,然后将后续数据直接转发
28+
- 不打印敏感信息到日志
29+
- 支持 HTTPS SNI 端到端加密转发
2730
- 基于 WebRTC 实现的点对点连接功能,支持所有支持 WebRTC 的平台,例如:iOS,Android,浏览器等。
2831

2932
## 工作原理
@@ -304,7 +307,10 @@ Transfer/sec: 5.09MB
304307

305308
## 贡献者
306309

307-
感谢以下人员为项目做出的贡献
310+
感谢以下开发者为项目做出的贡献
308311

309312
- [zhiyi](https://github.com/vyloy)
310313
- [jianti](https://github.com/FH0)
314+
- [huwf5](https://github.com/huwf5)
315+
- [AdachiAndShimamura](https://github.com/AdachiAndShimamura)
316+
- [DrakenLibra](https://github.com/DrakenLibra)

bin/src/cs.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,18 @@
2020
#![allow(unused)]
2121

2222
use clap::Args;
23+
use serde::{Deserialize, Serialize};
2324
use std::ffi::{c_char, c_void, CString};
2425
include!("cs_bindings.rs");
2526

26-
#[derive(Args, Debug, PartialEq, Eq, Hash, Clone)]
27+
#[derive(Args, Debug, PartialEq, Eq, Hash, Clone, Serialize, Deserialize)]
2728
pub struct ServerArgs {
2829
/// Config file path
2930
#[arg(short, long)]
3031
pub config: Option<String>,
3132
}
3233

33-
#[derive(Args, Debug, PartialEq, Eq, Hash, Clone)]
34+
#[derive(Args, Debug, PartialEq, Eq, Hash, Clone, Serialize, Deserialize)]
3435
pub struct ClientArgs {
3536
/// Config file path
3637
#[arg(short, long)]

bin/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ fn main() {
109109

110110
let mut args = env::args();
111111
if args.len() == 0 {
112-
error!("no command provided");
112+
error!("no program provided");
113113
return;
114114
}
115115
let program = args.next().unwrap();

0 commit comments

Comments
 (0)